b belajar.myudak

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:

kontekstarget
56
5 67
5 6 78

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:

  1. for i in range(len(ids) - block). Indeks awal terakhir adalah len(ids) - block - 1, karena target butuh ids[i + block].
  2. X.append(ids[i : i + block]): konteks sepanjang block.
  3. 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
datasetlanguage modelslicing
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.

Python 3.14 · NumPy

Pengaturan editor

Ukuran font
Ukuran huruf di editor.
Ukuran tab
Lebar indentasi. Otomatis: 2 spasi untuk TypeScript, 4 untuk Python.
Key bindings
Ganti ke mode Vim.
Nomor baris relatif
Nomor baris dihitung dari posisi kursor (berguna untuk gerakan Vim).
Word wrap
Baris panjang dilipat agar muat di lebar editor.
IntelliSense
Saran kode otomatis saat mengetik (Ctrl+Spasi tetap bisa dipakai saat mati).

Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.