Panduan Model Bahasa untuk Hacker [Video]
(youtube.com)- Jeremy Howard membahas model bahasa dengan pendekatan kode terlebih dahulu alih-alih teori, menelusuri alur penggunaan praktis dari OpenAI API hingga model open-source lokal
- Model bahasa memprediksi token, bukan kata, dan menjadi lebih cocok untuk tanya jawab serta menjalankan tugas setelah melalui prapelatihan, instruction tuning, dan RLHF
- GPT-4 adalah pilihan yang kuat per September 2023, tetapi lemah tentang dirinya sendiri, URL, dan informasi setelah knowledge cutoff; custom instructions sangat memengaruhi kualitas jawaban
- OpenAI API tidak menyimpan status percakapan, jadi setiap kali harus mengirim seluruh riwayat percakapan; tool seperti eksekusi Python dapat ditambahkan melalui function calling
- Eksekusi lokal dimungkinkan dengan Hugging Face Transformers, Llama 2, kuantisasi GPTQ, RAG, fine-tuning Axolotl, MLC,
llama.cpp, dan lainnya, tetapi disertai batasan GPU, format prompt, dan evaluasi
Model bahasa adalah sistem kompresi yang memprediksi token
- Model bahasa bekerja dengan memprediksi kata berikutnya dalam kalimat atau mengisi kata yang hilang
- Sebagai contoh, kalimat yang memuat “panda breeding facility” dan “live frogs” dimasukkan ke
text-davinci-003milik OpenAI, lalu model menghasilkan kalimat lanjutan - Di
nat.dev, berbagai model bahasa dapat dicoba, dan probabilitas kandidat token berikutnya dapat dilihat
- Sebagai contoh, kalimat yang memuat “panda breeding facility” dan “live frogs” dimasukkan ke
- Unit prediksi sebenarnya bukan kata, melainkan token
- Token bisa berupa kata utuh, bagian kata, tanda baca, angka, dan sebagainya
- Dengan
tiktoken, string dapat di-encode menjadi array ID token menggunakan tokenizer yang sama seperti model seri GPT, lalu di-decode kembali - Dalam contoh, “they are splashing” dipecah menjadi unit bagian kata yang mencakup spasi
- Prapelatihan adalah proses melatih neural network untuk menebak kata berikutnya dari dokumen internet atau kalimat Wikipedia
- Sebagai contoh pelatihan, dari kalimat Wikipedia tentang “The Birds”, model menebak Hitchcock setelah Alfred
- Agar dapat memprediksi kata berikutnya dengan baik, model harus mempelajari pengetahuan dunia secara internal, seperti benda, waktu, film, sutradara, dan nama orang
- Howard memandang prediksi kata berikutnya sebagai salah satu bentuk kompresi
- Banyak informasi harus dikompresi ke dalam parameter neural network agar model dapat memprediksi kata berikutnya dengan baik
- Hubungan antara kompresi dan kecerdasan adalah gagasan yang sudah lama dibahas
Alur dari prapelatihan ke instruction tuning dan RLHF
- Howard membahas ULMFiT sebagai ide dasar cara memanfaatkan model bahasa
- ULMFiT adalah algoritme yang dibuat Howard pada 2017, lalu dirangkum dalam makalah bersama Sebastian Ruder pada awal 2018
- Contoh awalnya adalah cara melakukan prapelatihan model bahasa dengan Wikipedia
- Alur pelatihan dibagi menjadi tiga tahap
- Prapelatihan model bahasa: mempelajari pengetahuan umum lewat prediksi kata berikutnya
- Fine-tuning model bahasa: kembali mempelajari prediksi kata berikutnya dengan dokumen yang lebih dekat ke tugas akhir
- Fine-tuning classifier: menyesuaikan model untuk tugas akhir
- Pada model bahasa modern, tahap kedua terutama digunakan dalam bentuk instruction tuning
- Model disesuaikan dengan data pertanyaan, instruksi, permintaan, dan responsnya
OpenOrcadanFLAN collectiondisebut sebagai contoh dataset- OpenOrca berisi sekitar 4GB data pertanyaan, konteks, dan respons
- Pada tahap ketiga, RLHF sering digunakan
- Manusia atau model yang lebih baik memilih jawaban yang lebih bagus dari beberapa jawaban
- Contohnya adalah membandingkan dua jawaban atas pertanyaan seperti “5 ide untuk menemukan kembali semangat terhadap karier”
- Istilah “model bahasa” dapat merujuk pada model yang hanya diprapelatih, model yang sudah di-instruction tuning, atau model yang juga telah melalui RLHF, bergantung pada konteks
- Model prapelatihan murni umumnya kurang berguna jika berdiri sendiri, dan kegunaannya meningkat melalui fine-tuning
- Howard mengatakan saat ini juga ada diskusi apakah instruction tuning saja sudah cukup
Cara memakai GPT-4 dengan baik dan batasannya
- Howard sangat merekomendasikan GPT-4 sebagai model bahasa terbaik per September 2023
- Di ChatGPT, GPT-4 dapat digunakan cukup banyak dengan biaya bulanan 20 dolar
- OpenAI API memiliki struktur penagihan terpisah berdasarkan token
- Terkait klaim bahwa GPT-4 tidak bisa bernalar, Howard melihat bahwa jika sebagian contoh dari makalah atau internet dimasukkan langsung, model sering menjawab dengan benar
- Contohnya mencakup soal waktu hidup-mati Mabel, soal Sally dan saudara kandung, serta soal posisi cangkir, bidal, dan berlian
- Howard mengatakan bahwa ketika ia memeriksa contoh di internet yang disebut gagal dikerjakan GPT-4, hampir sering kali model sebenarnya bisa menjawabnya
- Model bukanlah sistem yang dilatih untuk selalu memberikan jawaban benar
- Prapelatihan adalah proses menebak kata berikutnya yang paling masuk akal, sementara internet berisi fiksi, lelucon, dan pernyataan salah
- Dalam RLHF, jawaban yang lebih percaya diri mungkin lebih disukai, dan evaluator mungkin tidak cukup mampu membedakan jawaban yang salah
- custom instructions membantu meningkatkan kualitas jawaban
- Instruksi seperti “bernalar dengan baik”, “katakan jika mungkin tidak ada jawaban benar”, dan “jelaskan konteks latar belakang dalam beberapa kalimat terlebih dahulu” dapat ditambahkan di depan semua kueri
- Model menghasilkan satu kata demi satu kata, dan memasukkan kembali konten yang telah dihasilkan ke input, sehingga semakin banyak kata yang dihasilkan, semakin banyak komputasi yang dapat dilakukan
- Aturan pribadi seperti menjawab secara ringkas jika dimulai dengan
VVjuga digunakan sebagai contoh
- GPT-4 juga memiliki batasan yang jelas
- Model tidak punya kesempatan mengetahui pada tahap pelatihan tentang bagaimana dirinya dilatih atau berapa panjang konteksnya
- Model tidak benar-benar mengetahui isi URL, dan dapat mengarang jika ditanya
- Pengetahuan prapelatihan GPT-4 hanya sampai September 2021
- Jika puzzle klasik yang familier sedikit diubah, model bisa tertarik pada pola lama dan menjawab salah
- Contoh yang digunakan adalah puzzle menyeberangkan kubis, kambing, dan serigala dengan batasan yang diubah
- Setelah memberikan jawaban salah, mencoba memperbaikinya lewat percakapan bisa membuat model terus salah, sehingga lebih baik mengoreksi prompt sebelumnya dengan fitur edit di chat
Menambahkan tool dengan OpenAI API dan function calling
- OpenAI API memungkinkan model bahasa dipanggil secara terprogram dari Python dan lainnya
- Setelah
pip install openai, contoh yang digunakan memanggil model sepertigpt-3.5-turbodenganChatCompletion.create - Pesan
systemberperan mirip custom instructions di ChatGPT - Dalam contoh, system prompt “Aussie LLM yang memakai Aussie slang dan perumpamaan” dimasukkan, lalu pertanyaan “What is money?” diajukan
- Setelah
- Dalam percakapan API, tidak ada status persisten yang disimpan di server
- Saat mengajukan pertanyaan lanjutan, seluruh riwayat percakapan harus dikirim lagi
- Meski pengguna memasukkan jawaban assistant sebelumnya yang diubah sesuka hati, model akan melanjutkan jawaban berdasarkan riwayat percakapan itu
- Dalam contoh, dibuat seolah-olah assistant mengatakan “money is like kangaroos”, lalu model diminta melanjutkan penjelasan perumpamaan tersebut
- Biaya bergantung pada model dan jumlah token
- Rata-rata token sedikit lebih banyak daripada kata; sekitar 1⅓ token setara dengan 1 kata
- Dalam contoh, disebut perbedaan harga sekitar
0.0015dolar untuk GPT-3.5 dan0.03dolar untuk GPT-4 - Respons sekitar 150 token dihitung sekitar
0.0003dolar di GPT-3.5 - Pemakaian dapat diperiksa di halaman usage OpenAI
- Akun API awal mungkin memiliki rate limit rendah
- Sebagai contoh, pengguna gratis dalam 48 jam pertama atau pengguna berbayar dapat terkena batas rendah seperti 3 request per menit
- Jika terjadi error rate limit, diperlukan kode Python yang membaca nilai
retry-after, menunggu, lalu mencoba lagi
- Dengan function calling, kita dapat memberi tahu model tool apa saja yang tersedia untuk digunakan
- Yang diberikan bukan fungsi Python itu sendiri, melainkan nama fungsi, deskripsi, dan parameter dalam JSON schema
- Docstring sebagai deskripsi fungsi menjadi informasi inti bagi model untuk menentukan kegunaan tool
- Dalam contoh fungsi
sums, model tidak menjawab 6+3 secara langsung, melainkan mengembalikan nama function call dan argumennya - Jika fungsi
pythondisediakan sebagai tool, model membuat kode untuk menghitung 12 factorial, pengguna memeriksanya, lalu menjalankannya dan memasukkan kembali hasilnya ke percakapan - Dengan cara ini, code interpreter sederhana dapat dibuat sendiri di dalam Jupyter
Model lokal, RAG, dan opsi fine-tuning
- Untuk memakai model bahasa secara lokal, umumnya diperlukan GPU
- Kaggle dapat menyediakan notebook dengan 2 GPU lama
- Colab dapat menyediakan GPU yang lebih baik dan RAM lebih banyak, dan opsi bertambah dengan langganan bulanan
- Opsi sewa GPU seperti RunPod, Lambda Labs, dan Vast.ai disebutkan
- Pekerjaan sensitif tidak cocok dijalankan di “komputer orang yang tidak dikenal”
- Dalam memilih GPU, kecepatan dan kapasitas memori lebih penting daripada performa komputasi
- GTX 3090 bekas disebut berada di kisaran sekitar 700 dolar di eBay
- RTX 4090 adalah GPU yang lebih baru, tetapi untuk model bahasa tidak jelas lebih baik daripada 3090
- 24GB mungkin tidak cukup untuk banyak pekerjaan, sehingga dua 3090 disebut sebagai opsi sekitar 1.500 dolar
- A6000 dengan RAM 48GB berada di kisaran sekitar 5.000 dolar
- Mac dengan RAM besar, terutama M2 Ultra, tidak buruk untuk menjalankan model lama, tetapi lebih lambat daripada kartu Nvidia
- Ekosistem Hugging Face digunakan sebagai tool utama untuk eksperimen model lokal
- Dengan
Transformers, model prapelatihan dan fine-tuning yang diunggah ke Hugging Face dapat dimuat - Leaderboard berguna sebagai referensi, tetapi bisa tidak selaras dengan kegunaan nyata, dan dapat memiliki masalah leakage ketika data benchmark tercampur ke training set
- Dalam lingkungan GPU pribadi umum, model 13B atau 7B lebih realistis daripada 70B
- Dengan
- Rangkaian Llama 2 dan kuantisasi digunakan sebagai contoh utama
Llama 2 7Bdari Meta adalah model yang hanya diprapelatih; tanpa instruction tuning atau RLHF, model ini tidak langsung cocok untuk tanya jawab- Jika model 7B dimuat dalam 16-bit, bobotnya saja membutuhkan sekitar 14GB
- Casting ke 8-bit dapat mengurangi memori, tetapi bisa lambat
bfloat16lebih cepat tetapi membutuhkan RAM lebih banyak- Model kuantisasi
GPTQdioptimalkan dengan presisi lebih rendah sehingga perpindahan memori berkurang; dalam contoh, model 13B GPTQ pun berjalan lebih cepat daripada 7B TheBlokedisebut sebagai orang yang mengoptimalkan model-model populer ke GPTQ dan mengunggahnya ke Hugging Face
- Model instruction tuning harus memakai format prompt yang benar
- Model instruction tuning berbasis Llama 2 seperti
Stable Belugaharus memakai format prompt persis seperti yang ada di halaman model OpenOrca Platypus 13B GPTQjuga diperiksa format prompt terpisahnya, lalu disusun sebagai fungsi- Dengan format yang benar, pertanyaan seperti “Who is Jeremy Howard?” dapat memperoleh jawaban yang lebih baik, tetapi halusinasi masih bisa tetap ada
- Model instruction tuning berbasis Llama 2 seperti
- RAG adalah cara untuk memanfaatkan informasi terbaru atau dokumen privat
- Dokumen yang membantu menjawab pertanyaan dicari, lalu dokumen itu ditempelkan sebagai konteks agar model menjawab
- Setelah halaman Wikipedia Jeremy Howard sepanjang 613 kata dimasukkan sebagai konteks, model menghasilkan jawaban yang lebih dekat ke biografi 100 kata yang akurat
sentence-transformersmengubah dokumen dan pertanyaan menjadi vektor embedding, lalu menghitung kemiripan untuk memilih dokumen terkait- Jika dokumen berjumlah ribuan hingga jutaan, vector database digunakan untuk menyimpan embedding terlebih dahulu
H2O GPTadalah contoh open-source untuk mengunggah PDF secara lokal dan menjalankan RAG- Pada pertanyaan lanjutan, jika model pencarian tidak mengetahui konteks sebelumnya, ia bisa menemukan dokumen yang melenceng, sehingga perlu berhati-hati
- Fine-tuning adalah cara mengubah perilaku model itu sendiri
- Dataset contoh berisi skema database, pertanyaan bahasa alami, dan SQL jawaban yang benar
- Dataset dimuat dengan library Hugging Face
datasets - Dengan
Axolotl, contoh Llama 2 disalin dan konfigurasi YAML untuk SQL dibuat untuk pelatihan - Setelah sekitar 1 jam pelatihan dengan perintah
accelerate launch axolotl, direktoriq_lora_outdibuat Qberarti quantize, sedangkanLoRAadalah teknik yang membantu pelatihan pada model dan GPU yang lebih kecil- Setelah pelatihan, jika skema dan pertanyaan dimasukkan, model menghasilkan SQL yang benar dalam bentuk seperti
SELECT count(hosts), theme ... GROUP BY theme
- Ada juga opsi runtime lain, termasuk Mac
MLCadalah proyek yang dapat menjalankan model bahasa di iPhone, Android, browser web, dan lainnya- Contoh yang ditunjukkan menjalankan model 7B terkuantisasi di Mac, menjawab “What is the meaning of life?”, dan menghasilkan sekitar 9,6 tokens/s
llama.cppmenggunakan formatggufdan juga dapat dipanggil melalui wrapper Python- Jika terbiasa dengan GPU Nvidia dan Python, ekosistem PyTorch dan Hugging Face lebih baik digunakan
- Lingkungan pengembangan model bahasa berubah cepat dan masih tahap awal, sehingga instalasi dan edge case cukup rumit, tetapi ini adalah masa yang menarik bagi programmer Python
- Di channel
generativepada Discord fast.ai, pengguna dapat bertanya atau berbagi pengalaman
- Di channel
1 komentar
Komentar Hacker News
Baru saja mengunggahnya, jadi terkejut ternyata sudah masuk HN
Saya cukup menantikan video ini. Saya mencoba memasukkan sebanyak mungkin informasi inti yang terpikirkan ke dalam presentasi 90 menit ini, dan tujuannya adalah membuat satu tempat yang bisa ditunjuk ketika developer bertanya, “beri tahu saya semua yang perlu diketahui tentang LLM”
Meski begitu, pasti masih ada hal yang terlewat atau bagian yang kurang jelas. Ini percobaan pertama, dan suatu saat saya berencana mengembangkannya menjadi kursus lengkap, jadi setelah menonton videonya, saya akan senang jika kalian memberi tahu pertanyaan yang masih tersisa atau konsep yang menurut kalian seharusnya dibahas
Saya harus segera tidur, dan karena di Australia sudah larut malam, mungkin saya tidak bisa banyak menjawab pertanyaan sampai pagi. Tapi setelah bangun saya pasti akan melihat halaman ini, dan besok saya juga akan menambahkan tautan makalah terkait di deskripsi YouTube
Saya tidak membahas isu etika atau kebijakan. Bukan karena itu tidak penting, melainkan karena dalam presentasi ini saya memutuskan untuk sepenuhnya fokus pada isu teknis
Luar biasa. Notebook untuk diikuti bersama video ada di sini: https://github.com/fastai/lm-hackers/blob/main/lm-hackers.ip...
Susunan proyeknya juga bagus. Isinya mencakup hacking OpenAI API, tiruan Code Interpreter yang dibuat dengan OpenAI functions, menjalankan LLM lokal dengan model Hugging Face, hingga contoh fine-tuning untuk membuat model teks-ke-SQL pada 10 menit terakhir
Terima kasih untuk videonya. Ini tutorial pemanfaatan LLM terbaik yang pernah saya lihat sejauh ini
Di https://youtu.be/jkrNMKz9pWU?si=Dvz-Hs4InJXNozhi&t=3278, saat membahas use case yang tepat untuk model lokal dan GPT-4, ia mengatakan “dengan fine-tuning, kita bisa membuat model yang sangat kuat untuk jenis masalah yang perlu kita selesaikan, dan dalam kasus seperti ini performanya sangat mungkin lebih baik daripada GPT-4”
Terkait hal ini, ada ide yang sudah saya pikirkan cukup lama. Bayangkan sebuah chatbot yang di belakangnya memiliki beberapa model “kecil”, misalnya model 7 miliar parameter. Masing-masing model di-fine-tune untuk tugas tertentu; bisakah sistem seperti ini mengungguli GPT-4?
Gambaran kasarnya seperti ini. Konteks/prompt dikirim ke “model router”, lalu model ini menentukan model pakar mana yang paling mampu menjawab atau menyelesaikannya. Setelah itu sistem meneruskan konteks/prompt ke model pakar tersebut dan mengembalikan jawabannya. Jika tidak ada model pakar yang sesuai, gunakan LLM serbaguna hasil instruction tuning yang umum
Jika model kecil yang di-fine-tune untuk tugas tertentu secara teori bisa lebih baik daripada GPT-4, mungkin sekumpulan model kecil seperti itu secara keseluruhan juga bisa melampaui GPT-4
Videonya ada di sini [1] https://sambanova.ai/launch2023
Jika turun sedikit, ada perbandingan dengan model Falcon 180 miliar parameter yang berjalan di GPU HuggingFace. Hasil MoE tidak hanya kualitasnya mirip, tetapi juga sangat cepat dan hampir seketika. Kemampuan untuk mengganti model pakar atau melatih ulang dengan data baru juga merupakan keunggulan besar, yang tentu saja tidak mudah pada model tunggal 180 miliar yang lebih monolitik
Menarik juga bahwa video ini dibuat oleh orang yang menulis makalah yang memulai semua tren ini
Video yang luar biasa, saya juga membagikannya di kantor. Dari sudut pandang praktis, sejauh yang saya tahu ini mungkin materi pengantar paling komprehensif tentang topik ini
Saya terutama menyukai bagian “postingan viral yang mengatakan GPT tidak bisa melakukan X tidak dapat direproduksi”. Semoga ini membantu orang-orang di sekitar saya belajar berpikir kritis saat melihat teknologi ini
Video yang sangat bagus. Saya mempelajari beberapa trik baru yang bisa saya gunakan ke depan
Sekadar mencoba sesuatu saja bisa membuat kita menemukan kegunaan baru
Beberapa waktu lalu ada contoh bagus. Saya perlu mengubah spreadsheet berisi alamat menjadi GeoJSON untuk dipakai sebagai layer peta, tetapi saya sedang sangat malas, jadi saya ingin melihat seberapa baik ChatGPT menanganinya
Sebagai langkah pertama, saya memberinya sepasang lintang/bujur dan memintanya mengubah format derajat/menit menjadi desimal; ia menunjukkan proses perhitungannya tanpa masalah. Lalu saya memberikan seluruh kolom lintang/bujur dan memintanya agar tidak menampilkan proses perhitungan, dan outputnya juga bagus
Setelah itu saya membuat struktur JSON contoh dengan placeholder, lalu mengatakan bahwa saya akan memberikan data dan memintanya mengisi placeholder berdasarkan nama kolom. Saat saya menempelkan datanya, ia menghasilkan JSON dengan sempurna
Yang menarik, tanpa instruksi terpisah ia kembali melakukan konversi lintang/bujur, dan juga menambahkan increment pada properti id yang tidak saya sebutkan. Cukup mengesankan
Jeremy adalah sosok yang saya hormati, dan sebagai orang yang lahir serta tinggal di Queensland, ia mengingatkan saya bahwa talenta kelas dunia benar-benar ada di mana-mana di sekitar kita
Tentu saja ada banyak orang seperti itu di berbagai bidang, tetapi Jeremy adalah salah satu orang yang saya kenal dan sangat saya hormati