Menyempurnakan LLM sumber terbuka menggunakan Direct Preference Optimization (DPO) dengan Axolotl — beragampengetahuan – Beragampengetahuan
LL.M. memberikan peluang baru yang tak terhitung jumlahnya untuk penerapan kecerdasan buatan. Jika Anda ingin menyempurnakan model Anda sendiri, panduan ini akan menunjukkan cara melakukannya dengan mudah tanpa menulis kode apa pun. Kami akan menjalani proses langkah demi langkah menggunakan alat seperti Axolotl dan DPO.
Contents
Apa itu Magister Hukum?
Model bahasa besar (LLM) adalah model AI canggih yang dilatih pada data teks dalam jumlah besar (puluhan triliun karakter) untuk memprediksi rangkaian kata berikutnya secara berurutan. Hal ini hanya mungkin terjadi dalam 2-3 tahun terakhir dengan kemajuan dalam komputasi GPU, yang memungkinkan model sebesar itu dilatih dalam hitungan minggu.
Anda mungkin pernah berinteraksi dengan LLM sebelumnya melalui produk seperti ChatGPT atau Claude dan merasakan secara langsung kemampuan mereka untuk memahami dan menghasilkan respons seperti manusia.
Mengapa Menyempurnakan LL.M.?
Tidak bisakah kita menggunakan GPT-4o saja untuk semuanya? Meskipun ini adalah model kami yang paling kuat pada saat penulisan ini, ini tidak selalu merupakan pilihan yang paling praktis. Menyempurnakan model yang lebih kecil (berkisar antara 3 hingga 14 miliar parameter) dapat memberikan hasil yang sebanding dengan biaya yang lebih murah. Selain itu, penyesuaian memungkinkan Anda memiliki kekayaan intelektual dan mengurangi ketergantungan pada pihak ketiga.
Memahami dasar-dasar, pembinaan, dan model obrolan
Sebelum menyempurnakan, penting untuk memahami berbagai jenis LL.M. yang tersedia:
- Model dasar: Model ini telah dilatih sebelumnya pada teks tidak terstruktur dalam jumlah besar, seperti buku atau data internet. Meskipun mereka memiliki pemahaman bahasa yang intrinsik, mereka tidak dioptimalkan untuk inferensi dan menghasilkan keluaran yang tidak koheren. Model dasar dikembangkan sebagai titik awal pengembangan model yang lebih terspesialisasi.
- Model panduan: Model panduan dibangun berdasarkan model dasar dan menyempurnakannya menggunakan respons cepat terhadap data terstruktur peer-to-peer. Mereka dirancang untuk mengikuti instruksi spesifik atau menjawab pertanyaan.
- Model obrolan: Juga dibuat berdasarkan model dasar, namun tidak seperti model panduan, model obrolan dilatih berdasarkan data percakapan, sehingga memungkinkan mereka terlibat dalam percakapan bolak-balik.
Apa itu pembelajaran penguatan dan DPO?
Pembelajaran penguatan (RL) adalah teknik di mana model belajar dengan menerima umpan balik atas perilakunya. Sebaiknya digunakan pada model panduan atau obrolan untuk lebih meningkatkan kualitas keluarannya. Biasanya, pembelajaran penguatan tidak dilakukan di atas model dasar karena menggunakan kecepatan pembelajaran yang jauh lebih rendah, sehingga tidak memberikan dampak yang cukup.
DPO adalah salah satu bentuk RL dimana model dilatih menggunakan pasangan jawaban baik dan buruk dari prompt/percakapan yang sama. Dengan disajikannya pasangan-pasangan ini, model belajar untuk memilih contoh yang baik dan menghindari contoh yang buruk.
Kapan menggunakan DPO
DPO sangat berguna ketika Anda ingin menyesuaikan gaya atau perilaku model, misalnya:
- Penyesuaian gaya: Memodifikasi panjang, tingkat detail, atau tingkat kepercayaan terhadap respons yang diungkapkan oleh model.
- Langkah-langkah keamanan: Latih model untuk menolak menjawab perintah yang berpotensi tidak aman atau tidak tepat.
Namun, DPO tidak cocok untuk model pengajaran pengetahuan atau fakta baru. Untuk tujuan ini, teknik supervisi fine-tuning (SFT) atau retrieval-augmented generation (RAG) lebih cocok.
Buat kumpulan data DPO
Di lingkungan produksi, Anda biasanya membuat kumpulan data DPO menggunakan masukan pengguna, misalnya:
- Masukan Pengguna: Terapkan mekanisme jempol ke atas/bawah untuk tanggapan.
- Bandingkan Pilihan: Tunjukkan kepada pengguna dua keluaran berbeda dan minta mereka memilih yang lebih baik.
Jika Anda kekurangan data pengguna, Anda juga dapat memanfaatkan LLM yang lebih besar dan kuat untuk membuat kumpulan data sintetis. Misalnya, Anda dapat menggunakan model yang lebih kecil untuk menghasilkan jawaban yang salah, lalu menggunakan GPT-4o untuk memperbaikinya.
Untuk mempermudah, kami akan menggunakan kumpulan data siap pakai dari HuggingFace: olivermolenschot/alpaca_messages_dpo_test. Jika Anda memeriksa kumpulan data, Anda akan melihat bahwa kumpulan data tersebut berisi petunjuk dengan jawaban yang dipilih dan ditolak – ini adalah contoh yang baik dan buruk. Data dibuat menggunakan kombinasi GPT-3.5-turbo dan GPT-4.
Biasanya, Anda memerlukan setidaknya 500 hingga 1.000 pasang data untuk berlatih secara efektif tanpa overfitting. Kumpulan data DPO terbesar berisi sebanyak 15.000–20.000 pasangan.
Gunakan Axolotl untuk menyempurnakan Instruksi Qwen2.5 3B
Kami akan menggunakan Axolotl untuk menyempurnakan model Qwen2.5 3B Instruct, yang saat ini berada di puncak papan peringkat OpenLLM dalam kategori ukuran. Dengan Axolotl, Anda dapat menyempurnakan model Anda tanpa menulis kode apa pun (hanya file konfigurasi YAML). Berikut adalah config.yml yang akan kita gunakan:
base_model: Qwen/Qwen2.5-3B-Instruct
strict: false
# Axolotl will automatically map the dataset from HuggingFace to the prompt template of Qwen 2.5
chat_template: qwen_25
rl: dpo
datasets:
- path: olivermolenschot/alpaca_messages_dpo_test
type: chat_template.default
field_messages: conversation
field_chosen: chosen
field_rejected: rejected
message_field_role: role
message_field_content: content
# We pick a directory inside /workspace since that's typically where cloud hosts mount the volume
output_dir: /workspace/dpo-output
# Qwen 2.5 supports up to 32,768 tokens with a max generation of 8,192 tokens
sequence_len: 8192
# Sample packing does not currently work with DPO. Pad to sequence length is added to avoid a Torch bug
sample_packing: false
pad_to_sequence_len: true
# Add your WanDB account if you want to get nice reporting on your training performance
wandb_project:
wandb_entity:
wandb_watch:
wandb_name:
wandb_log_model:
# Can make training more efficient by batching multiple rows together
gradient_accumulation_steps: 1
micro_batch_size: 1
# Do one pass on the dataset. Can set to a higher number like 2 or 3 to do multiple
num_epochs: 1
# Optimizers don't make much of a difference when training LLMs. Adam is the standard
optimizer: adamw_torch
# DPO requires a smaller learning rate than regular SFT
lr_scheduler: constant
learning_rate: 0.00005
# Train in bf16 precision since the base model is also bf16
bf16: auto
# Reduces memory requirements
gradient_checkpointing: true
# Makes training faster (only suported on Ampere, Ada, or Hopper GPUs)
flash_attention: true
# Can save multiple times per epoch to get multiple checkpoint candidates to compare
saves_per_epoch: 1
logging_steps: 1
warmup_steps: 0
Siapkan lingkungan cloud
Untuk menjalankan pelatihan, kami akan menggunakan layanan cloud hosting seperti Runpod atau Vultr. Inilah yang Anda butuhkan:
- Gambar Docker: Mengkloning gambar Docker winglian/axolotl-cloud:main yang disediakan oleh tim Axolotl.
- *Persyaratan Perangkat Keras: GPU VRAM 80GB (misalnya node PCIe 1×A100) lebih dari cukup untuk model sebesar ini.
- Penyimpanan: Penyimpanan volume 200GB menampung semua file yang kami butuhkan.
- Versi CUDA: Versi CUDA Anda setidaknya harus 12.1.
*Jenis pelatihan ini dianggap sebagai penyempurnaan LLM yang komprehensif dan oleh karena itu sangat intensif VRAM. Jika Anda ingin menjalankan pelatihan secara lokal tanpa bergantung pada cloud host, Anda dapat mencoba menggunakan QLoRA, yang merupakan bentuk penyempurnaan yang diawasi. Meskipun secara teoritis mungkin untuk menggabungkan DPO dan QLoRA, hal ini jarang dilakukan.
Langkah-langkah untuk memulai pelatihan
- Setel direktori cache HuggingFace:
export HF_HOME=/workspace/hf
Ini memastikan bahwa model asli diunduh ke penyimpanan volume persisten kami.
- Buat file konfigurasi: Simpan file config.yml yang kita buat sebelumnya ke /workspace/config.yml.
- Mulai pelatihan:
python -m axolotl.cli.train /workspace/config.yml
Lihat! Pelatihan Anda harus dimulai. Setelah Axolotl mengunduh model dan data pelatihan, Anda akan melihat keluaran seperti ini:
[2024-12-02 11:22:34,798] [DEBUG] [axolotl.train.train:98] [PID:3813] [RANK:0] loading model
[2024-12-02 11:23:17,925] [INFO] [axolotl.train.train:178] [PID:3813] [RANK:0] Starting trainer...
Karena ini adalah kumpulan data kecil dengan hanya 264 baris, pelatihan hanya membutuhkan waktu beberapa menit untuk diselesaikan. Model yang telah disempurnakan akan disimpan ke /ruang kerja/dpo-output.
Unggah model ke HuggingFace
Anda dapat menggunakan CLI untuk mengunggah model ke HuggingFace:
- Instal CLI HuggingFace Hub:
pip install huggingface_hub[cli]
- Model unggah:
huggingface-cli upload /workspace/dpo-output yourname/yourrepo
Ganti nama Anda/repo Anda dengan nama pengguna HuggingFace dan nama repositori Anda yang sebenarnya.
Evaluasi model Anda yang telah disesuaikan
Untuk evaluasi, disarankan untuk menggunakan alat seperti Text Generative Inference (TGI) untuk menampung model asli dan model yang telah disempurnakan. Kemudian, inferensi dilakukan pada kedua model dengan suhu disetel ke 0 (untuk memastikan keluaran deterministik) dan respons kedua model dibandingkan secara manual.
Pendekatan praktis ini memberikan wawasan yang lebih baik daripada hanya mengandalkan metrik kerugian evaluasi pelatihan, yang mungkin tidak menangkap nuansa produksi bahasa LLM.
sebagai kesimpulan
Menyempurnakan LLM dengan DPO memungkinkan Anda menyesuaikan model agar lebih memenuhi kebutuhan aplikasi Anda sekaligus menjaga biaya tetap terkendali. Dengan mengikuti langkah-langkah yang dijelaskan dalam artikel ini, Anda dapat memanfaatkan kekuatan alat dan kumpulan data sumber terbuka untuk membuat model yang sesuai dengan kebutuhan spesifik Anda. Apakah Anda ingin mengubah cara Anda menjawab atau menerapkan langkah-langkah keamanan, DPO menawarkan cara praktis untuk melengkapi LLM Anda.
Selamat mengutak-atik!
rencana pengembangan website
metode pengembangan website
jelaskan beberapa rencana untuk pengembangan website, proses pengembangan website, kekuatan dan kelemahan bisnis pengembangan website
, jasa pengembangan website, tahap pengembangan website, biaya pengembangan website
#Menyempurnakan #LLM #sumber #terbuka #menggunakan #Direct #Preference #Optimization #DPO #dengan #Axolotl #beragampengetahuan