Pour installer et exécuter Unsloth sur Google Colab, suivez les étapes ci-dessous :
Si vous n'avez jamais utilisé un carnet Colab, un bref aperçu du carnet lui-même :
Bouton Lecture sur chaque "cellule". Cliquez sur ceci pour exécuter le code de cette cellule. Vous ne devez sauter aucune cellule et vous devez exécuter chaque cellule dans l'ordre chronologique. Si vous rencontrez des erreurs, réexécutez simplement la cellule que vous n'avez pas exécutée. Une autre option est d'appuyer sur CTRL + ENTER si vous ne voulez pas cliquer sur le bouton de lecture.
Bouton Runtime dans la barre d'outils en haut. Vous pouvez également utiliser ce bouton et cliquer sur "Exécuter tout" pour lancer l'ensemble du notebook en une seule fois. Cela sautera toutes les étapes de personnalisation, mais c'est un bon premier essai.
Bouton Se connecter / Reconnecter T4. Le T4 est le GPU gratuit fourni par Google. Il est assez puissant !
La première cellule d'installation ressemble à ceci : N'oubliez pas de cliquer sur le bouton LIRE dans les crochets [ ]. Nous récupérons notre package open source sur Github et installons quelques autres packages.
Exemple de code Colab
Exemple de code Unsloth pour ajuster finement gpt-oss-20b :
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