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:

  1. Devi inserire il modello base per il fine-tuning nella pagina di creazione, ad esempio: Qwen/Qwen3-8B.
  2. Se il modello richiede un token di accesso, devi anche compilare il token Hugging Face (facoltativo).
  3. 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:

  1. Jupyter Notebook: Interfaccia notebook basata su browser (consigliata).
  2. Web Terminal: Terminale basato su browser.
  3. 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:

  1. examples/: Configurazioni e script di esempio
  2. outputs/: Risultati dell'addestramento e output del modello
  3. 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:

  1. Avvia il processo di addestramento:
axolotl train config.yaml
  1. 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_distributed

Rivedi e modifica la configurazione

  1. Copia il file di configurazione sul dispositivo locale, ad esempio:
tune cp qwen2_5/3B_lora_single_device config.yaml
  1. 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:

  1. Avvia il processo di addestramento:
tune run lora_finetune_single_device --config config.yaml
  1. 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: