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.
Fabbisogno
Vedere Requisiti.
Creare un set di training
Per creare esecuzioni di training a livello di codice, usare la create()
funzione. Questa funzione esegue il training di un modello nel set di dati fornito e converte il checkpoint Composer finale in un checkpoint formattato Hugging Face 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 modificare gli iperparametri dell'esecuzione.
Dopo il completamento 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 in Unity Catalog e i relativi checkpoint Composer e Hugging Face vengono salvati in MLflow. I checkpoint Composer possono essere usati per attività di ottimizzazione continua.
Per informazioni dettagliate sugli argomenti per la funzione, vedere Configurare un'esecuzione di create()
training.
from databricks.model_training import foundation_model as fm
run = fm.create(
model='meta-llama/Llama-2-7b-chat-hf',
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 esecuzione di training
La tabella seguente riepiloga i parametri per la foundation_model.create()
funzione.
Parametro | Richiesto | Type | Descrizione |
---|---|---|---|
model |
x | str | Il nome del modello da utilizzare. Vedere Modelli supportati. |
train_data_path |
x | str | La posizione dei dati di training. Può trattarsi di una posizione in Unity Catalog (<catalog>.<schema>.<table> o dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl ) o in 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 l'ottimizzazione del modello foundation per i formati di dati accettati e Dimensioni dei dati consigliate per il training dei modelli per le raccomandazioni relative alle dimensioni dei dati. |
register_to |
x | str | Il catalogo Unity Catalog e schema (<catalog>.<schema> o <catalog>.<schema>.<custom-name> ) in cui il modello viene registrato dopo il training per semplificare la distribuzione. Se custom-name non è definito, per impostazione predefinita viene usato il nome del progetto. |
data_prep_cluster_id |
str | ID cluster del cluster da usare per l'elaborazione dei dati Spark. Questa operazione è necessaria per le attività di training supervisionate in cui i dati di training si trovano in una tabella Delta. Per informazioni su come trovare l'ID cluster, vedere Ottenere l'ID cluster. | |
experiment_path |
str | Percorso dell'esperimento MLflow in cui viene salvato l'output dell'esecuzione del training (metriche e checkpoint). L'impostazione predefinita è il 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 INSTRUCTION_FINETUNE (impostazione predefinita), CHAT_COMPLETION o CONTINUED_PRETRAIN . |
|
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] | Un 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 l'esecuzione inizia dai pesi con training preliminare 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 un checkpoint Composer e devono corrispondere all'architettura dell'oggetto model specificato. Vedere Build on custom model weights (Compilazione in base ai pesi del modello personalizzati) |
|
training_duration |
str | Durata totale dell'esecuzione. L’impostazione predefinita è un periodo o 1ep . Può essere specificato in periodi (10ep ) o token (1000000tok ). |
|
learning_rate |
str | Frequenza di apprendimento per il training del modello. Per tutti i modelli diversi da Llama 3.1 405B Instruct, la frequenza di apprendimento predefinita è 5e-7 . Per Llama 3.1 405B Instruct, la frequenza di apprendimento predefinita è 1.0e-5 . L'ottimizzatore è DecoupledLionW con beta di 0,99 e 0,95 e nessun decadimento del peso. L'utilità di pianificazione della frequenza di apprendimento è LinearWithWarmupSchedule con un riscaldamento del 2% della durata totale del training e un moltiplicatore di frequenza di apprendimento finale pari a 0. |
|
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 durata massima del contesto per il modello fornito, a condizione che 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 . |
Build su pesi del modello personalizzati
L'ottimizzazione del modello di base supporta l'aggiunta di pesi personalizzati usando il parametro custom_weights_path
facoltativo per eseguire il training e personalizzare un modello.
Per iniziare, impostare sul custom_weights_path
percorso del checkpoint Composer da un'esecuzione di training precedente. I percorsi del checkpoint sono disponibili nella scheda Artefatti di un'esecuzione MLflow precedente. Il nome della cartella del checkpoint corrisponde al batch e all'epoca di uno snapshot specifico, ad esempio ep29-ba30/
.
- Per fornire il checkpoint più recente di un'esecuzione precedente, impostare
custom_weights_path
sul checkpoint Composer. 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 su
custom_weights_path
un percorso di una cartella contenente.distcp
file corrispondenti al checkpoint desiderato, ad esempiocustom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#
.
Aggiornare quindi il model
parametro in modo che corrisponda al modello di base del checkpoint passato a custom_weights_path
.
Nell'esempio seguente è un'esecuzione precedente che consente di tunes.in the following example ift-meta-llama-3-1-70b-instruct-ohugkq
is a previous run that fine-tunes meta-llama/Meta-Llama-3.1-70B
. Per ottimizzare il checkpoint più recente da ift-meta-llama-3-1-70b-instruct-ohugkq
, impostare le model
variabili e custom_weights_path
come indicato di seguito:
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
)
Vedere Configurare un'esecuzione di training per la configurazione di altri parametri nell'esecuzione di ottimizzazione.
Ottenere l'ID cluster
Riprendere l'ID cluster:
Nella barra di spostamento sinistra dell'area di lavoro di Databricks cliccare su Calcolo.
Nella tabella fare clic sul nome del cluster.
Cliccare nell'angolo in alto a destra e selezionare Visualizzare JSON dal menu a discesa.
Viene visualizzato il file JSON del Cluster. Copiare l'ID cluster, ovvero la prima riga del file.
Ottenere lo stato di un'esecuzione
È 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()
:
Campione dei dettagli dell'esecuzione nella pagina Esperimento:
Passaggi successivi
Dopo il completamento dell'esecuzione del training, è possibile esaminare le metriche in MLflow e distribuire 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 ottimizzazione dettagliata dei dati, vedere il notebook demo di ottimizzazione delle istruzioni: Riconoscimento entità denominata per un esempio di ottimizzazione dei dati che illustra la preparazione dei dati, la configurazione di esecuzione e la distribuzione dell'esecuzione del training.
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
Risorse aggiuntive
- Ottimizzazione del modello di base
- Esercitazione: Creare e distribuire un'esecuzione di ottimizzazione del modello Foundation
- Creare un'esecuzione di training usando l'interfaccia utente di ottimizzazione del modello foundation
- Visualizzare, gestire e analizzare le esecuzioni di ottimizzazione del modello foundation
- Preparare i dati per l'ottimizzazione del modello foundation