Pendahuluan | Instalasi | Memulai | Dokumentasi | Komunitas | Lisensi | Mengutip lagu obor
Penting
Pembaruan 25 September 2024: torchtune memiliki dukungan untuk model Llama 3.2 11B Vision , Llama 3.2 3B , dan Llama 3.2 1B ! Cobalah dengan mengikuti petunjuk instalasi kami di sini, lalu jalankan konfigurasi teks apa pun di sini atau konfigurasi vision di sini.
torchtune adalah perpustakaan PyTorch untuk membuat, menyempurnakan, dan bereksperimen dengan LLM dengan mudah.
torchtune menyediakan:
Implementasi PyTorch dari LLM populer dari keluarga model Llama, Gemma, Mistral, Phi, dan Qwen
Resep pelatihan yang dapat diretas untuk penyempurnaan penuh, LoRA, QLoRA, DPO, PPO, QAT, penyulingan pengetahuan, dan banyak lagi
Efisiensi memori yang luar biasa, peningkatan kinerja, dan penskalaan dengan API PyTorch terbaru
Konfigurasi YAML untuk mengonfigurasi resep pelatihan, evaluasi, kuantisasi, atau inferensi dengan mudah
Dukungan bawaan untuk banyak format kumpulan data populer dan templat cepat
torchtune saat ini mendukung model berikut.
Model | Ukuran |
---|---|
Llama3.2-Visi | 11B [model, konfigurasi] |
Lama3.2 | 1B, 3B [model, konfigurasi] |
Llama3.1 | 8B, 70B, 405B [model, konfigurasi] |
lama3 | 8B, 70B [model, konfigurasi] |
Lama2 | 7B, 13B, 70B [model, konfigurasi] |
Kode-Llama2 | 7B, 13B, 70B [model, konfigurasi] |
Mistral | 7B [model, konfigurasi] |
permata | 2B, 7B [model, konfigurasi] |
Microsoft Phi3 | Mini [model, konfigurasi] |
Qwen2 | 0,5B, 1,5B, 7B [model, konfigurasi] |
Kami selalu menambahkan model baru, tapi jangan ragu untuk mengajukan masalah jika ada model baru yang ingin Anda lihat di torchtune.
torchtune menyediakan resep penyesuaian berikut untuk pelatihan pada satu atau lebih perangkat.
Metode Penyempurnaan | Perangkat | Resep | Contoh Konfigurasi |
---|---|---|---|
Penyempurnaan Penuh | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B perangkat tunggal Llama 3.1 70B didistribusikan |
Penyempurnaan LoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0,5B perangkat tunggal Gemma 7B didistribusikan |
Penyempurnaan QLoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Perangkat tunggal Phi3 Mini Llama 3.1 405B didistribusikan |
Penyempurnaan DoRA/QDoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Perangkat tunggal Llama3 8B QDoRA Llama3 8B DoRA didistribusikan |
Pelatihan Sadar Kuantisasi | 4-8 | qat_distributed | Llama3 8B QAT |
Optimasi Preferensi Langsung | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B perangkat tunggal Llama2 7B didistribusikan |
Optimalisasi Kebijakan Proksimal | 1 | ppo_full_finetune_single_device | Mistral 7B |
Penyulingan Pengetahuan | 1 | pengetahuan_distilasi_perangkat_tunggal | Qwen2 1,5B -> 0,5B |
Konfigurasi di atas hanyalah contoh untuk membantu Anda memulai. Jika Anda melihat model di atas tidak tercantum di sini, kemungkinan besar kami masih mendukungnya. Jika Anda tidak yakin apakah ada sesuatu yang didukung, silakan buka terbitan di repo.
Di bawah ini adalah contoh kebutuhan memori dan kecepatan pelatihan untuk berbagai model Llama 3.1.
Catatan
Untuk memudahkan perbandingan, semua angka di bawah disediakan untuk ukuran batch 2 (tanpa akumulasi gradien), kumpulan data yang dikemas dengan panjang urutan 2048, dan kompilasi obor diaktifkan.
Jika Anda tertarik untuk menjalankannya pada perangkat keras yang berbeda atau dengan model yang berbeda, lihat dokumentasi kami tentang pengoptimalan memori di sini untuk menemukan pengaturan yang tepat untuk Anda.
Model | Metode Penyempurnaan | Dapat dijalankan Aktif | Memori Puncak per GPU | Token/detik * |
---|---|---|---|---|
Lama 3.1 8B | Penyempurnaan penuh | 1x4090 | 18,9 GiB | 1650 |
Lama 3.1 8B | Penyempurnaan penuh | 1xA6000 | 37,4 GiB | 2579 |
Lama 3.1 8B | LoRA | 1x4090 | 16.2 GiB | 3083 |
Lama 3.1 8B | LoRA | 1xA6000 | 30,3 GiB | 4699 |
Lama 3.1 8B | QLoRA | 1x4090 | 7,4 GiB | 2413 |
Lama 3.1 70B | Penyempurnaan penuh | 8xA100 | 13,9 GiB** | 1568 |
Lama 3.1 70B | LoRA | 8xA100 | 27,6 GiB | 3497 |
Lama 3.1 405B | QLoRA | 8xA100 | 44,8 GB | 653 |
*= Diukur dalam satu periode pelatihan penuh
**= Menggunakan offload CPU dengan pengoptimal yang menyatu
torchtune diuji dengan rilis stabil terbaru PyTorch serta versi pratinjau malam. torchtune memanfaatkan torchvision untuk menyempurnakan LLM multimodal dan torchao untuk teknik kuantisasi terkini; Anda harus menginstalnya juga.
# Instal PyTorch stabil, torchvision, rilis stabil torchaospip instal torch torchvision torchao pip instal torchtune
# Instal PyTorch, torchvision, torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # opsi lengkapnya adalah cpu/cu118/cu121/cu124pip install --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
Anda juga dapat melihat dokumentasi instalasi kami untuk informasi lebih lanjut, termasuk menginstal torchtune dari sumber.
Untuk mengonfirmasi bahwa paket telah diinstal dengan benar, Anda dapat menjalankan perintah berikut:
lagu --membantu
Dan akan melihat output berikut:
penggunaan: tune [-h] {ls,cp,download,run,validate} ... Selamat datang di opsi CLI torchtune! -h, --help tampilkan pesan bantuan ini dan keluar...
Untuk memulai torchtune, lihat Tutorial Finetune Pertama kami. Tutorial Alur Kerja End-to-End kami akan menunjukkan kepada Anda cara mengevaluasi, mengkuantisasi, dan menjalankan inferensi dengan model Llama. Sisa bagian ini akan memberikan gambaran singkat tentang langkah-langkah ini dengan Llama3.1.
Ikuti instruksi pada repositori meta-llama
resmi untuk memastikan Anda memiliki akses ke bobot model Llama resmi. Setelah Anda mengonfirmasi akses, Anda dapat menjalankan perintah berikut untuk mengunduh bobot ke mesin lokal Anda. Ini juga akan mengunduh model tokenizer dan panduan penggunaan yang bertanggung jawab.
Untuk mengunduh Llama3.1, Anda dapat menjalankan:
unduh lagu meta-llama/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ignore-patterns "asli/konsolidasi.00.pth" --hf-token
Tip
Tetapkan variabel lingkungan Anda HF_TOKEN
atau teruskan --hf-token
ke perintah untuk memvalidasi akses Anda. Anda dapat menemukan token Anda di https://huggingface.co/settings/tokens
Anda dapat menyempurnakan Llama3.1 8B dengan LoRA pada satu GPU menggunakan perintah berikut:
jalankan lagu lora_finetune_single_device --config llama3_1/8B_lora_single_device
Untuk pelatihan terdistribusi, tune CLI terintegrasi dengan torchrun. Untuk menjalankan penyempurnaan penuh Llama3.1 8B pada dua GPU:
lagu dijalankan --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
Tip
Pastikan untuk menempatkan perintah torchrun sebelum spesifikasi resep. Argumen CLI apa pun setelah ini akan menggantikan konfigurasi dan tidak memengaruhi pelatihan terdistribusi.
Ada dua cara untuk mengubah konfigurasi:
Penggantian Konfigurasi
Anda dapat langsung menimpa kolom konfigurasi dari baris perintah:
lagu dijalankan lora_finetune_single_device --config llama2/7B_lora_single_device ukuran_batch=8 aktifkan_aktivasi_checkpointing=Benar max_steps_per_epoch=128
Perbarui Salinan Lokal
Anda juga dapat menyalin konfigurasi ke direktori lokal Anda dan mengubah isinya secara langsung:
lagu cp llama3_1/8B_full ./my_custom_config.yaml Disalin ke ./my_custom_config.yaml
Kemudian, Anda dapat menjalankan resep khusus Anda dengan mengarahkan perintah tune run
ke file lokal Anda:
lagu dijalankan full_finetune_distributed --config ./my_custom_config.yaml
Lihat tune --help
untuk semua kemungkinan perintah dan opsi CLI. Untuk informasi selengkapnya tentang penggunaan dan pembaruan konfigurasi, lihat penjelasan mendalam tentang konfigurasi kami.
torchtune mendukung penyempurnaan pada berbagai kumpulan data yang berbeda, termasuk gaya instruksi, gaya obrolan, kumpulan data preferensi, dan banyak lagi. Jika Anda ingin mempelajari lebih lanjut tentang cara menerapkan komponen ini untuk menyempurnakan kumpulan data khusus Anda, silakan lihat tautan yang disediakan bersama dengan dokumen API kami.
torchtune berfokus pada integrasi dengan alat dan perpustakaan populer dari ekosistem. Ini hanyalah beberapa contoh, dan masih banyak lagi yang sedang dikembangkan:
Memeluk Face Hub untuk mengakses bobot model
LM Eval Harness dari EleutherAI untuk mengevaluasi model terlatih
Memeluk Kumpulan Data Wajah untuk akses ke kumpulan data pelatihan dan evaluasi
PyTorch FSDP2 untuk pelatihan terdistribusi
torchao untuk tipe presisi rendah dan teknik kuantisasi pasca pelatihan
Bobot & Bias untuk mencatat metrik dan pos pemeriksaan, serta melacak kemajuan pelatihan
Komet sebagai pilihan lain untuk logging
ExecuTorch untuk inferensi pada perangkat menggunakan model yang disempurnakan
bitsandbytes untuk pengoptimal memori rendah untuk resep satu perangkat kami
PEFT untuk penyempurnaan atau inferensi lanjutan dengan model torchtune di ekosistem Hugging Face
Kami sangat menghargai komunitas kami dan kontribusi yang diberikan oleh pengguna kami yang luar biasa. Kami akan menggunakan bagian ini untuk menyebutkan beberapa kontribusi ini. Jika Anda juga ingin membantu, silakan lihat panduan BERKONTRIBUSI.
@SalmanMohammadi telah menambahkan resep komprehensif menyeluruh untuk Reinforcement Learning from Human Feedback (RLHF) yang disempurnakan dengan PPO ke torchtune
@fyabc untuk menambahkan model Qwen2, tokenizer, dan integrasi resep ke torchtune
@solitude-alive untuk menambahkan model Gemma 2B ke torchtune, termasuk perubahan resep, validasi numerik model, dan kebenaran resep
@yechenzhi untuk menambahkan Direct Preference Optimization (DPO) ke torchtune, termasuk resep dan konfigurasi beserta pemeriksaan kebenarannya
Kode Llama2 di repositori ini terinspirasi oleh kode Llama2 asli.
Kami ingin mengucapkan terima kasih yang sebesar-besarnya kepada EleutherAI, Hugging Face dan Weights & Biases karena telah menjadi kolaborator yang luar biasa dan telah bekerja bersama kami dalam beberapa integrasi ini dalam torchtune.
Kami juga ingin mengucapkan terima kasih kepada beberapa perpustakaan dan alat luar biasa dari ekosistem:
gpt-fast untuk teknik inferensi LLM berkinerja tinggi yang telah kami adopsi secara langsung
resep llama untuk spring-boarding komunitas llama2
bitsandbytes untuk menghadirkan beberapa teknik berbasis memori dan kinerja ke ekosistem PyTorch
@winglian dan axolotl untuk masukan awal dan bertukar pikiran tentang desain dan rangkaian fitur torchtune.
lit-gpt untuk mendorong komunitas penyempurnaan LLM maju.
HF TRL untuk membuat pemodelan penghargaan lebih mudah diakses oleh komunitas PyTorch.
torchtune dirilis di bawah lisensi BSD 3. Namun Anda mungkin memiliki kewajiban hukum lain yang mengatur penggunaan Anda atas konten lain, seperti persyaratan layanan untuk model pihak ketiga.
Jika menurut Anda perpustakaan torchtune berguna, silakan kutip dalam pekerjaan Anda seperti di bawah ini.
@software{torchtune, title = {torchtune: perpustakaan penyempurnaan PyTorch}, penulis = {pengelola dan kontributor torchtune}, url = {https//github.com/pytorch/torchtune}, lisensi = {BSD-3-Clause}, bulan = April, tahun = {2024}}