Repo ini menyimpan reproduksi nanoGPT dari awal. Komit git secara khusus disimpan langkah demi langkah dan bersih sehingga seseorang dapat dengan mudah menelusuri riwayat git komit untuk melihatnya dibangun secara perlahan. Selain itu, ada video ceramah di YouTube di mana Anda dapat melihat saya memperkenalkan setiap komitmen dan menjelaskan bagian-bagiannya.
Kami pada dasarnya memulai dari file kosong dan melanjutkan ke reproduksi model GPT-2 (124M). Jika Anda memiliki lebih banyak kesabaran atau uang, kode tersebut juga dapat mereproduksi model GPT-3. Meskipun model GPT-2 (124M) mungkin dilatih cukup lama (2019, ~5 tahun yang lalu), saat ini, mereproduksi model tersebut hanya membutuhkan waktu ~1 jam dan ~$10. Anda memerlukan kotak GPU cloud jika Anda tidak memiliki cukup, untuk itu saya merekomendasikan Lambda.
Perhatikan bahwa GPT-2 dan GPT-3 dan keduanya model bahasa sederhana, dilatih pada dokumen internet, dan yang mereka lakukan hanyalah "memimpikan" dokumen internet. Jadi repo/video ini tidak mencakup penyempurnaan Obrolan, dan Anda tidak dapat berkomunikasi dengannya seperti Anda dapat berbicara dengan ChatGPT. Proses penyempurnaan (walaupun secara konseptual cukup sederhana - SFT hanya tentang menukar kumpulan data dan melanjutkan pelatihan) dilakukan setelah bagian ini dan akan dibahas nanti. Untuk saat ini, ini adalah hal yang dikatakan model 124M jika Anda menanyakannya dengan "Halo, saya seorang model bahasa," setelah 10B token pelatihan:
Hello, I'm a language model, and my goal is to make English as easy and fun as possible for everyone, and to find out the different grammar rules
Hello, I'm a language model, so the next time I go, I'll just say, I like this stuff.
Hello, I'm a language model, and the question is, what should I do if I want to be a teacher?
Hello, I'm a language model, and I'm an English person. In languages, "speak" is really speaking. Because for most people, there's
Dan setelah 40 miliar token pelatihan:
Hello, I'm a language model, a model of computer science, and it's a way (in mathematics) to program computer programs to do things like write
Hello, I'm a language model, not a human. This means that I believe in my language model, as I have no experience with it yet.
Hello, I'm a language model, but I'm talking about data. You've got to create an array of data: you've got to create that.
Hello, I'm a language model, and all of this is about modeling and learning Python. I'm very good in syntax, however I struggle with Python due
Tertawa terbahak-bahak. Bagaimanapun, setelah videonya keluar, ini juga akan menjadi tempat untuk FAQ, dan tempat untuk perbaikan dan kesalahan, yang saya yakin akan ada beberapa :)
Untuk diskusi dan pertanyaan, silakan gunakan tab Diskusi, dan untuk komunikasi yang lebih cepat, lihat Zero To Hero Discord saya, saluran #nanoGPT :
Mari kita reproduksi ceramah YouTube GPT-2 (124M).
Pembersihan kecil, kami lupa menghapus register_buffer
dari bias setelah kami beralih ke perhatian flash, diperbaiki dengan PR terbaru.
Versi sebelumnya dari PyTorch mungkin mengalami kesulitan mengonversi dari uint16 ke versi panjang. Di dalam load_tokens
, kami menambahkan npt = npt.astype(np.int32)
untuk menggunakan numpy guna mengonversi uint16 ke int32 sebelum mengonversi ke tensor obor dan kemudian mengonversi ke long.
Fungsi torch.autocast
mengambil argumen device_type
, yang saya coba dengan keras kepala hanya meneruskan device
dengan harapan berfungsi dengan baik, tetapi PyTorch sebenarnya hanya menginginkan jenisnya dan membuat kesalahan di beberapa versi PyTorch. Jadi kami ingin misalnya perangkat cuda:3
dilucuti menjadi cuda
. Saat ini, mps
perangkat (Apple Silicon) akan menjadi CPU device_type
, saya tidak 100% yakin ini adalah cara PyTorch yang dimaksudkan.
Yang membingungkan, model.require_backward_grad_sync
sebenarnya digunakan oleh forward dan backward pass. Pindah ke atas garis sehingga juga diterapkan pada umpan ke depan.
Untuk proses tingkat produksi lainnya yang sangat mirip dengan nanoGPT, saya sarankan untuk melihat repo berikut:
MIT