Fine Tuning
Sulla base delle capacità di DevPod, forniamo immagini dedicate specificamente al fine-tuning dei modelli, rendendo conveniente per gli utenti eseguire il fine-tuning dei propri modelli.
Il processo di creazione di un job di fine-tuning è fondamentalmente lo stesso di quello di DevPod. Puoi consultare il processo di creazione di DevPod. Ecco alcune differenze:
- Devi inserire il modello base per il fine-tuning nella pagina di creazione, ad esempio: Qwen/Qwen3-8B.
- Se il modello richiede un token di accesso, devi anche compilare il token Hugging Face (facoltativo).
- Inserisci l'identificatore del dataset scelto nel campo Dataset, ad esempio: tatsu-lab/alpaca.

Dopo aver selezionato la configurazione delle risorse del task, distribuisci il pod e attendi fino a quando lo stato del task cambia in "running". Fai clic su Connetti e scegli il tuo metodo di connessione preferito:
- Jupyter Notebook: Interfaccia notebook basata su browser (consigliata).
- Web Terminal: Terminale basato su browser.
- SSH: Connessione terminale da macchina locale.
Nota:
Per utilizzare SSH, aggiungi la tua chiave pubblica SSH nelle impostazioni del tuo account. Il sistema aggiunge automaticamente la tua chiave al file authorized_keys del pod.
Al momento, abbiamo preparato accuratamente due immagini di strumenti, sviluppate rispettivamente su Axolotl e Torchtune, con l'obiettivo di fornire comodità agli utenti per il fine-tuning dei modelli. Successivamente, introdurremo in dettaglio i processi di utilizzo di queste due immagini rispettivamente.
Basato su Axolotl
Configura il tuo ambiente
Apri Jupyter Notebook nel browser. Puoi vedere che ci sono tre file nella directory di lavoro:
- examples/: Configurazioni e script di esempio
- outputs/: Risultati dell'addestramento e output del modello
- config.yaml: Parametri di addestramento per il tuo modello Il sistema genera un config.yaml iniziale basato sul tuo modello base e dataset selezionati.

Rivedi e modifica la configurazione
Rivedi e adatta i parametri in base al tuo caso d'uso specifico. Ecco un esempio di configurazione con parametri comuni:
base_model: Qwen/Qwen3-32B
# Caricamento automatico di checkpoint e modello finale su HF
# hub_model_id: username/custom_model_name
plugins:
- axolotl.integrations.cut_cross_entropy.CutCrossEntropyPlugin
strict: false
chat_template: qwen3
datasets:
- path: mlabonne/FineTome-100k
type: chat_template
split: train[:20%]
field_messages: conversations
message_property_mappings:
role: from
content: value
val_set_size: 0.0
output_dir: ./outputs/out
dataset_prepared_path: last_run_prepared
sequence_len: 2048
sample_packing: true
eval_sample_packing: true
pad_to_sequence_len: true
load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_target_modules:
- q_proj
- k_proj
- v_proj
- o_proj
- down_proj
- up_proj
lora_mlp_kernel: true
lora_qkv_kernel: true
lora_o_kernel: true
wandb_project:
wandb_entity:
wandb_watch:
wandb_name:
wandb_log_model:
gradient_accumulation_steps: 2
micro_batch_size: 1
num_epochs: 1
optimizer: adamw_torch_4bit
lr_scheduler: cosine
learning_rate: 0.0002
bf16: auto
tf32: true
gradient_checkpointing: offload
gradient_checkpointing_kwargs:
use_reentrant: false
resume_from_checkpoint:
logging_steps: 1
flash_attention: true
warmup_steps: 10
evals_per_epoch: 4
saves_per_epoch: 1
weight_decay: 0.0
special_tokens:Per ulteriori esempi di configurazione, visita il repository esempi Axolotl.
Avvia il processo di fine-tuning
Una volta che la tua configurazione è pronta, segui questi passaggi:
- Avvia il processo di addestramento:
axolotl train config.yaml- Monitora il progresso dell'addestramento nel tuo terminale.
Basato su Torchtune
Configura il tuo ambiente
Apri Jupyter Notebook nel browser. Puoi utilizzare tune ls per elencare il set completo di ricette di fine-tuning supportate da torchtune.
RECIPE CONFIG
full_finetune_single_device llama2/7B_full_low_memory
code_llama2/7B_full_low_memory
llama3/8B_full_single_device
llama3_1/8B_full_single_device
llama3_2/1B_full_single_device
llama3_2/3B_full_single_device
mistral/7B_full_low_memory
phi3/mini_full_low_memory
phi4/14B_full_low_memory
qwen2/7B_full_single_device
qwen2/0.5B_full_single_device
qwen2/1.5B_full_single_device
qwen2_5/0.5B_full_single_device
qwen2_5/1.5B_full_single_device
qwen2_5/3B_full_single_device
qwen2_5/7B_full_single_device
llama3_2_vision/11B_full_single_device
full_finetune_distributed llama2/7B_full
llama2/13B_full
llama3/8B_full
llama3_1/8B_full
llama3_2/1B_full
llama3_2/3B_full
llama3/70B_full
llama3_1/70B_full
llama3_3/70B_full
llama3_3/70B_full_multinode
mistral/7B_full
gemma/2B_full
gemma/7B_full
gemma2/2B_full
gemma2/9B_full
gemma2/27B_full
phi3/mini_full
phi4/14B_full
qwen2/7B_full
qwen2/0.5B_full
qwen2/1.5B_full
qwen2_5/0.5B_full
qwen2_5/1.5B_full
qwen2_5/3B_full
qwen2_5/7B_full
llama3_2_vision/11B_full
llama3_2_vision/90B_full
lora_finetune_single_device llama2/7B_lora_single_device
llama2/7B_qlora_single_device
code_llama2/7B_lora_single_device
code_llama2/7B_qlora_single_device
llama3/8B_lora_single_device
llama3_1/8B_lora_single_device
llama3/8B_qlora_single_device
llama3_2/1B_lora_single_device
llama3_2/3B_lora_single_device
llama3/8B_dora_single_device
llama3/8B_qdora_single_device
llama3_1/8B_qlora_single_device
llama3_2/1B_qlora_single_device
llama3_2/3B_qlora_single_device
llama2/13B_qlora_single_device
mistral/7B_lora_single_device
mistral/7B_qlora_single_device
gemma/2B_lora_single_device
gemma/2B_qlora_single_device
gemma/7B_lora_single_device
gemma/7B_qlora_single_device
gemma2/2B_lora_single_device
gemma2/2B_qlora_single_device
gemma2/9B_lora_single_device
gemma2/9B_qlora_single_device
gemma2/27B_lora_single_device
gemma2/27B_qlora_single_device
phi3/mini_lora_single_device
phi3/mini_qlora_single_device
phi4/14B_lora_single_device
phi4/14B_qlora_single_device
qwen2/7B_lora_single_device
qwen2/0.5B_lora_single_device
qwen2/1.5B_lora_single_device
qwen2_5/0.5B_lora_single_device
qwen2_5/1.5B_lora_single_device
qwen2_5/3B_lora_single_device
qwen2_5/7B_lora_single_device
qwen2_5/14B_lora_single_device
llama3_2_vision/11B_lora_single_device
llama3_2_vision/11B_qlora_single_device
lora_dpo_single_device llama2/7B_lora_dpo_single_device
llama3_1/8B_lora_dpo_single_device
lora_dpo_distributed llama2/7B_lora_dpo
llama3_1/8B_lora_dpo
full_dpo_distributed llama3_1/8B_full_dpo
ppo_full_finetune_single_device mistral/7B_full_ppo_low_memory
lora_finetune_distributed llama2/7B_lora
llama2/13B_lora
llama2/70B_lora
llama2/7B_qlora
llama2/70B_qlora
llama3/8B_dora
llama3/70B_lora
llama3_1/70B_lora
llama3_3/70B_lora
llama3_3/70B_qlora
llama3/8B_lora
llama3_1/8B_lora
llama3_2/1B_lora
llama3_2/3B_lora
llama3_1/405B_qlora
mistral/7B_lora
gemma/2B_lora
gemma/7B_lora
gemma2/2B_lora
gemma2/9B_lora
gemma2/27B_lora
phi3/mini_lora
phi4/14B_lora
qwen2/7B_lora
qwen2/0.5B_lora
qwen2/1.5B_lora
qwen2_5/0.5B_lora
qwen2_5/1.5B_lora
qwen2_5/3B_lora
qwen2_5/7B_lora
qwen2_5/32B_lora
qwen2_5/72B_lora
llama3_2_vision/11B_lora
llama3_2_vision/11B_qlora
llama3_2_vision/90B_lora
llama3_2_vision/90B_qlora
dev/lora_finetune_distributed_multi_dataset dev/11B_lora_multi_dataset
generate generation
dev/generate_v2 llama2/generation_v2
llama3_2_vision/11B_generation_v2
dev/generate_v2_distributed llama3/70B_generation_distributed
llama3_1/70B_generation_distributed
llama3_3/70B_generation_distributed
dev/early_exit_finetune_distributed llama2/7B_full_early_exit
eleuther_eval eleuther_evaluation
llama3_2_vision/11B_evaluation
qwen2/evaluation
qwen2_5/evaluation
gemma/evaluation
phi4/evaluation
phi3/evaluation
mistral/evaluation
llama3_2/evaluation
code_llama2/evaluation
quantize quantization
qat_distributed llama2/7B_qat_full
llama3/8B_qat_full
qat_lora_finetune_distributed llama3/8B_qat_lora
llama3_1/8B_qat_lora
llama3_2/1B_qat_lora
llama3_2/3B_qat_lora
knowledge_distillation_single_device qwen2/1.5_to_0.5B_KD_lora_single_device
llama3_2/8B_to_1B_KD_lora_single_device
knowledge_distillation_distributed qwen2/1.5_to_0.5B_KD_lora_distributed
llama3_2/8B_to_1B_KD_lora_distributedRivedi e modifica la configurazione
- Copia il file di configurazione sul dispositivo locale, ad esempio:
tune cp qwen2_5/3B_lora_single_device config.yaml- Modifica, rivedi e adatta i parametri in base al tuo caso d'uso specifico.
Avvia il processo di fine-tuning
Una volta che la tua configurazione è pronta, segui questi passaggi:
- Avvia il processo di addestramento:
tune run lora_finetune_single_device --config config.yaml- Monitora il progresso dell'addestramento nel tuo terminale.
Documenti correlati
Per ulteriori informazioni sul fine-tuning con Axolotl, vedi:
Per ulteriori informazioni sul fine-tuning con Torchtune, vedi:
Per ulteriori informazioni su corsi di fine-tuning più liberi e flessibili, vedi: