Fine-Tuning LLM Berbasis Konfigurasi dengan Axolotl
Kebanyakan proyek fine-tuning dimulai dengan cara yang sama: seseorang menyalin sebuah skrip pelatihan, mengubah belasan nilai yang ditulis langsung di kode, lalu berharap orang berikutnya bisa mereproduksi proses tersebut. Axolotl mengambil pendekatan berbeda. Ia memperlakukan seluruh proses fine-tuning sebagai satu berkas YAML, sehingga model, format dataset, pengaturan LoRA, dan strategi multi-GPU semuanya berada dalam satu artefak yang bisa diversioning. Tutorial ini membahas Axolotl dari awal sampai akhir: apa yang sebenarnya ia bungkus, cara memasangnya, cara membaca dan menulis konfigurasi bidang demi bidang, serta cara menjalankan fine-tune QLoRA yang realistis untuk model instruct 8B pada satu atau dua GPU.
Apa Itu Axolotl
Axolotl bukan kerangka kerja pelatihan baru. Ia adalah pembungkus (wrapper) yang berpendirian tegas, berdiri di atas ekosistem Hugging Face dan mengorkestrasi komponen-komponen yang biasanya harus Anda sambungkan sendiri:
- Transformers untuk memuat model dan tokenizer.
- PEFT untuk adapter LoRA dan QLoRA.
- TRL untuk trainer supervised fine-tuning (SFT) dan optimasi preferensi.
- bitsandbytes untuk kuantisasi 4-bit dan 8-bit.
- Accelerate, DeepSpeed, dan FSDP untuk pelatihan terdistribusi dan multi-GPU.
Ide intinya adalah Anda mendeskripsikan apa yang Anda inginkan, bukan menulis kode perekat yang melakukannya. Satu berkas YAML mendeklarasikan base model, cara dataset Anda diuraikan, adapter mana yang dipasang, jadwal optimizer, dan backend terdistribusi. Axolotl membaca berkas itu, membangun objek yang sesuai, lalu menjalankan prosesnya. Berkas yang sama itulah yang Anda commit ke git, serahkan ke rekan kerja, atau lampirkan ke eksperimen di Weights & Biases.
Kapan Memilih Axolotl
Axolotl cocok ketika satu atau lebih kondisi berikut terpenuhi:
- Anda punya lebih dari satu GPU. Integrasi Axolotl dengan DeepSpeed ZeRO dan FSDP tergolong matang, dan beralih dari satu GPU ke delapan GPU sebagian besar hanya soal mengubah launcher, bukan menulis ulang kode.
- Anda bekerja dengan banyak keluarga model. Llama, Mistral, Mixtral, Qwen, Gemma, Phi, dan lainnya didukung melalui permukaan konfigurasi yang sama, sehingga Anda tidak perlu mempelajari API baru untuk tiap model.
- Reproduksibilitas penting. Karena proses sepenuhnya dideskripsikan oleh berkas konfigurasi, "jalankan ulang persis seperti yang kita lakukan bulan lalu" menjadi sekadar
git checkoutditambah satu perintah. - Anda menginginkan resep, bukan skrip. Axolotl menyertakan puluhan contoh konfigurasi yang bisa Anda salin dan sesuaikan.
Jika situasi Anda kebalikannya — satu GPU consumer di mana kecepatan pelatihan mentah dan VRAM minimal jadi prioritas — pustaka yang dioptimasi pada level kernel seperti Unsloth mungkin melatih lebih cepat. Kekuatan Axolotl adalah keluasan cakupan, penskalaan terdistribusi, dan reproduksibilitas, bukan memeras token-per-detik terakhir dari satu kartu. Keduanya bukan pesaing, melainkan alat untuk pekerjaan yang berbeda.
Instalasi
Axolotl bergantung pada build PyTorch yang mendukung CUDA, dan sumber masalah paling umum adalah ketidakcocokan antara PyTorch, toolkit CUDA, dan flash-attn. Pasang PyTorch lebih dulu, sesuaikan dengan driver Anda, baru pasang Axolotl.
# 1. Buat lingkungan terisolasi
python -m venv .venv
source .venv/bin/activate
2. Pasang PyTorch yang cocok dengan CUDA (contoh: CUDA 12.1)
pip install torch==2.3.1 --index-url https://download.pytorch.org/whl/cu121
3. Pasang Axolotl beserta extras flash-attention dan deepspeed
pip install "axolotl[flash-attn,deepspeed]"
Jika lingkungan Anda rapuh atau Anda hanya ingin sesuatu yang langsung berfungsi pada percobaan pertama, image Docker resmi sudah menggabungkan kombinasi CUDA, PyTorch, dan kernel teroptimasi yang teruji baik:
docker run --gpus all --rm -it \
-v "$(pwd)":/workspace \
axolotlai/axolotl:main-latest \
bash
Setelah instalasi, pastikan CLI tersedia di PATH Anda:
axolotl --help