Rumah >Peranti teknologi >AI >Pelajar sarjana menggunakan 60 baris kod untuk mengajar anda cara membuat model GPT yang besar dengan tangan Pengenalan teknikal adalah setanding dengan tutorial.
Pada masa ini, model bahasa besar (LLM) dianggap sebagai hala tuju kejayaan dalam kecerdasan buatan. Orang ramai cuba menggunakannya untuk melakukan semua jenis perkara yang kompleks, seperti soal jawab, penciptaan, penaakulan matematik dan kod penulisan. Letupan ChatGPT baru-baru ini adalah contoh terbaik.
Walau bagaimanapun, bagi pengamal pembelajaran mesin, ambang untuk model besar adalah sangat tinggi: kerana ia terlalu besar dan sukar untuk dilatih, arah ini telah dimonopoli oleh syarikat besar untuk masa yang lama. . Walau bagaimanapun, baru-baru ini, terdapat lebih banyak cara untuk memudahkan model GPT. Pada pertengahan Januari, bekas Pengarah Kanan Tesla AI Andrej Karpathy (kini kembali ke OpenAI) mengeluarkan Tutorial lengkap untuk membina model GPT dari awal . Walau bagaimanapun, berbanding dengan GPT terlatih dan GPT-3 OpenAI, perbezaan saiz antara keduanya ialah 10,000-1 juta kali.
Baru-baru ini, Jay Mody, pelajar sarjana muda kejuruteraan perisian di McMaster University di Kanada, melaksanakan model GPT dari awal dengan hanya 60 baris kod selepas mengimport perpustakaan NumPy. Ia dinamakan PicoGPT. Bukan itu sahaja, dia juga memuatkan pemberat model GPT-2 terlatih ke dalam pelaksanaannya dan menghasilkan beberapa teks. 60 baris kod ditunjukkan di bawah.
Tetapi untuk melakukan ini, anda perlu biasa dengan Python dan NumPy, dan beberapa Pengalaman asas dalam melatih rangkaian saraf. Penulis menyatakan bahawa blog ini bertujuan untuk memberikan pengenalan GPT yang ringkas, mudah difahami dan lengkap. Oleh itu, penulis hanya menggunakan pemberat model yang telah dilatih untuk melaksanakan kod laluan hadapan.
Alamat kod:
https://github.com/jaymody/picoGPT/blob/29e78cc52b58ed2c1c483ffea2eb46ff6bdec785/gpt2_pico.py#L3-L58
Penyelidikan, Andrej Karpathy memberikan empat perkataan: lewat tetapi tiba. Pada masa itu, minGPT dan nanoGPT yang dibina oleh Karpathy memerlukan 300 baris kod.
Perlu dinyatakan bahawa tutorial ini bukanlah ambang sifar sepenuhnya. Untuk membolehkan pembaca memahami, pengarang mula-mula memperkenalkan apa itu GPT, input, output dan kandungan lain, semuanya dengan terperinci.
Mengenai apa yang boleh dilakukan oleh GPT, penulis memberikan beberapa contoh , meringkaskan buku, memberi anda idea kapsyen instagram, menerangkan lubang hitam kepada kanak-kanak berumur 5 tahun, menulis kod dalam SQL, dsb.
Dengan membaca bahagian ini dengan teliti, anda boleh memahami secara kasar beberapa pengetahuan asas GPT. Dengan pengenalan latar belakang ini, langkah seterusnya ialah cara untuk menyediakannya.
Tetapan
Bab ini terutamanya memperkenalkan cara menyediakan pengekod , hiperparameter dan parameter.
Apa yang anda perlu lakukan, pertama sekali ialah mengklon pangkalan kod:
Kemudian pasang kebergantungan:
Perhatikan bahawa jika anda menggunakan Macbook M1, anda perlu menukar aliran tensor kepada tensorflow-macos dalam requirements.txt sebelum menjalankan pemasangan pip. Di bawah projek ini, fail termasuk encoder.py, utils.py, gpt2.py, gpt2_pico.py:
Kemudian salin kod berikut ke dalam gpt2.py:
Kod di atas mengandungi 4 bahagian utama: Fungsi gpt2 digunakan untuk melaksanakan GPT kali ini Kod sebenar;
fungsi menjana melaksanakan algoritma penyahkodan autoregresif; 🎜>
fire.Fire (utama) Tukar fail kepada aplikasi CLI supaya anda akhirnya boleh menjalankan kod: python gpt2.py "some prompt here".Selepas persediaan selesai, pengarang mula memperkenalkan beberapa butiran pengekod, hiperparameter dan parameter. Mengambil pengekod sebagai contoh, pengekod dalam artikel ini adalah sama dengan tokenizer BPE yang digunakan oleh GPT-2. Berikut ialah beberapa contoh teks yang dikodkan dan dinyahkod oleh pengekod ini:
Panjang token sebenar Ini kelihatan seperti:
Perhatikan bahawa kadangkala token ialah perkataan (cth. Tidak), kadangkala ia adalah perkataan tetapi didahului oleh ruang (cth. Ġall, Ġ mewakili ruang), kadangkala ia adalah sebahagian daripada perkataan (cth. capes dibahagikan kepada Ġcap dan es), kadangkala ia adalah tanda baca (cth. .). Satu faedah BPE ialah ia boleh mengekod rentetan sewenang-wenangnya dan jika ia menemui sesuatu yang tiada dalam perbendaharaan kata ia akan memecahkannya kepada subrentetan yang difahaminya :
Tiada butiran lanjut. Seterusnya, kami akan memperkenalkan rangkaian saraf asas Bahagian ini lebih asas, terutamanya termasuk GELU, fungsi Softmax, Normalisasi Lapisan dan Linear.
Terdapat contoh kod dalam setiap bahagian kecil, contohnya, dalam bahagian Linear, penulis menunjukkan pendaraban matriks piawai + bias :
Kod untuk unjuran lapisan linear dari satu ruang vektor ke ruang vektor yang lain adalah seperti berikut:
Seni bina GPT
Bahagian ini memperkenalkan struktur GPT itu sendiri.
Seni bina pengubah adalah seperti berikut:
Transformer hanya menggunakan timbunan penyahkod (bahagian kanan rajah):
Perlu diingatkan bahawa disebabkan untuk menyingkirkan pengekod, lapisan perhatian silang tengah juga dipadamkan.
Pada tahap tinggi, seni bina GPT mempunyai tiga bahagian berikut:
Kodnya kelihatan seperti ini:
Tangkapan skrin bahagian kod
Seterusnya, setiap tiga bahagian di atas akan diuraikan dengan lebih terperinci, dan saya tidak akan menerangkan butiran di sini .
Di atas ialah pelaksanaan GPT oleh pengarang Langkah seterusnya ialah menggabungkannya bersama-sama dan menjalankan kod untuk mendapatkan gpt2.py. Keseluruhan kandungannya hanya 120 baris kod (60 baris jika anda mengalih keluar ulasan dan ruang kosong).
Pengarang menguji keputusan oleh:
Hasil keluaran adalah seperti berikut:
Seperti yang penulis katakan: eksperimen ini adalah berjaya.
Artikel ini hanya memperkenalkan secara ringkas keseluruhan proses mengikut idea penulis. Rakan-rakan yang ingin mengetahui lebih lanjut boleh merujuk pada pautan asal.
Pautan asal: https://jaykmody.com/blog/gpt-from-scratch/#basic-layers
Atas ialah kandungan terperinci Pelajar sarjana menggunakan 60 baris kod untuk mengajar anda cara membuat model GPT yang besar dengan tangan Pengenalan teknikal adalah setanding dengan tutorial.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!