- Open source yang menggabungkan FSDP (Fully Sharded Data Parallel) dan QLoRA (Quantization + Low-Rank Adaptation)
- Memungkinkan fine-tuning model bahasa berukuran 70B secara efisien hanya dengan komputer desktop biasa dan dua GPU gaming standar
Latar belakang
- Meskipun perbedaan performa antara hardware kelas data center dan GPU gaming yang dipasang di komputer desktop tidak terlalu besar, perbedaan harganya sangat jauh
- GPU gaming memiliki memori yang lebih kecil sehingga sulit digunakan untuk melatih model bahasa skala besar
- Answer.AI ingin memecahkan masalah ini dengan mencari cara melatih model open source terbaik menggunakan GPU gaming yang murah
QLoRA: Melatih model yang lebih besar di satu GPU
- QLoRA adalah gabungan quantization dan LoRA, yang mengurangi bobot model menjadi 4-bit sehingga menurunkan penggunaan memori GPU.
- LoRA menghindari keterbatasan memori dengan tidak melatih seluruh model bahasa besar, melainkan menambahkan matriks adaptor kecil untuk dilatih.
- QLoRA memungkinkan pelatihan model 65B di kartu 48GB, tetapi masih belum cukup untuk melatih model 70B di GPU gaming 24GB.
FSDP: Menskalakan pelatihan ke beberapa GPU
- FSDP (Fully Sharded Data Parallel) mendistribusikan parameter model ke beberapa GPU agar bisa digunakan secara bersamaan.
- FSDP memungkinkan performa DDP (Distributed Data Parallel) diterapkan pada model besar yang tidak muat di satu GPU.
- Sebagai contoh, model non-quantized 70B (70 miliar parameter) menggunakan RAM sebesar 140GB (karena setiap parameter disimpan dalam 16-bit, yaitu 2 byte), sehingga bahkan kartu NVIDIA H100 (sekitar $40.000 per kartu!) pun tidak cukup. Diperlukan 80GB RAM.
- Namun dengan FSDP, empat GPU H100 dapat digabungkan untuk menghasilkan total RAM 320GB. Dan menghemat $150000
Menggabungkan FSDP dan QLoRA
- Answer.AI mengurangi ukuran model dengan QLoRA, lalu mendistribusikannya ke beberapa kartu gaming 24GB dengan FSDP agar pelatihan menjadi efisien.
- Dengan cara ini, model 70B dapat dilatih menggunakan dua GPU gaming biasa.
- Setelah mendiskusikan gagasan menggabungkan FSDP dan QLoRA pada akhir 2023, mereka menyelesaikan berbagai masalah yang diperlukan.
- Dalam proses ini, berbagai teknik dan library digabungkan untuk digunakan
- Menyimpan parameter yang telah di-quantize dalam tipe data yang sama dengan "Computation Type" model
- Gradient checkpointing, yang alih-alih menyimpan seluruh gradient, menyimpan aktivasi di beberapa 'checkpoint' di seluruh model lalu menjalankan ulang langkah komputasi forward sesuai kebutuhan untuk menghitung kembali gradient
- CPU offloading, yang menyimpan bobot di RAM CPU saat tidak digunakan alih-alih di GPU, sehingga sangat mengurangi kebutuhan memori GPU
- Flash Attention 2: menghitung attention secara efisien menggunakan kernel Cuda yang dioptimalkan untuk memori
- Menemukan HQQ (Half-Quadratic Quantization) dan mengintegrasikannya dengan FSDP (50 kali lebih cepat dan akurat dibanding GPTQ)
Cara menggunakan FSDP/QLoRA
- Untuk menggunakan FSDP, diperlukan dua GPU atau lebih. (Di Runpod tersedia box dual 3090 seharga $0.6 per jam)
- Pasang versi terbaru Transformers, PEFT, Bitsandbytes (dan HQQ jika digunakan), lalu clone repositori Answer.AI dan jalankan sesuai README.
- Untuk melatih Alpaca pada 2 kartu 24GB:
python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb
- Masih berada pada tahap awal (alpha/preview)
- Hasil benchmarking juga direncanakan akan dipublikasikan dalam beberapa minggu ke depan
Opini GN⁺
- Artikel ini akan sangat menarik bagi orang-orang yang bekerja di bidang AI dan machine learning. Terutama karena artikel ini menawarkan cara baru yang patut diperhatikan untuk melatih model bahasa besar secara efisien.
- Jika teknologi ini berhasil digunakan secara luas, hambatan biaya dalam riset dan pengembangan AI dapat turun drastis. Ini juga bisa menjadi peluang besar bagi lab kecil maupun pengembang individu.
- Namun, agar pendekatan ini benar-benar diadopsi secara luas, stabilitas dan kemudahan penggunaan akan menjadi faktor penting. Karena saat ini masih berada pada tahap awal, sistem ini perlu ditingkatkan melalui pengujian dan umpan balik dari komunitas.
- Saat mengadopsi teknologi baru, kompatibilitas dengan sistem yang ada, performa, dan biaya selalu perlu dipertimbangkan. Keuntungan dari memilih teknologi ini adalah meningkatnya aksesibilitas untuk melatih model besar, tetapi karena masih tahap awal, mungkin masih ada kekurangan dari sisi stabilitas dan dukungan.
1 komentar
Komentar Hacker News
Tulisan ini bagus, tetapi sayang sekali ada banyak kesempatan untuk memakai kata 'nibble' dan semuanya terlewat.
Sebagai pengguna, saya akan tertarik jika ada tabel yang menunjukkan berapa lama waktu yang dibutuhkan untuk melakukan fine-tuning model 70b pada sistem yang menggunakan bobot 4-bit, misalnya ukuran model, ukuran pelatihan, biaya pelatihan, dan penurunan kualitas yang diperkirakan dari teknik ini.
Saya penasaran apakah pengodean (-1,0,1) bisa diterapkan. Jika model itu keluar, saya ingin tahu apakah answer.ai bisa memakai teknik yang sama untuk melakukan fine-tuning model besar dengan dua GPU kecil, serta meminta analisis biaya/manfaat.
Riset seperti ini sangat berguna untuk memungkinkan pengguna individu bersaing di pasar LLM. Ini adalah pekerjaan yang hebat dan sejalan dengan isi buku 'Zero to One'.
Artikel ini tidak menyebutkan bahwa semua pemenang teratas di NeurIPS Efficiency Challenge menggunakan QLoRA, dan itu adalah contoh yang baik untuk menunjukkan pentingnya serta kegunaan QLoRA.
Ini adalah pendekatan paling menarik dan konstruktif yang pernah saya lihat pada LLM 'open source'. Saya berharap kalangan akademik juga menjadikannya standar.
Saya berharap pelatihan cepat di Metal hadir lebih awal. Untuk saat ini, Mac Studio jauh lebih murah dan cukup cepat untuk inferensi model besar, tetapi solusi pelatihannya hampir tidak ada.
Kualitas dan kejelasan tulisan teknisnya luar biasa.
Saya penasaran apakah bobot LLM (70B) bisa dilatih ulang dengan data saya sendiri.
Bagi orang-orang yang melakukan fine-tuning LLM dengan anggaran perangkat keras terbatas, ini adalah terobosan besar.
Saya penasaran mengapa memilih DeepSpeed alih-alih FSDP.
Saya ingin tahu apakah ada alat yang digunakan untuk tuning performa ketika sudah memungkinkan melakukan fine-tuning pada model.
Saya penasaran apakah pernah mencoba sparsifikasi, karena rasanya itu bisa memungkinkan fine-tuning dengan RAM yang lebih sedikit.