190 lines
14 KiB
Markdown
190 lines
14 KiB
Markdown
# ABAP Danışman Modeli — Yol Haritası
|
||
|
||
Durum: v22 · 2026-10-05
|
||
Şu anki konum: **Adım 1.3**
|
||
|
||
## Adım 0 — Çerçeve ve kararlar
|
||
|
||
| Karar | Durum |
|
||
|---|---|
|
||
| Modelin rolü: teknik ABAP danışmanı, modül bilgisi yok | ✓ |
|
||
| Sözleşme: metin olarak ABAP görevi + genel ABAP MCP arayüzü | ✓ (2026-10-02) |
|
||
| Girdi: `plan-agent.md` formatı en iyi sonuç veren girdi, zorunlu değil; Kral'ın akışında plan kullanımı değişmez | ✓ (2026-10-02) |
|
||
| Tool arayüzü: EPOD isimleri yerine genel ABAP MCP; EPOD native destekleyecek, harness proxy ilk adapter; delete/teardown harness'te | ✓ (2026-10-02) |
|
||
| Eğitimde az miktarda tool isim/şema varyasyonu | ✓ (2026-10-02) |
|
||
| Ortam: A4H (yazma + doğrulama) | ✓ |
|
||
| Mevcut planlar: sadece şablon, eğitim verisi değil | ✓ |
|
||
| Eski playbook formatı kullanılmaz | ✓ (2026-10-02) |
|
||
| Eğitim verisinde Claude çıktısı yok; eval görevleri eğitim verisine girmez | ✓ (2026-10-02) |
|
||
| Lisans: Apache 2.0 | ✓ |
|
||
| Baz model: sadece Apache 2.0 veya MIT lisanslı adaylar | ✓ (seçim Adım 2'de) |
|
||
| **Baz model: Qwen 3.8 27B** (Apache 2.0, MLX 4-bit). Aynı gün önce elendi (onarım yok, döngüler, thinking limitinde boş yanıt), Devstral Small 2 denendi (baseline 11 görevde ortalama 6,8). Kral kararıyla Qwen'e dönüldü: zayıflıklar eğitimin hedefi. Devstral kullanılmayacak. Aşama 1 eğitim testi Qwen ile | ✓ (2026-10-04) |
|
||
|
||
Bitti. ✓
|
||
|
||
## Adım 1 — Eval seti ve harness
|
||
|
||
Amaç: modeli ölçebilmek. Ölçüm olmadan eğitim kör olur.
|
||
|
||
| Alt adım | İş | Durum |
|
||
|---|---|---|
|
||
| 1.1 | Tasarım dokümanı (`faz1-tasarim.md`) | ✓ v3 |
|
||
| 1.2 | Teknik doğrulamalar: MCP tool'ları, A4H release, teardown (ADT deletion API), abaplint + seed tipleri, paralellik (8 oturum) | ✓ |
|
||
| 1.3 | Harness iskeleti: setup → run → puan → teardown, T01 ile uçtan uca | **✓** — Mac mini'de; test include ve teardown çözüldü. Baştan koşular: oracle 100, null 0, Qwen (koşu 203) çalışıyor |
|
||
| 1.3b | Genel ABAP MCP arayüz spec'i (`abap-mcp-arayuz.md`) ve harness proxy'sinin bu arayüze çevrilmesi | Sonra |
|
||
| 1.4 | T01–T15: seed, gizli testler, hatalı referans | |
|
||
| 1.5 | 110 görevlik set (kategori K dahil: eksik/serbest girdi + farklı tool şeması): üretim + senin incelemen | |
|
||
| 1.6 | Ölçüm: aday baz modeller + Claude referansı | |
|
||
|
||
Bitti sayılır: 110 görev, kategori bazında sonuç tablosu.
|
||
|
||
## Hacim tahmini (kaba, 2026-10-02)
|
||
|
||
İlk ölçümlerle kalibre edilecek (koşu süresi, kabul oranı).
|
||
|
||
| Aşama | Görev | Koşu | Obje (oluşturulup silinen) | Süre |
|
||
|---|---|---|---|---|
|
||
| Eval seti (Adım 1) | 110 | 110 / model / mod | ~5–8 / koşu → ~700 / ölçüm | Yerel 27B: 35–50 saat / ölçüm |
|
||
| Ölçüm turu (Adım 1.6) | 110 | ~3–4 model × 2 mod + Claude ≈ 900 | ~6 000 | Yerel modeller birkaç hafta; uzak modeller birkaç gün |
|
||
| Eğitim verisi (Adım 3) | 1 500–2 000 üretilmiş görev | 4 deneme / görev ≈ 6 000–8 000 | ~40 000–50 000 | Yerel 27B ile ~5 000 saat → **yerelde mümkün değil** |
|
||
| Hedef çıktı (Adım 3) | | %40 kabul → **~3 000 yörünge** | | |
|
||
| RL (Adım 5, opsiyonel) | aynı havuz | on binlerce | yüz binler | Ayrı planlama |
|
||
|
||
**Teacher maliyeti (DeepSeek V4.1 Flash, Ollama cloud):** T01'de ölçülen ≈ 0,09 $ / koşu (liste fiyatı). T01 kolay bir görev; ortalama görev için 0,15–0,20 $ varsayımı:
|
||
|
||
| İş | Koşu | Maliyet (liste fiyatı) |
|
||
|---|---|---|
|
||
| Eval ölçümü, DeepSeek (110 × 2 mod) | 220 | ~35–45 $ |
|
||
| Adım 3 (2 000 görev × 2 deneme; T01'deki başarıyla kabul oranı yüksek beklenir) | ~4 000 | ~600–800 $ |
|
||
| **Toplam (RL hariç)** | | **~650–850 $** |
|
||
|
||
Ollama paneli, koşu 204'ün 8 isteği tek tek: 6 × <0,01 $, 1 × 0,01 $, 1 × 0,03 $ → **≈ 0,05–0,08 $ / koşu**. Liste fiyatı tahminine (0,09 $) yakın; Ollama kullanımı liste fiyatına yakın sayıyor. (Ayın toplamındaki düşük ortalama, başka küçük isteklerden geliyor.)
|
||
|
||
| İş | Koşu / görev | Tahmin |
|
||
|---|---|---|
|
||
| Pilot (B–E): ~20 görev üretimi + doğrulama + koşular | ~100 istek grubu | ~5–10 $ |
|
||
| Eval seti üretimi + ölçüm (110 görev, 2 mod) | ~330 | ~25–40 $ |
|
||
| Eğitim görevi üretimi (2 000 görev) | 2 000 | ~100 $ |
|
||
| Yörünge üretimi (2 000 × 2 deneme) | ~4 000 | ~400–600 $ |
|
||
| **Toplam (RL hariç)** | | **~550–750 $** |
|
||
|
||
Bütçe: şu an ~50 $, her ay +60 $. B–F ve eval ölçümü bu bütçeye sığar. Yörünge üretimi aylık 60 $ ile 7–10 ay sürer; o aşamada ~500–700 $ ek kredi önerilir. Kesin rakam pilottan sonra.
|
||
|
||
**Karar (2026-10-02): DeepSeek V4.1 Flash (Ollama cloud) teacher ve görev yazarı olarak hemen kullanılıyor.**
|
||
|
||
Sonuçlar:
|
||
- Aynı anda A4H'da en fazla ~50 obje olur (6 worker × ~8). Toplam sayı büyük ama birikmez; teardown her koşu sonunda.
|
||
- **Adım 3 yerel modelle yapılamaz.** Teacher model hızlı ve uzakta olmalı (kiralık GPU veya açık lisanslı modelin API'si). O zaman darboğaz A4H olur: 6 worker, koşu başına ~5 dk → saatte ~70 koşu → 8 000 koşu ≈ 5 gün.
|
||
- **Önek şeması yetmez:** `Z<run 3 hane><task 3 hane>_` en fazla 999 koşu. Adım 3 öncesi koşu kimliği base36 4 karaktere çıkarılmalı (~1,7 milyon koşu).
|
||
- Uzun vadede A4H'da izlenecekler: disk (HANA log, versiyon geçmişi, silme logları).
|
||
|
||
## Hızlandırılmış sıra (2026-10-02)
|
||
|
||
Adım 3 görev ister; görevler el ile yazılırsa darboğaz olur. Bu yüzden ilk iş **görev üreteci**: hem eval setini (1.5) hem eğitim görevlerini (3.1) aynı hat üretir.
|
||
|
||
| Sıra | İş | Durum |
|
||
|---|---|---|
|
||
| A | Önek şeması: koşu 4 karakter base36, görev 3 karakter base36 (`Z005P001_`) | ✓ |
|
||
| B | Harness: FUGR/FUNC, PROG, DDLS desteği (G2 kontrat kontrolü, abaplint dışa aktarımı, silme sırası) | ✓ T13–T15 oracle 100 / null 0. Server eşzamanlılık sorunu bulundu (harness'te retry) |
|
||
| C | Görev üreteci: DeepSeek görev yazar (spec, seed, gizli testler, referans + local testler); kategori ve obje tipi dağılımına göre | ✓ `harness/generator.py`: üretim → yapı + statik kontrol + yerel abaplint → oracle/null doğrulama → en fazla 3 onarım turu. Pilot sonrası iyileştirildi (faz1-tasarim 11e) |
|
||
| D | Otomatik görev doğrulama: oracle = 100, null = 0, gizli testler bozuk referansta düşmeli | ✓ oracle/null + mutasyon kontrolü (`harness/mutation.py`, generator'a bağlı). 26/26 görev geçti (faz1-tasarim 11g) |
|
||
| E | Pilot: ~20 görev, tüm obje tipleri; kabul oranı ve gerçek maliyet ölçümü | ✓ 16/20 kabul, 0,16 $ / kabul edilen görev (faz1-tasarim 11e). Zor parti (5 görev): 5/5 kabul, 0,097 $ / kabul edilen görev (11f) |
|
||
| F | Eval seti: 110 görev; Kral incelemesi. Eğitim havuzu: otomatik doğrulanmış görevler, eval ile çakışmasız | |
|
||
| G | Ölçüm (1.6) ve yörünge üretimi (3.2) paralel worker'larla (bulut model: en fazla 6) | |
|
||
|
||
## Bütçe takvimi (Ollama cloud, güncelleme 2026-10-03)
|
||
|
||
Dönem kullanım hakkı 60 $ (usage). Kral Ollama'ya ayda **20 $ ödüyor, karşılığında 60 $ DeepSeek usage** alıyor: gerçek para maliyeti = usage / 3. 2026-10-03 20:15: usage 24,63 $ (Ollama sayfası), kalan ~35 $ (12 Ekim'e kadar). Ledger (liste fiyatı) 66,97 $: **usage ≈ ledger / 2,7** (önceki 1,47 oranı yanlıştı). 12 Ekim'de +60 $ usage, sonra her ay +60 $. Birim maliyet (usage): DeepSeek koşusu ≈ 0,09 $ (60 çağrı bütçeli, ortalama); görev üretimi ≈ 0,05 $ / kabul edilen görev.
|
||
|
||
Adım 3 tahmini (usage): pilot (300 görev + 600 yörünge) ≈ 70 $; tam ölçek (2 000 görev ≈ 100 $, 4 000 yörünge ≈ 360 $) ≈ 460 $, yani ~8 aylık hak ya da ~400 $ ek usage (≈ 135 $ para). Kesin rakam pilot sonrası. Belirsizlik: oran iki noktadan ölçüldü; kabul oranı ve deneme sayısı pilotta belli olur.
|
||
|
||
| Dönem | Bütçe | İş | Tahmini harcama |
|
||
|---|---|---|---|
|
||
| **2–12 Ekim** | ~50 $ | C: görev üreteci. D: otomatik doğrulama. E: pilot (20 görev, üretim + DeepSeek koşusu) | ~5 $ |
|
||
| | | F: eval seti — ~150 aday görev üret (~20 $), süz, 110 kalsın; her aday 1–2 DeepSeek koşusu (ampirik süzgeç, ~10–20 $) | ~30–40 $ |
|
||
| | | Yerel ölçüm (Qwen ve aday baz modeller, ücretsiz, geceleri) | 0 $ |
|
||
| | | Yedek | ~15 $ |
|
||
| **12 Ekim – 12 Kasım** | 60 $ | Adım 2: baz model seçimi (yerel ölçüm sonuçlarıyla). Adım 3 pilotu: ~300 eğitim görevi + ~600 yörünge denemesi | ~70 $ (usage) |
|
||
| | | Pilot sonucu: gerçek kabul oranı ve maliyet → Adım 3'ün tamamı için ek kredi kararı (tahmin ~400 $ usage ≈ 135 $ para) | |
|
||
| **12 Kasım sonrası** | 60 $/ay + ek kredi | Adım 3'ün tamamı, ardından Adım 4 (SFT) | |
|
||
|
||
Kurallar:
|
||
- Harness her bulut isteğinin token kullanımını `runs/ledger.jsonl`'e yazar (liste fiyatı, cache indirimi olmadan = üst sınır). Dönem harcaması `BUDGET_LIMIT_USD`'ye (şu an 135 $, ledger cinsinden ≈ 50 $ gerçek; oran 2,7, 2026-10-03) ulaşınca yeni üretim veya bulut koşusu başlamaz. ✓
|
||
- Eval görevleri ve eğitim görevleri ayrı havuzlar; eval görevleri eğitim verisine girmez.
|
||
- Bulut ve yerel model aynı Ollama sunucusunda kuyrukta bekleyebilir; ölçümler sırasında ikisi aynı anda koşturulmaz.
|
||
|
||
## Adım 2 — Baz model seçimi
|
||
|
||
Durum (2026-10-04, güncel): baz model Qwen 3.8 27B (Kral kararı). Referans baseline Qwen (MacBook, aynı ayarlar, 11 görev): ortalama 15,8; 3 görev 0'dan yüksek (T01 48,3, G0157 51,0, G0185 75,0); ayrıntı `docs/stage1-baseline.md`. Devstral yalnız karşılaştırma: Devstral denendi ve elendi (11 görev, `runs/archive/devstral/`): ortalama 6,8 (Qwen 15,8); 1/11 görev 0'dan yüksek (Qwen 3/11); loop 6 (Qwen 7), tool_budget 3, report 2; onarım oranı 0,84. Devstral ağırlıkları silindi; baz model testi yok. Eski kısmi Qwen sonuçları `runs/archive/qwen38/` (karşılaştırılamaz).
|
||
|
||
Adım 1.6 tablosundan seçilir. Aday havuzu: sadece Apache 2.0 veya MIT lisanslı modeller. Kriterler: puan, boyut, Mac mini'de çalışabilirlik.
|
||
|
||
Bitti sayılır: tek baz model seçildi, gerekçesi yazıldı.
|
||
|
||
## Aşama 1 GPU sonucu ve karar (2026-10-05)
|
||
|
||
- QLoRA (nf4) aşama 1 koşusu ~418. adımda durduruldu. Valid loss, Mac (MLX 4-bit) / GPU (nf4): adım 200 0,758 (-%10,7) / -%26,0; adım 400 0,735 (-%13,4) / -%35,0; baz Mac 0,849.
|
||
- PEFT→MLX dönüştürücü overfit testiyle kanıtlandı (Mac -%98,5). nf4 adaptörü MLX 4-bit baza iyi taşınmıyor.
|
||
- **Karar:** şimdilik GPU koşusu yok. Aşama 1 tek başına eğitilmez; aşama 1 korpusu, aşama 2 yörüngeleri hazır olunca tek bir bf16 LoRA koşusunda karıştırılır. Sonraki GPU koşusu bf16 baz kullanır; öncesinde bf16 bellek testi gerekir. Araç isimleri EPOD ABAP MCP'deki gibi kalır (generic_v0 kullanılmaz). ADT "save failed" yanıtı sunucuda düzeltilemez: proxy sözdizimi kontrolü ekler.
|
||
- HF test ve checkpoint repoları silindi; aşama 1 veri seti kaldı.
|
||
|
||
## Adım 3 — Eğitim verisi üretimi
|
||
|
||
Durum (2026-10-05): 3.1 eğitim modu hazır (`harness/trainset.py`, havuz `tasks_gen/train`, eval ile çakışma kontrolü `harness/overlap.py`, 30 hata-odaklı görev dahil), üretim 12:00'de başladı (hedef 200 kabul, ~10 $ usage). 3.2 için proxy (yerel abaplint ile "save failed" ayrıntısı), yörünge kaydı (`harness/record.py`), Qwen çevirici (`train/to_qwen.py`) ve kabul süzgeci (`train/accept.py`) hazır; yörünge koşuları (`harness/trajectories.py`, 6 worker) üretim bitince.
|
||
|
||
<!-- stage2-summaries -->
|
||
|
||
### Stage 2 summary at 50 accepted trajectories (2026-10-05 18:02)
|
||
|
||
- Tasks: 139 accepted of 166 generated (K variants 18); trajectory runs 59, accepted trajectories 50 (acceptance 85%).
|
||
- Budget: used 10.2 usage (ledger 27.5) since 2026-10-05; left to the guard about 15 usage (ledger 18.5 to guard 113; reserve 8 ledger kept; corrected 2026-10-05, the running controller read the old limit 142); allowance until 11 October 24.8 usage.
|
||
- Repair share (accepted trajectories with an error followed by a fix): 32/50 = 64%.
|
||
- By category, accepted/runs: A 7/7 (repair 4); B 5/8 (repair 5); C 7/8 (repair 6); D 6/6 (repair 3); E 9/10 (repair 6); F 6/6 (repair 2); G 6/6 (repair 5); H 3/5 (repair 0); I 1/3 (repair 1).
|
||
- By object type, accepted/runs: CLAS 38/42 (repair 21); DDLS 6/11 (repair 6); FUNC 6/6 (repair 5).
|
||
- Tokens of accepted samples (20 tool schemas kept): p50 20147, p90 39458, p95 47694, max 71791, n 50.
|
||
- Syntax hints (proxy syntaxCheck added): 1 in 1 runs.
|
||
- Harness events: 2 ({'text:[LOCK]': 1, 'teardown': 1}); trajectory workers now 1.
|
||
|
||
|
||
| Alt adım | İş |
|
||
|---|---|
|
||
| 3.1 | Görev üreteci: eval görevleriyle aynı şemada binlerce sentetik görev. Eval görevleriyle çakışma yok. Girdilerin bir kısmı serbest metin; yörüngelerin az bir kısmı farklı tool isim/şemalarıyla. |
|
||
| 3.2 | Yörünge üretimi: açık lisanslı teacher model görevleri A4H'da çözer. |
|
||
| 3.3 | Filtre: sadece puan eşiğini geçen yörüngeler kalır. Deduplikasyon. |
|
||
| 3.4 | Opsiyonel: izinli lisanslı açık ABAP kodu (continued pretraining için). |
|
||
|
||
Eğitim verisinde mutlaka olmalı (pilot bulguları, 2026-10-02): modellerin sık yaptığı hatalar için görev ve onarım yörüngeleri.
|
||
- Metot parametresinde `TYPE c LENGTH n` geçersiz; adlandırılmış tip (`TYPES`) gerekir.
|
||
- Ayrılmış kelime alan adı (HOURS, MODE).
|
||
- 30 karakterden uzun isimler (özellikle test metotları).
|
||
|
||
Bitti sayılır: filtrelenmiş yörünge seti hazır, kategori dağılımı dengeli.
|
||
|
||
## Adım 4 — SFT (LoRA)
|
||
|
||
| Alt adım | İş |
|
||
|---|---|
|
||
| 4.1 | Küçük deneme: Mac mini, MLX |
|
||
| 4.2 | Gerçek koşu: kiralık GPU |
|
||
| 4.3 | Eval: Adım 1 setiyle, baz modelle karşılaştırma |
|
||
|
||
Bitti sayılır: eğitilmiş model baz modeli anlamlı farkla geçiyor.
|
||
|
||
## Adım 5 — RL (opsiyonel)
|
||
|
||
SFT hedefe ulaşmazsa. Ödül: harness puanı (syntax, aktivasyon, testler, abaplint, ATC).
|
||
|
||
Bitti sayılır: hedef çizgi (Claude referansına ≤ 10 puan fark).
|
||
|
||
## Adım 6 — Gerçek iş akışında deneme
|
||
|
||
`/sapplan` planı → model build-agent rolünde → gerçek bir görev. Eval'in yakalamadığı sorunlar burada çıkar.
|
||
|
||
Bitti sayılır: senin seçtiğin gerçek görevlerde kabul edilebilir sonuç.
|
||
|
||
## Adım 7 — Yayın
|
||
|
||
Ağırlıklar, model kartı, lisans, eval sonuçları, genel ABAP MCP arayüz spec'i. Opsiyonel: harness ve eval seti açık kaynak.
|
||
|
||
Bitti sayılır: yayınlandı.
|