Condividi tramite


Creare un'esecuzione di training usando l'API di ottimizzazione del modello Foundation

Importante

Questa funzionalità è disponibile in anteprima pubblica nelle aree seguenti: centralus, eastus, eastus2, northcentralus, e westus.

Questo articolo descrive come creare e configurare un'esecuzione di training usando l'API Foundation Model Fine tuning (ora parte dell'API Mosaic AI Model Training) e descrive tutti i parametri usati nella chiamata API. È anche possibile creare un'esecuzione usando l'interfaccia utente. Per istruzioni, vedere Creare un'esecuzione di training usando l'interfaccia utente di ottimizzazione del modello foundation.

Requisiti

Vedere Requisiti.

Creare un'esecuzione di training

Per creare esecuzioni di training programmaticamente, usare la create() funzione. Questa funzione esegue il training di un modello nel set di dati fornito e salva il modello sottoposto a training per l'inferenza.

Gli input necessari sono il modello di cui si vuole eseguire il training, la posizione del set di dati di training e dove registrare il modello. Esistono anche parametri facoltativi che consentono di eseguire la valutazione e di modificare gli iperparametri del tuo processo di esecuzione.

Al termine dell'esecuzione, l'esecuzione completata e il checkpoint finale vengono salvati, il modello viene clonato e tale clone viene registrato in Unity Catalog come versione del modello per l'inferenza.

Il modello dall'esecuzione completata, non la versione clonata del modello nel catalogo unity, viene salvato in MLflow. I checkpoint possono essere usati per attività di ottimizzazione continua.

Per informazioni dettagliate sugli argomenti per la funzione, vedere Configurare un'esecuzione di training.

from databricks.model_training import foundation_model as fm

run = fm.create(
  model='meta-llama/Llama-3.2-3B-Instruct',
  train_data_path='dbfs:/Volumes/main/mydirectory/ift/train.jsonl', # UC Volume with JSONL formatted data
  # Public HF dataset is also supported
  # train_data_path='mosaicml/dolly_hhrlhf/train'
  register_to='main.mydirectory', # UC catalog and schema to register the model to
)

Configurare una sessione di allenamento

Nella tabella seguente vengono riepilogati i parametri per la funzione foundation_model.create().

Parametro Richiesto Tipo Descrizione
model x Str Il nome del modello da utilizzare. Consulta Modelli supportati.
train_data_path x Str La posizione dei dati di addestramento. Può trattarsi di una posizione in Unity Catalog (<catalog>.<schema>.<table> o dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl) o un set di dati HuggingFace.
Per INSTRUCTION_FINETUNE, i dati devono essere formattati con ogni riga contenente un prompt e response campo.
Per CONTINUED_PRETRAIN, si tratta di una cartella di .txt file. Vedere Preparare i dati per la messa a punto del modello Foundation per i formati di dati accettati e Dimensioni dei dati consigliate per l'addestramento dei modelli per le raccomandazioni sulle dimensioni dei dati.
register_to x Str Catalogo e schema di Unity (<catalog>.<schema> o <catalog>.<schema>.<custom-name>) in cui il modello viene registrato dopo il training per semplificare la distribuzione. Se custom-name non è fornito, per impostazione predefinita viene usato il nome dell'esecuzione.
data_prep_cluster_id Str L'ID del cluster da usare per l'elaborazione dei dati Spark. Questa operazione è necessaria per i compiti di formazione didattica in cui i dati di addestramento si trovano in una tabella Delta. Per informazioni su come trovare l'ID cluster, vedere Ottenere l'ID cluster.
experiment_path Str Il percorso verso l'esperimento di MLflow dove viene salvato l'output della corsa di addestramento (metriche e checkpoint). L'impostazione predefinita si riferisce al nome di esecuzione all'interno dell'area di lavoro personale dell'utente, ad esempio /Users/<username>/<run_name>.
task_type Str Il tipo di task da eseguire. Può essere CHAT_COMPLETION (impostazione predefinita), CONTINUED_PRETRAINo INSTRUCTION_FINETUNE.
eval_data_path Str Posizione remota dei dati di valutazione (se presenti). Deve seguire lo stesso formato di train_data_path.
eval_prompts Elenco[str] Elenco di stringhe di richiesta per generare risposte durante la valutazione. Il valore predefinito è None (non generare richieste). I risultati vengono registrati nell'esperimento ogni volta che viene eseguito il checkpoint del modello. Le generazioni si verificano in ogni checkpoint del modello con i parametri di generazione seguenti: max_new_tokens: 100, temperature: 1, top_k: 50, top_p: 0.95, do_sample: true.
custom_weights_path Str Posizione remota di un checkpoint del modello personalizzato per il training. L'impostazione predefinita è None, ovvero il run parte dai pesi pre-addestrati originali del modello scelto. Se vengono forniti pesi personalizzati, vengono usati questi pesi anziché i pesi pre-addestrati originali del modello. Questi pesi devono essere stati prodotti dall'API di ottimizzazione e corrispondono all'architettura dell'oggetto model specificato. Consulta Build on custom model weights.
NOTA: se è stato eseguito il training di un modello prima del 26/3/2025, non sarà più possibile eseguire il training continuo da tali checkpoint del modello. Le esecuzioni di training completate in precedenza possono comunque essere servite senza problemi con throughput provvisto.
training_duration Str Durata totale della corsa. L’impostazione predefinita è un periodo o 1ep. Può essere specificato in periodi (10ep) o token (1000000tok).
learning_rate Str Tasso di apprendimento per l'addestramento del modello. Tutti i modelli vengono addestrati utilizzando l'ottimizzatore AdamW, con riscaldamento del tasso di apprendimento. La frequenza di apprendimento predefinita può variare in base al modello. È consigliabile eseguire uno sweep di iperparametri provando diverse frequenze di apprendimento e durate di training per ottenere i modelli di qualità più elevati.
context_length Str Lunghezza massima della sequenza di un campione di dati. Viene usato per troncare tutti i dati troppo lunghi e per creare un pacchetto di sequenze più brevi per garantire l'efficienza.
L’impostazione predefinita è 8192 token o la lunghezza massima del contesto per il modello fornito, a seconda di quale sia inferiore. È possibile usare questo parametro per configurare la lunghezza del contesto, ma la configurazione oltre la lunghezza massima del contesto di ogni modello non è supportata. Vedere Modelli supportati per la durata massima supportata del contesto di ogni modello.
validate_inputs Booleano Indica se convalidare l'accesso ai percorsi di input prima di inviare il processo di training. Il valore predefinito è True.

Sviluppa sui pesi del modello personalizzato

NOTA: se è stato eseguito il training di un modello prima del 26/3/2025, non sarà più possibile eseguire il training continuo da tali checkpoint del modello. Le esecuzioni di training completate in precedenza possono comunque essere servite senza problemi con throughput provvisto.

L'ottimizzazione del modello di base supporta l'aggiunta di pesi personalizzati usando il parametro facoltativo custom_weights_path per addestrare e personalizzare un modello.

Per iniziare, impostare custom_weights_path al percorso del checkpoint di un'esecuzione precedente dell'allenamento con l'API di ottimizzazione. I percorsi di checkpoint possono essere trovati nella scheda Artefatti di un'esecuzione precedente di MLflow. Il nome della cartella del checkpoint corrisponde al batch e all'epoca (epoch) di uno specifico snapshot, ad esempio ep29-ba30/.

Scheda Artefatti per un'esecuzione precedente di MLflow

  • Per fornire il checkpoint più recente di un'esecuzione precedente, impostare custom_weights_path sul checkpoint prodotto dall'API di ottimizzazione. Ad esempio: custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink.
  • Per fornire un checkpoint precedente, impostare custom_weights_path su un percorso che conduce a una cartella che contiene i file .distcp corrispondenti al checkpoint desiderato, ad esempio custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#.

Successivamente, aggiorna il parametro model affinché corrisponda al modello di base del checkpoint che hai passato a custom_weights_path.

Nell'esempio seguente, ift-meta-llama-3-1-70b-instruct-ohugkq è un'esecuzione precedente che affina meta-llama/Meta-Llama-3.1-70B. Per ottimizzare il checkpoint più recente da ift-meta-llama-3-1-70b-instruct-ohugkq, impostare le variabili model e custom_weights_path come segue:

from databricks.model_training import foundation_model as fm

run = fm.create(
model = 'meta-llama/Meta-Llama-3.1-70B'
custom_weights_path = 'dbfs:/databricks/mlflow-tracking/2948323364469837/d4cd1fcac71b4fb4ae42878cb81d8def/artifacts/ift-meta-llama-3-1-70b-instruct-ohugkq/checkpoints/latest-sharded-rank0.symlink'
... ## other parameters for your fine-tuning run

)

Consulta Configurare una sessione di training per configurare altri parametri nella vostra sessione di fine-tuning.

Ottenere l'ID cluster

Per ottenere l'ID del cluster:

  1. Nella barra di spostamento sinistra dell'area di lavoro di Databricks cliccare su Calcolo.

  2. Nella tabella, fai clic sul nome del tuo cluster.

  3. Fare clic sul pulsante Altro nell'angolo superiore destro e selezionare Visualizza JSON dal menu a discesa.

  4. Viene visualizzato il file JSON del Cluster. Copiare l'ID cluster, ovvero la prima riga del file.

    ID cluster

Ottieni stato di una corsa

È possibile tenere traccia dello stato di avanzamento di un'esecuzione usando la pagina Esperimento nell'interfaccia utente di Databricks o usando il comando get_events()API . Per informazioni dettagliate, vedere Visualizzare, gestire e analizzare le esecuzioni di ottimizzazione del modello di base.

Output di esempio da get_events():

Usare l'API per ottenere lo stato di esecuzione

Dettagli dell'esecuzione del campione nella pagina dell'esperimento:

Ottenere lo stato di esecuzione dall'interfaccia utente degli esperimenti

Passaggi successivi

Dopo il completamento dell'esecuzione del training, è possibile esaminare le metriche in MLflow e implementare il modello per l'inferenza. Vedere i passaggi da 5 a 7 dell'esercitazione: Creare e distribuire un'esecuzione di ottimizzazione del modello di base.

Per un esempio di istruzioni per il fine-tuning, vedere il notebook demo sul fine-tuning delle istruzioni: Riconoscimento delle Entità, che illustra la preparazione dei dati, la configurazione dell'esecuzione del modello di training e la distribuzione.

Esempio di notebook

Il notebook seguente illustra un esempio di come generare dati sintetici usando il modello Meta Llama 3.1 405B Instruct e usarli per ottimizzare un modello:

Generare dati sintetici usando il notebook Llama 3.1 405B Instruct

Ottieni il notebook

Risorse aggiuntive