Delen via


Een trainingsuitvoering maken met behulp van de Foundation Model Fine-tuning-API

Belangrijk

Deze functie bevindt zich in openbare preview in de volgende regio's: centralus, eastus, eastus2, en northcentraluswestus.

In dit artikel wordt beschreven hoe u een trainingsuitvoering maakt en configureert met behulp van de Foundation Model Fine-tuning (nu onderdeel van de Mosaic AI Model Training) API en beschrijft alle parameters die worden gebruikt in de API-aanroep. U kunt ook een uitvoering maken met behulp van de gebruikersinterface. Zie Een trainingsuitvoering maken met behulp van de gebruikersinterface voor het verfijnen van foundationmodellen voor instructies.

Eisen

Zie Vereisten.

Een trainingsuitvoering maken

Als u programmatisch trainingsuitvoeringen wilt maken, gebruikt u de create() functie. Met deze functie traint u een model op de opgegeven gegevensset en converteert u het uiteindelijke controlepunt Composer naar een met Hugging Face opgemaakt controlepunt voor deductie.

De vereiste invoer is het model dat u wilt trainen, de locatie van uw trainingsgegevensset en waar u uw model wilt registreren. Er zijn ook optionele parameters waarmee u evaluatie kunt uitvoeren en de hyperparameters van uw uitvoering kunt wijzigen.

Nadat de uitvoering is voltooid, worden de voltooide uitvoering en het uiteindelijke controlepunt opgeslagen, wordt het model gekloond en die kloon is geregistreerd bij Unity Catalog als modelversie voor deductie.

Het model van de voltooide uitvoering, niet de gekloonde modelversie in Unity Catalog en de controlepunten Composer en Hugging Face worden opgeslagen in MLflow. De Composer-controlepunten kunnen worden gebruikt voor vervolgafstemmingstaken.

Zie Een trainingsuitvoering configureren voor meer informatie over argumenten voor de create() functie.

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
)

Een trainingsuitvoering configureren

De volgende tabel bevat een overzicht van de parameters voor de foundation_model.create() functie.

Parameter Vereist Type Omschrijving
model x Str De naam van het model dat moet worden gebruikt. Zie Ondersteunde modellen.
train_data_path x Str De locatie van uw trainingsgegevens. Dit kan een locatie zijn in Unity Catalog (<catalog>.<schema>.<table> of dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl) of een HuggingFace-gegevensset.

Hiervoor INSTRUCTION_FINETUNEmoeten de gegevens worden opgemaakt met elke rij die een prompt en response veld bevat.

Dit CONTINUED_PRETRAINis een map met .txt bestanden. Zie Gegevens voorbereiden voor het verfijnen van Foundation-modellen voor geaccepteerde gegevensindelingen en aanbevolen gegevensgrootte voor modeltraining voor aanbevelingen voor gegevensgrootte.
register_to x Str De Unity Catalog-catalogus en het schema (<catalog>.<schema> of <catalog>.<schema>.<custom-name>) waar het model is geregistreerd na de training voor eenvoudige implementatie. Als custom-name dit niet is opgegeven, wordt deze standaard ingesteld op de uitvoeringsnaam.
data_prep_cluster_id Str De cluster-id van het cluster dat moet worden gebruikt voor spark-gegevensverwerking. Dit is vereist voor trainingstaken onder supervisie waarbij de trainingsgegevens zich in een Delta-tabel bevinden. Zie Cluster-id ophalen voor meer informatie over het vinden van de cluster-id.
experiment_path Str Het pad naar het MLflow-experiment waarin de uitvoer van de training (metrische gegevens en controlepunten) wordt opgeslagen. De standaardinstelling is de uitvoeringsnaam binnen de persoonlijke werkruimte van de gebruiker (dat wil bijvoorbeeld /Users/<username>/<run_name>).
task_type Str Het type taak dat moet worden uitgevoerd. INSTRUCTION_FINETUNE Kan (standaard) CHAT_COMPLETIONof CONTINUED_PRETRAIN.
eval_data_path Str De externe locatie van uw evaluatiegegevens (indien van toepassing). Moet dezelfde indeling hebben als train_data_path.
eval_prompts List[str] Een lijst met prompttekenreeksen voor het genereren van antwoorden tijdens de evaluatie. De standaardinstelling is None (geen prompts genereren). Resultaten worden bij het experiment geregistreerd wanneer het model wordt gecontroleerd. Generaties vinden plaats op elk controlepunt van het model met de volgende generatieparameters: max_new_tokens: 100, temperature: 1, top_k: 50, top_p: 0.95, . do_sample: true
custom_weights_path Str De externe locatie van een aangepast modelcontrolepunt voor training. Standaard is None, wat betekent dat de uitvoering begint vanaf de oorspronkelijke vooraf getrainde gewichten van het gekozen model. Als er aangepaste gewichten worden opgegeven, worden deze gewichten gebruikt in plaats van de oorspronkelijke vooraf getrainde gewichten van het model. Deze gewichten moeten een controlepunt van Composer zijn en moeten overeenkomen met de architectuur van de model opgegeven. Zie Bouwen op aangepaste modelgewichten
training_duration Str De totale duur van de uitvoering. De standaardwaarde is één epoch of 1ep. Kan worden opgegeven in epochs (10ep) of tokens (1000000tok).
learning_rate Str Het leerpercentage voor modeltraining. Voor alle andere modellen dan Llama 3.1 405B Instruct is 5e-7de standaardleersnelheid. Voor Llama 3.1 405B Instruct is 1.0e-5de standaardleersnelheid. De optimizer is Decoupled SliceW met bèta's van 0,99 en 0,95 en geen gewichtsverval. De learning rate scheduler is LinearWithWarmupSchedule met een opwarming van 2% van de totale trainingsduur en een uiteindelijke vermenigvuldiger van het leerpercentage van 0.
context_length Str De maximale reekslengte van een gegevensvoorbeeld. Dit wordt gebruikt voor het afkappen van gegevens die te lang zijn en om kortere reeksen samen te verpakken voor efficiëntie.

De standaardwaarde is 8192 tokens of de maximale contextlengte voor het opgegeven model, afhankelijk van wat lager is. U kunt deze parameter gebruiken om de contextlengte te configureren, maar het configureren buiten de maximale contextlengte van elk model wordt niet ondersteund. Zie Ondersteunde modellen voor de maximale ondersteunde contextlengte van elk model.
validate_inputs Booleaanse waarde Hiermee wordt aangegeven of de toegang tot invoerpaden moet worden gevalideerd voordat u de trainingstaak indient. Standaard is True.

Bouwen op aangepaste modelgewichten

Foundation Model Fine-tuning ondersteunt het toevoegen van aangepaste gewichten met behulp van de optionele parameter custom_weights_path om een model te trainen en aan te passen.

Om aan de slag te gaan, stelt u custom_weights_path het controlepuntpad Composer in vanaf een vorige trainingsuitvoering. Controlepuntpaden vindt u op het tabblad Artefacten van een vorige MLflow-uitvoering. De mapnaam van het controlepunt komt overeen met de batch en het tijdvak van een bepaalde momentopname, zoals ep29-ba30/.

Tabblad Artefacten voor een vorige MLflow-uitvoering

  • Als u het laatste controlepunt van een vorige uitvoering wilt opgeven, stelt u het custom_weights_path controlepunt Composer in. Bijvoorbeeld: custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink.
  • Als u een eerder controlepunt wilt opgeven, stelt u custom_weights_path een pad in naar een map met .distcp bestanden die overeenkomen met het gewenste controlepunt, zoals custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#.

Werk vervolgens de model parameter bij zodat deze overeenkomt met het basismodel van het controlepunt dat u hebt custom_weights_pathdoorgegeven.

In het volgende voorbeeld ift-meta-llama-3-1-70b-instruct-ohugkq is een vorige uitvoering die fijn is meta-llama/Meta-Llama-3.1-70B. Als u het meest recente controlepunt ift-meta-llama-3-1-70b-instruct-ohugkqwilt verfijnen, stelt u de model variabelen custom_weights_path als volgt in:

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

)

Zie Een trainingsuitvoering configureren voor het configureren van andere parameters in de uitvoering voor het afstemmen.

Cluster-id ophalen

De cluster-id ophalen:

  1. Klik in de linkernavigatiebalk van de Databricks-werkruimte op Compute.

  2. Klik in de tabel op de naam van het cluster.

  3. Klik Knop Meer in de rechterbovenhoek en selecteer JSON weergeven in de vervolgkeuzelijst.

  4. Het JSON-clusterbestand wordt weergegeven. Kopieer de cluster-id, de eerste regel in het bestand.

    cluster-id

Status van een uitvoering ophalen

U kunt de voortgang van een uitvoering bijhouden met behulp van de pagina Experiment in de Databricks-gebruikersinterface of met behulp van de API-opdracht get_events(). Zie Uitvoeringen van Foundation-modellen weergeven, beheren en analyseren voor meer informatie.

Voorbeelduitvoer van get_events():

API gebruiken om de uitvoeringsstatus op te halen

Details van voorbeelduitvoering op de pagina Experiment:

Uitvoeringsstatus ophalen uit de gebruikersinterface van experimenten

Volgende stappen

Nadat de trainingsuitvoering is voltooid, kunt u metrische gegevens bekijken in MLflow en uw model implementeren voor deductie. Zie stap 5 tot en met 7 van de zelfstudie: Een uitvoering voor het verfijnen van een Foundation-model maken en implementeren.

Zie het instructiedemonotitieblok: demonotitieblok voor entiteitsherkenning voor een voorbeeld van het verfijnen van instructies voor het voorbereiden van gegevens, het afstemmen van de configuratie en implementatie van trainingsuitvoeringen.

Voorbeeld van notitieblok

In het volgende notebook ziet u een voorbeeld van het genereren van synthetische gegevens met behulp van het Meta Llama 3.1 405B Instruct-model en het gebruik van die gegevens om een model af te stemmen:

Synthetische gegevens genereren met Llama 3.1 405B Instruct notebook

Notebook downloaden

Aanvullende bronnen