Google Colab
Pour installer et exécuter Unsloth sur Google Colab, suivez les étapes ci-dessous :
Mis à jour
Ce contenu vous a-t-il été utile ?
Pour installer et exécuter Unsloth sur Google Colab, suivez les étapes ci-dessous :
Mis à jour
Ce contenu vous a-t-il été utile ?
Ce contenu vous a-t-il été utile ?
from unsloth import FastLanguageModel, FastModel
import torch
from trl import SFTTrainer, SFTConfig
#token = "hf_...", # en utiliser un si vous utilisez des modèles régulés comme meta-llama/Llama-2-7b-hf
max_seq_length = 2048 # Prend en charge l'évolutivité RoPE en interne, choisissez donc n'importe quelle valeur !
# Obtenir le dataset LAION
url = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"
dataset = load_dataset("json", data_files = {"train" : url}, split = "train")
# Modèles pré-quantifiés 4 bits que nous prenons en charge pour un téléchargement 4× plus rapide + pas d'OOM.
fourbit_models = [
"unsloth/gpt-oss-20b-unsloth-bnb-4bit", # ou choisissez n'importe quel modèle
] # Plus de modèles sur https://huggingface.co/unsloth
model, tokenizer = FastModel.from_pretrained(
model_name = "unsloth/gpt-oss-20b",
max_seq_length = 2048, # Choisissez n'importe quoi pour un long contexte !
load_in_4bit = True, # quantification 4 bits. False = LoRA 16 bits.
load_in_8bit = False, # quantification 8 bits
load_in_16bit = False, # [NOUVEAU !] LoRA 16 bits
full_finetuning = False, # À utiliser pour un affinement complet.
# token = "hf_...", # utilisez-en un si vous utilisez des modèles à accès restreint
)
# Effectuer le patching du modèle et ajouter des poids LoRA rapides
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, # Prend en charge n'importe quelle valeur, mais = 0 est optimisé
bias = "none", # Prend en charge n'importe quelle valeur, mais = "none" est optimisé
# [NOUVEAU] "unsloth" utilise 30% de VRAM en moins, permet des tailles de batch 2× supérieures !
use_gradient_checkpointing = "unsloth", # True or "unsloth" pour des contextes très longs
random_state = 3407,
max_seq_length = max_seq_length,
use_rslora = False, # Nous prenons en charge le LoRA à rang stabilisé
loftq_config = None, # Et LoftQ
)
trainer = SFTTrainer(
trainer = Trainer(
model = model,
tokenizer = tokenizer,
args = SFTConfig(
max_seq_length = max_seq_length,
per_device_train_batch_size = 2,
gradient_accumulation_steps = 4,
warmup_steps = 10,
# num_train_epochs = 1, # Définissez ceci pour 1 cycle complet d'entraînement.
bf16 = is_bfloat16_supported(),
output_dir = "outputs",
optim = "adamw_8bit",
seed = 3407,
),
)
trainer.train()
# Allez sur https://docs.unsloth.ai pour des astuces avancées comme
# (1) Sauvegarder en GGUF / fusionner en 16 bits pour vLLM
# (2) Poursuivre l'entraînement à partir d'un adaptateur LoRA sauvegardé
# (3) Ajouter une boucle d'évaluation / OOMs
# (4) Modèles de chat personnalisés