eval_chat_quality() Terhubung ke Runner yang Salah
Kegagalan 10 Hari yang Seharusnya Berhenti pada Hari ke-3
ANDREA-120M v1 dilatih selama 16.1 hari pada RTX 4090 dengan daya 130W kontinu. Output sampel disimpan setiap 200 langkah tetapi tidak pernah dianalisis selama pelatihan. Pada langkah 80K (hari ke-4), sampel membaca region region region region region. Pada langkah 110K, ''''' ''''' '' ''' ''. Pelatihan berlanjut selama 11 hari lagi sebelum dihentikan secara manual pada langkah 165K.
Apa yang Salah dengan Alarm Kebakaran
eval_chat_quality() sudah ada di codebase. It scored sample quality. Bahkan berfungsi dengan benar. Tapi hanya terhubung ke legacy multi-phase runner. v1 firehose curriculum menggunakan code path berbeda & tidak pernah memanggil eval tersebut. Asap alarm duduk di ruangan lain dengan pintu tertutup.
Biaya
16.1 hari komputasi. 130W kontinu. ~50 kWh listrik. Model tidak menghasilkan output yang bisa digunakan sama sekali. Loss EMA mencapai titik terendah 3.23 pada step 110K, lalu naik kembali ke 4.54 pada step 165K saat training dihentikan. Secara numerik masuk akal; secara semantik kosong.
Peluang acak untuk vocabulary 8449-token adalah 9.04. v1 mencapai EMA loss 3.23 sambil memproduksi region region region. Loss saja tidak bisa mendeteksi kehancuran koherensi. Model yang meminimalkan cross-entropy dengan mengulang satu token berfrekuensi tinggi mendapat reward numerik untuk mode kegagalan tersebut.
Mengapa Kurva Loss Berbohong
Skor Setiap Sampel pada Empat Sumbu
Skor Komposit
v2 menyertakan gerbang koherensi yang memberikan skor pada setiap sampel (diambil setiap 100 langkah selama pelatihan firehose) pada empat metrik:
| Metrik | Rentang | Apa yang dideteksi |
|---|---|---|
| Keragaman bigram | 0-35 | Pengulangan pada tingkat dua token (region region) |
| Keragaman trigram | 0-35 | Pengulangan pada tingkat tiga token (a, b, a, b, a, b) |
| Kehadiran kata bahasa Inggris | 0-20 | Penyimpangan ke non-bahasa Inggris (CJK, Sirilik, gibberish) |
| Keragaman karakter | 0-10 | Kolaps karakter tunggal (''''', ... ... ...) |
Total possible: 100. Threshold: 30.
Mengapa Empat Metrik, Bukan Satu
Setiap metrik menangkap mode kegagalan yang berbeda:
- Model yang runtuh ke satu bigram besar gagal pada Keragaman Bigram tetapi lulus pada Keragaman Karakter.
- Model yang menghasilkan noise tanda baca (''''' ''''' '') gagal pada Keragaman Karakter tetapi mungkin lulus pada Keragaman Bigram jika pasangan tanda baca bervariasi.
- Model yang melayang ke bahasa non-Inggris (kontaminasi pelatihan terjemahan) gagal pada keberadaan kata Inggris tetapi lulus Bigram & Trigram diversity jika menghasilkan Mandarin yang gramatikal.
- Model yang menghasilkan a, b, a, b, a, b lulus Bigram (a-b & b-a muncul) tetapi gagal Trigram (a-b-a, b-a-b mendominasi).
Bersama-sama, keempat metrik menjangkau ruang kegagalan. Skor komposit di bawah 30 berarti setidaknya satu sumbu runtuh cukup parah untuk menyeret seluruh sampel ke bawah.
Consecutive Counter
Auto-halt aktif setelah 5 sampel berturut-turut skor di bawah 30. Sampel buruk tunggal bisa terjadi selama transisi fase atau penarikan sumber langka; lima berturut-turut berarti model telah berhenti pulih. Dengan sampel diambil setiap 100 langkah, 5 sampel degenerate berturut-turut = 500 langkah kolaps koherensi yang dikonfirmasi.
Hitung sebuah Skor
Bagaimana Tampilan v1
Pemicu Back-Tested
Dengan sampel tersimpan v1, menerapkan gerbang koherensi v2 secara retrospektif menunjukkan gerbang akan terpicu pada langkah 132K. v1 berjalan hingga langkah 165K sebelum terminasi manual. Gerbang akan menghentikan pelatihan 33.000 langkah lebih awal.
Komputasi yang Dihemat
RTX 4090 dilatih pada ~6 langkah/menit dalam FP16 cuBLAS. 33.000 langkah / 6 langkah/menit = 5.500 menit = 91,6 jam = 3,8 hari komputasi yang dihemat. Pada 130W kontinu, itu ~12 kWh listrik, ditambah 3,8 hari keausan GPU.
Mengapa Langkah 132K & Bukan Langkah 80K
v1 menghasilkan region region region pada langkah 80K. Mengapa gerbang tidak aktif saat itu?
Karena sampel baik yang sporadis muncul di antara yang buruk. Bandit berputar melalui sumber setiap 7-42 langkah. Bahkan model yang merosot sesekali menghasilkan output yang lebih beragam saat sampling dari sumber berbeda, sementara mereset penghitung berturut-turut. Pada langkah 132K, model telah merosot cukup dalam sehingga 5 sampel merosot berturut-turut (500 langkah) menjadi tak terelakkan.
Pelajaran: Hubungkan Alarm Asap ke Setiap Jalur
v2 menghubungkan eval_chat_quality() langsung ke jalur kode penanganan sampel kurikulum firehose, bukan hanya ke runner lama. Setiap sampel, setiap run, setiap jalur kode: gerbang yang sama. Perbaikan tersebut memakan ~30 baris kode.