Pasangan (x, y) untuk next-token prediction
Model bahasa dilatih menebak token berikutnya. Dari urutan token ids dan panjang konteks block, buat semua pasangan (x, y) dengan y adalah x yang digeser satu ke kanan:
ids = [5, 6, 7, 8], block = 2
X = [[5, 6], [6, 7]]
Y = [[6, 7], [7, 8]]
Kembalikan [X, Y]. Jika len(ids) <= block, hasilnya [[], []].
Satu jendela, banyak contoh
Jendela x = [5, 6, 7] dengan y = [6, 7, 8] sebenarnya berisi tiga soal latihan sekaligus:
| konteks | target |
|---|---|
5 | 6 |
5 6 | 7 |
5 6 7 | 8 |
Berkat causal mask, transformer mengerjakan ketiganya dalam satu forward pass, dan loss dirata-rata di semua posisi. Model juga belajar menebak dengan konteks sependek apa pun, dari 1 sampai block token.
Dalam praktik
Untuk korpus besar, kita tidak membuat semua jendela di memori. Kita memilih posisi awal secara acak untuk setiap batch:
ix = rng.integers(0, len(data) - block, size=B)
x = np.stack([data[i:i+block] for i in ix])
y = np.stack([data[i+1:i+block+1] for i in ix]) Penjelasan
Yang diminta. Semua pasangan (input, target) untuk melatih model bahasa: target adalah input yang digeser satu ke kanan.
Langkah di kode:
for i in range(len(ids) - block). Indeks awal terakhir adalahlen(ids) - block - 1, karena target butuhids[i + block].X.append(ids[i : i + block]): konteks sepanjangblock.Y.append(ids[i + 1 : i + block + 1]): potongan yang sama, mulai satu langkah lebih kanan.
Cara membaca satu pasangan. x = [5, 6], y = [6, 7] berarti: setelah melihat 5, tebak 6; setelah melihat 5 6, tebak 7. Setiap posisi di y adalah jawaban untuk prefiks x sampai posisi itu.
Case [1, 2, 3] dengan block = 3. range(0) kosong, jadi [[], []]. Tidak ada token keempat untuk dijadikan target.
Yang dikembalikan: [X, Y], masing-masing list berisi len(ids) - block list sepanjang block.
Topik
Petunjuk 1
Y adalah X yang digeser satu posisi ke kanan: target untuk posisi t adalah token di posisi t + 1.
Petunjuk 2
Indeks awal i berjalan dari 0 sampai len(ids) − block − 1, supaya ids[i + block] masih ada.
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.