Šiame vadove mes eisime pro šalį, kaip nustatyti ir suderinti „LLAMA 3.2 3B“ instrukcijų modelį, naudojant specialiai kuruojamą „Python Code“ duomenų rinkinį. Pasibaigus šiam vadovui, galėsite geriau suprasti, kaip pritaikyti didelius kalbų modelius, susijusius su kodais susijusiomis užduotimis, ir praktiškai įžvalgos apie įrankius ir konfigūracijas, reikalingas norint panaudoti nesigilinimą, kad būtų galima suderinti.
Įdiegti reikiamas priklausomybes
!pip install "unsloth(colab-new) @ git+https://github.com/unslothai/unsloth.git"
!pip install "git+https://github.com/huggingface/transformers.git"
!pip install -U trl
!pip install --no-deps trl peft accelerate bitsandbytes
!pip install torch torchvision torchaudio triton
!pip install xformers
!python -m xformers.info
!python -m bitsandbytesŠios komandos diegia ir atnaujina visas būtinas bibliotekas, tokias kaip „Unlioth“, „Transformeriai“ ir „XFormers“-reikėjo, kad būtų galima patobulinti „Llama 3.2 3B“ instrukcijų modelį ant „Python“ kodo. Galiausiai mes vykdome diagnostikos komandas, kad patikrintume sėkmingą „XFormers“ ir „Bitsandbytes“ diegimą.
Esminis importas
from unsloth import FastLanguageModel
from trl import SFTTrainer
from transformers import TrainingArguments
import torch
from datasets import load_datasetMes importuojame klases ir funkcijas iš UNLOTH, TRL ir transformatorių, skirtų modelio mokymui ir derinimui. Be to, mes įkeliame „Python“ kodo duomenų rinkinį su apkabinimo veido „load_dataset“, kad paruoštume mokymo pavyzdžius.
„Python“ kodo duomenų rinkinio įkėlimas
max_seq_length = 2048
dataset = load_dataset("user/Llama-3.2-Python-Alpaca-143k", split="train") #Save the dataset on your user profile on HF, then load the dataset on your user idSekos ilgį nustatėme iki 2048 žetonų, skirtų tiksliai suderintam modeliui, ir įkeliame pasirinktinį „Python“ kodo duomenų rinkinį iš „Hugging Face“. Įsitikinkite, kad turite duomenų rinkinį, saugomą pagal savo vartotojo vardą, kad galėtumėte tinkamai pasiekti.
Inicijuoti lamos 3.2 3B modelį
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/Llama-3.2-3B-Instruct-bnb-4bit",
max_seq_length = max_seq_length,
dtype = None,
load_in_4bit = True
)
Mes įkeliame „LLAMA 3.2 3B“ instrukcijų modelį 4 bitų formatu, naudodami „Unsloth“ biblioteką, o tai sumažina atminties naudojimą. Norėdami tvarkyti ilgesnius teksto įvestis, mes taip pat nustatome maksimalų sekos ilgį iki 2048.
Loros konfigūravimas su UNLOTH
model = FastLanguageModel.get_peft_model(
model,
r = 16,
target_modules = ("q_proj", "k_proj", "v_proj", "o_proj",
"gate_proj", "up_proj", "down_proj",),
lora_alpha = 16,
lora_dropout = 0, # Supports any, but = 0 is optimized
bias = "none", # Supports any, but = "none" is optimized
# (NEW) "unsloth" uses 30% less VRAM, fits 2x larger batch sizes!
use_gradient_checkpointing = "unsloth", # True or "unsloth" for very long context
random_state = 3407,
use_rslora = False, # We support rank stabilized LoRA
loftq_config = None, # And LoftQ
max_seq_length = max_seq_length
)
Mes taikome „Lora“ (mažai rango adaptaciją) prie savo 4 bitų pakrauto modelio, nurodydami reitingą (R), alfa (LORA_ALPHA) ir išmetimo parametrus. „Use_Gradient_CheckPointing =“ UNLOTH “leidžia efektyviau naudoti atmintį ir leidžia treniruotis su ilgesniu konteksto ilgiu. Papildomos „Lora“ parinktys, tokios kaip „Use_Rslora“ ir „LoftQ_Config“, yra prieinamos patobulintoms tikslios derinimo būdams, tačiau čia yra išjungtos. Galiausiai mes nustatome maksimalų sekos ilgį, kuris atitiktų mūsų ankstesnę konfigūraciją.
„Google“ disko montavimas
from google.colab import drive
drive.mount("/content/drive")Mes importuojame „Google Colab Drive“ modulį, kad būtų galima patekti į „Google“ diską iš „Colab“ aplinkos.
Treniruočių kilpos nustatymas ir paleidimas
trainer = SFTTrainer(
model = model,
train_dataset = dataset,
dataset_text_field = "text",
max_seq_length = max_seq_length,
tokenizer = tokenizer,
args = TrainingArguments(
per_device_train_batch_size = 2,
gradient_accumulation_steps = 4,
warmup_steps = 10,
# num_train_epochs = 1, # Set this for 1 full training run.
max_steps = 60,
learning_rate = 2e-4,
fp16 = not torch.cuda.is_bf16_supported(),
bf16 = torch.cuda.is_bf16_supported(),
logging_steps = 1,
optim = "adamw_8bit",
weight_decay = 0.01,
lr_scheduler_type = "linear",
seed = 3407,
output_dir = "/content/drive/My Drive/Llama-3.2-3B-Instruct-bnb-4bit"
),
)
trainer.train()
Mes sukuriame „SftTrainer“ egzempliorių su pakrauto modelio „Tokenizer“ ir „Python Code“ duomenų rinkiniu, nurodydami mokymo teksto lauką. „TrainingArguments“ apibrėžia pagrindinius hiperparametrus, tokius kaip partijos dydis, mokymosi greitis, maksimalūs treniruočių žingsniai ir aparatinės įrangos nustatymai, tokie kaip FP16 ar BF16. Šiame pavyzdyje mes nustatėme išvesties katalogą į „Google Drive“, kad patogiai saugo patikrinimo taškus ir žurnalus. Galiausiai mes remiamės „Trainer.train“ () metodu, kad pradėtume tobulinimo procesą.
Išsaugoti tiksliai suderintą modelį
model.save_pretrained("lora_model") # Local saving
tokenizer.save_pretrained("lora_model")Mes išsaugojame „Lora“ apmokytą modelį ir jo žetoną į vietinį aplanką, pavadintą LORA_MODEL. Tai leidžia įkelti ir naudoti tiksliai suderintą modelį vėliau, nekartant mokymo proceso.
Apibendrinant, visame šiame vadove mes pademonstravome, kaip patobulinti „Lla 3.2 3B“ instrukcijų modelį „Python“ kodo duomenų rinkinyje, naudojant „Unloth“ biblioteką, „Lora“ ir efektyvų 4 bitų kiekybinį kiekį. Pasitelkdami pateiktus scenarijus, galite išmokyti mažesnį, atminties taupymo modelį, kuris puikiai supranta, ir supranta „Python“ kodą. Proceso metu mes parodėme UNLOTH integraciją, skirtą optimizuotai atminties naudojimui, „Lora“ lanksčiam modeliui pritaikyti ir apkabinti veido įrankius duomenų rinkiniui tvarkyti ir mokyti. Ši sąranka suteikia galimybę kurti ir pritaikyti kalbų modelius, pritaikytus konkrečioms su kodu susijusioms užduotims, pagerinti tikslumą ir išteklių efektyvumą.
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 giliųjų mokymosi naujienų aprašymu, paleidimas, kuris yra techniškai pagrįstas ir lengvai suprantamas 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


