Ejen AI · Pelajaran

LoRA dan QLoRA untuk Penalaan Cekap Kos

Latih penyesuai pangkat rendah sahaja pada asas terkuantum — penalaan halus 70B boleh dilakukan pada satu GPU.

Pelajaran 3 daripada 415 langkah

LoRA dan QLoRA untuk Penalaan Cekap Kos ialah pelajaran Ejen AI percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Ejen AI, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.

Sebahagian daripada pelajaran ini belum diterjemahkan dan dipaparkan dalam bahasa Inggeris.

Mengapa PEFT?

Penalaan halus penuh Llama 70B memerlukan 8+ H100 dan mengemas kini 70 bilion parameter. PEFT (Penalaan Halus Cekap Parameter) mengemas kini < 1% parameter dengan kualiti yang serupa. Penjimatan kosnya sangat besar.

LoRA: Penyesuaian Pangkat Rendah

LoRA (Hu et al. 2021) melatih matriks “penyesuai” kecil bersama pemberat asas yang dibekukan:

  • Tambah matriks A x B apabila A ialah dxr dan B ialah rxd, dengan r kecil (8, 16, 64)
  • Laluan hadapan: y = Wx + (BA)x
  • Hanya latih A dan B — parameter yang jauh lebih sedikit

QLoRA: LoRA Terkuantum

QLoRA (Dettmers et al. 2023) mengurangkan kos dengan lebih lanjut dengan mengkuantumkan model asas kepada 4-bit semasa latihan:

  • Model asas dalam NF4 (4-bit)
  • Penyesuai LoRA dalam ketepatan yang lebih tinggi
  • Penalaan halus 70B boleh dijalankan pada satu A100/H100

Setup with peft + transformers

# pip install peft transformers bitsandbytes
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained(
    'meta-llama/Llama-3.1-8B-Instruct',
    load_in_4bit=True,        # QLoRA
    device_map='auto'
)

lora_config = LoraConfig(
    r=16,                     # rank
    lora_alpha=32,
    target_modules=['q_proj', 'v_proj'],
    lora_dropout=0.05,
    bias='none'
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()
# trainable params: ~0.5% of total

Training Loop with TRL

from trl import SFTTrainer

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    tokenizer=tokenizer,
    args=TrainingArguments(
        per_device_train_batch_size=4,
        gradient_accumulation_steps=4,
        learning_rate=2e-4,
        num_train_epochs=3,
        output_dir='./lora-out'
    )
)
trainer.train()
model.save_pretrained('./adapter')

Menggunakan Unsloth

Unsloth ialah pustaka LoRA terpantas — 2x lebih pantas daripada peft biasa. Antara muka terus guna:

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name='meta-llama/Llama-3.1-8B-Instruct',
    load_in_4bit=True
)
model = FastLanguageModel.get_peft_model(
    model,
    r=16,
    target_modules=['q_proj', 'k_proj', 'v_proj', 'o_proj', 'gate_proj', 'up_proj', 'down_proj']
)

Anggaran Kos

QLoRA pada Llama 3.1 8B dengan 10k contoh:

  • ~4 jam pada satu H100
  • ~$5-10 dalam kos GPU awan
  • Fail penyesuai: 100-300 MB

Memilih Pangkat r

  • r = 8 — minimum, untuk perubahan format/gaya
  • r = 16-32 — kebanyakan kes
  • r = 64+ — tingkah laku baharu yang ketara, kapasiti lebih besar

Modul Sasaran

Secara lalai, gunakan unjuran perhatian (q, v). Untuk kapasiti yang lebih besar, sertakan semua lapisan linear — kualiti lebih baik, lebih banyak parameter.

Hiperparameter Penting

  • Kadar pembelajaran — 1e-4 hingga 5e-4 adalah lazim
  • Epok — 2-5 untuk SFT
  • Saiz kelompok — bergantung pada VRAM; gunakan pengumpulan kecerunan untuk mensimulasikan saiz yang lebih besar

Menggabungkan Penyesuai ke dalam Asas

Untuk inferens, Anda boleh menggabungkan LoRA semula ke dalam pemberat asas:

merged = model.merge_and_unload()
merged.save_pretrained('./full-model')

Menyediakan Berbilang LoRAs

vLLM menyokong pertukaran LoRAs serta-merta pada masa inferens. Ini berguna untuk penalaan halus bagi setiap pelanggan pada asas yang dikongsi:

llm = LLM(model='base', enable_lora=True, max_lora_rank=64)
response = llm.generate(prompt, lora_request=LoRARequest('customer-a', 1, './customer-a-adapter'))

Menilai Penyesuai

Sentiasa jalankan set penilaian YOUR pada model yang ditala. Kadangkala penalaan menghasilkan keputusan yang lebih buruk pada kes pinggiran — nyatakan kemerosotan dengan jujur.

Kelebihan LoRA

Apakah kelebihan praktikal utama LoRA berbanding penalaan halus penuh?

Rumusan

LoRA + QLoRA = penalaan halus yang cekap kos. Gunakan Unsloth untuk kelajuan, dan peft/TRL untuk liputan yang luas. Pangkat 16-32 sesuai untuk kebanyakan kes. Lakukan penilaian berbanding set emas Anda.

Percuma untuk bermula

Pelajari Ejen AI dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
60
Pelajaran
239

Soalan Lazim

Adakah pelajaran “LoRA dan QLoRA untuk Penalaan Cekap Kos” percuma?

Ya — teks penuh “LoRA dan QLoRA untuk Penalaan Cekap Kos” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Ejen AI, tingkat taraf kepada CoddyKit PRO. Kursus Ejen AI merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “LoRA dan QLoRA untuk Penalaan Cekap Kos”?

Latih penyesuai pangkat rendah sahaja pada asas terkuantum — penalaan halus 70B boleh dilakukan pada satu GPU. Anda berlatih Ejen AI menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Ejen AI?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Ejen AI di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “LoRA dan QLoRA untuk Penalaan Cekap Kos” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Ejen AI ini?

Ya. Setiap pelajaran Ejen AI menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Apabila Penalaan Halus Mengatasi Pemberian Prompt
  2. Pengumpulan Data: Trajektori dan Ulang Main Jejak
  3. LoRA dan QLoRA untuk Penalaan Cekap Kos
  4. Menilai Model Terlaras berbanding Model Asas
← Kembali ke Ejen AI