Šiame vadove parodome, kokia yra „Mistral 7B“ derinimo eiga, naudodami „Qlora“ su Axolotlparodant, kaip valdyti ribotus GPU išteklius, pritaikant naujų užduočių modelį. Įdiegsime „Axolotl“, sukursime nedidelį pavyzdžių duomenų rinkinį, sukonfigūruosime „Lora“ specifinius hiperparametrus, paleisime tikslinio derinimo procesą ir išbandys gautą modelio našumą.
1 žingsnis: paruoškite aplinką ir įdiekite „Axolotl“
# 1. Check GPU availability
!nvidia-smi
# 2. Install git-lfs (for handling large model files)
!sudo apt-get -y install git-lfs
!git lfs install
# 3. Clone Axolotl and install from source
!git clone https://github.com/OpenAccess-AI-Collective/axolotl.git
%cd axolotl
!pip install -e .
# (Optional) If you need a specific PyTorch version, install it BEFORE Axolotl:
# !pip install torch==2.0.1+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
# Return to /content directory
%cd /content
Pirmiausia patikriname, kuris GPU yra ir kiek yra atminties. Tada mes įdiegiame „Git LFS“, kad dideli modelio failai (pvz., „Mistral 7b“) būtų tinkamai tvarkomi. Po to mes klonuojame „Axolotl“ saugyklą iš „GitHub“ ir įdiegiame jį „Redaguojamu“ režimu, kuris leidžia mums paskambinti jo komandoms iš bet kurios vietos. Pasirenkamas skyrius, jei reikia, leidžia įdiegti konkrečią „Pytorch“ versiją. Galiausiai mes grįžtame į /turinio katalogą, kad tvarkingai organizuotume vėlesnius failus ir kelius.
2 veiksmas: sukurkite mažą pavyzdžių duomenų rinkinį ir „Qlora“ konfigūraciją, skirtą „Mistral 7b“
import os
# Create a small JSONL dataset
os.makedirs("data", exist_ok=True)
with open("data/sample_instructions.jsonl", "w") as f:
f.write('{"instruction": "Explain quantum computing in simple terms.", "input": "", "output": "Quantum computing uses qubits..."}\n')
f.write('{"instruction": "What is the capital of France?", "input": "", "output": "The capital of France is Paris."}\n')
# Write a QLoRA config for Mistral 7B
config_text = """\
base_model: mistralai/mistral-7b-v0.1
tokenizer: mistralai/mistral-7b-v0.1
# We'll use QLoRA to minimize memory usage
train_type: qlora
bits: 4
double_quant: true
quant_type: nf4
lora_r: 8
lora_alpha: 16
lora_dropout: 0.05
target_modules:
- q_proj
- k_proj
- v_proj
data:
datasets:
- path: /content/data/sample_instructions.jsonl
val_set_size: 0
max_seq_length: 512
cutoff_len: 512
training_arguments:
output_dir: /content/mistral-7b-qlora-output
num_train_epochs: 1
per_device_train_batch_size: 1
gradient_accumulation_steps: 4
learning_rate: 0.0002
fp16: true
logging_steps: 10
save_strategy: "epoch"
evaluation_strategy: "no"
wandb:
enabled: false
"""
with open("qlora_mistral_7b.yml", "w") as f:
f.write(config_text)
print("Dataset and QLoRA config created.")
Čia mes sukuriame minimalų JSONL duomenų rinkinį su dviem instrukcijų ir atsakymų poromis, suteikdami mums žaislų pavyzdį, į kurį reikia treniruotis. Tada mes sukonstruoti YAML konfigūraciją, kuri nurodo į „Mistral 7B“ bazės modelį, nustato „Qlora“ parametrus, skirtus efektyviai pritaikyti atmintį, ir apibrėžia mokymo hiperparametrus, tokius kaip partijos dydis, mokymosi greitis ir sekos ilgis. Mes taip pat nurodome LORA nustatymus, tokius kaip „Dispout“ ir „Rangout“, ir galiausiai išsaugojame šią konfigūraciją kaip qlora_mistral_7b.yml.
3 žingsnis: Tinkamumas su „Axolotl“
# This will download Mistral 7B (~13 GB) and start fine-tuning with QLoRA.
# If you encounter OOM (Out Of Memory) errors, reduce max_seq_length or LoRA rank.
!axolotl --config /content/qlora_mistral_7b.yml
Čia „Axolotl“ automatiškai gauna ir atsisiunčia „Mistral 7B“ svorius (didelį failą) ir tada inicijuoja Qlora pagrįstą tikslinės derinimo procedūrą. Modelis yra kiekybiškai įvertintas iki 4 bitų tikslumo, kuris padeda sumažinti GPU atminties naudojimą. Pamatysite treniruočių žurnalus, kurie parodo pažangą, įskaitant treniruočių praradimą, žingsnis po žingsnio.
4 žingsnis: išbandykite tiksliai suderintą modelį
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
# Load the base Mistral 7B model
base_model_path = "mistralai/mistral-7b-v0.1" #First establish access using your user account on HF then run this part
output_dir = "/content/mistral-7b-qlora-output"
print("\nLoading base model and tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(
base_model_path,
trust_remote_code=True
)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_path,
device_map="auto",
torch_dtype=torch.float16,
trust_remote_code=True
)
print("\nLoading QLoRA adapter...")
model = PeftModel.from_pretrained(
base_model,
output_dir,
device_map="auto",
torch_dtype=torch.float16
)
model.eval()
# Example prompt
prompt = "What are the main differences between classical and quantum computing?"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
print("\nGenerating response...")
with torch.no_grad():
outputs = model.generate(**inputs, max_new_tokens=128)
response = tokenizer.decode(outputs(0), skip_special_tokens=True)
print("\n=== Model Output ===")
print(response)
Galiausiai vėl įkeliame „Mistral 7B“ modelį „Mistral 7B“ ir tada pritaikome naujai apmokytus „Lora“ svorius. Greitai raginame apie klasikinio ir kvantinio skaičiavimo skirtumus, konvertuojame jį į žetonus ir sukuriame atsakymą naudodami tiksliai suderintą modelį. Tai patvirtina, kad mūsų „Qlora“ mokymai įsigaliojo ir kad mes galime sėkmingai atlikti atnaujinto modelio išvadas.
Palaikomų modelių su „Axolotl“ nuotrauka
Apibendrinant galima pasakyti, kad aukščiau išvardyti veiksmai parodė, kaip paruošti aplinką, nustatyti nedidelį duomenų rinkinį, sukonfigūruoti LORA specifinius hiperparametrus ir paleiskite „Qlora“ patobulinimo sesiją „Mistral 7B“ su „Axolotl“. Šis metodas parodo parametrų taupų mokymo procesą, tinkantį ribojančiai ištekliams aplinkai. Dabar galite išplėsti duomenų rinkinį, modifikuoti hiperparametrus arba eksperimentuoti su skirtingais atvirojo kodo LLM, kad galėtumėte toliau patobulinti ir optimizuoti savo tobulinamą vamzdyną.
Atsisiųskite „Colab“ nešiojamąjį kompiuterį čia. Visas šio tyrimo kreditas skirtas šio projekto tyrėjams. Be to, nepamirškite sekti mūsų „Twitter“ ir prisijunkite prie mūsų „Telegram“ kanalas ir „LinkedIn GrOUP. Nepamirškite prisijungti prie mūsų 75K+ ml subreddit.
🚨 „MarkTechPost“ kviečia AI įmones/pradedančiuosius/grupes, kad jie galėtų partnerį už savo būsimus AI žurnalus „Atvirojo kodo AI gamyboje“ ir „Agentic AI“.
Asif Razzaq yra „MarkTechPost Media Inc“ generalinis direktorius. Kaip vizionierius verslininkas ir inžinierius, ASIF yra įsipareigojęs išnaudoti dirbtinio intelekto potencialą socialiniam gėrybei. Naujausias jo siekis yra dirbtinio intelekto žiniasklaidos platformos „MarkTechPost“, kuri išsiskiria išsamia mašininio mokymosi ir giluminio mokymosi naujienų, kuri yra techniškai pagrįsta, ir lengvai suprantama plačiai auditorijai. Platforma gali pasigirti daugiau nei 2 milijonai mėnesinių peržiūrų, parodydama jos populiarumą tarp auditorijos.
✅ (rekomenduojama) Prisijunkite prie mūsų telegramos kanalo