Dela via


Skapa en träningskörning med hjälp av API:et för finjustering av foundation-modellen

Viktigt!

Den här funktionen finns i offentlig förhandsversion i följande regioner: centralus, eastus, eastus2, och .westusnorthcentralus

Den här artikeln beskriver hur du skapar och konfigurerar en träningskörning med hjälp av API:et För grundläggande modell finjustering (nu en del av Mosaic AI Model Training) och beskriver alla parametrar som används i API-anropet. Du kan också skapa en körning med hjälp av användargränssnittet. Anvisningar finns i Skapa en träningskörning med hjälp av basmodellens finjusteringsgränssnitt.

Krav

Se Krav.

Skapa en träningskörning

Använd funktionen för create() att skapa träningskörningar programmatiskt. Den här funktionen tränar en modell på den angivna datamängden och konverterar den slutliga kontrollpunkten Composer till en huggande ansiktsformaterad kontrollpunkt för slutsatsdragning.

De indata som krävs är den modell som du vill träna, platsen för din träningsdatauppsättning och var du ska registrera din modell. Det finns också valfria parametrar som gör att du kan utföra utvärdering och ändra hyperparametrar för din körning.

När körningen är klar sparas den slutförda körningen och den slutliga kontrollpunkten, modellen klonas och klonen registreras i Unity Catalog som en modellversion för slutsatsdragning.

Modellen från den slutförda körningen, inte den klonade modellversionen i Unity Catalog, och kontrollpunkterna Composer och Hugging Face sparas i MLflow. Kontrollpunkterna Composer kan användas för fortsatta finjusteringsuppgifter.

Mer information om argument för funktionen finns i create() Konfigurera en träningskörning.

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
)

Konfigurera en träningskörning

I följande tabell sammanfattas parametrarna foundation_model.create() för funktionen.

Parameter Obligatoriskt Type Description
model x Str Namnet på den modell som ska användas. Se Modeller som stöds.
train_data_path x Str Platsen för dina träningsdata. Det kan vara en plats i Unity Catalog (<catalog>.<schema>.<table> eller dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl) eller en HuggingFace-datauppsättning.

För INSTRUCTION_FINETUNEska data formateras med varje rad som innehåller ett prompt och-fält response .

För CONTINUED_PRETRAINär det här en mapp med .txt filer. Se Förbereda data för Foundation Model Finjustering för godkända dataformat och Rekommenderad datastorlek för modellträning för rekommendationer om datastorlek.
register_to x Str Unity Catalog-katalogen och schemat (<catalog>.<schema> eller <catalog>.<schema>.<custom-name>) där modellen är registrerad efter träning för enkel distribution. Om custom-name inte anges används körnamnet som standard.
data_prep_cluster_id Str Kluster-ID för klustret som ska användas för Spark-databearbetning. Detta krävs för övervakade träningsaktiviteter där träningsdata finns i en Delta-tabell. Information om hur du hittar kluster-ID :t finns i Hämta kluster-ID.
experiment_path Str Sökvägen till MLflow-experimentet där träningskörningens utdata (mått och kontrollpunkter) sparas. Standardvärdet är körningsnamnet på användarens personliga arbetsyta (dvs. /Users/<username>/<run_name>).
task_type Str Vilken typ av uppgift som ska köras. Kan vara INSTRUCTION_FINETUNE (standard), CHAT_COMPLETION, eller CONTINUED_PRETRAIN.
eval_data_path Str Fjärrplatsen för dina utvärderingsdata (om det finns några). Måste följa samma format som train_data_path.
eval_prompts Lista[str] En lista över promptsträngar för att generera svar under utvärderingen. Standardvärdet är None (generera inte prompter). Resultaten loggas till experimentet varje gång modellen är kontrollpunkt. Generationer sker vid varje modellkontrollpunkt med följande generationsparametrar: max_new_tokens: 100, temperature: 1, top_k: 50, top_p: 0.95, . do_sample: true
custom_weights_path Str Fjärrplatsen för en anpassad modellkontrollpunkt för träning. Standardvärdet är None, vilket innebär att körningen startar från den valda modellens ursprungliga förtränad vikt. Om anpassade vikter anges används dessa vikter i stället för modellens ursprungliga förtränad vikt. Dessa vikter måste vara en kontrollpunkt för Composer och måste matcha arkitekturen för den model angivna. Se Build on custom model weights (Skapa på anpassade modellvikter)
training_duration Str Den totala varaktigheten för körningen. Standardvärdet är en epok eller 1ep. Kan anges i epoker (10ep) eller token (1000000tok).
learning_rate Str Inlärningsfrekvensen för modellträning. För alla andra modeller än Llama 3.1 405B Instruct är 5e-7standardinlärningshastigheten . För Llama 3.1 405B Instruct är 1.0e-5standardinlärningsfrekvensen . Optimeraren är DecoupledLionW med betaversioner på 0,99 och 0,95 och ingen vikt förfall. Schemaläggaren för inlärningsfrekvens är LinearWithWarmupSchedule med en uppvärmning på 2 % av den totala utbildningsvaraktigheten och en slutlig inlärningsfrekvensmultiplikator på 0.
context_length Str Den maximala sekvenslängden för ett dataexempel. Detta används för att trunkera data som är för långa och för att paketera kortare sekvenser tillsammans för effektivitet.

Standardvärdet är 8 192 token eller den maximala kontextlängden för den angivna modellen, beroende på vilket som är lägre. Du kan använda den här parametern för att konfigurera kontextlängden, men det går inte att konfigurera utöver varje modells maximala kontextlängd. Se Modeller som stöds för den maximala kontextlängden som stöds för varje modell.
validate_inputs Booleskt Om du vill verifiera åtkomsten till indatasökvägar innan du skickar träningsjobbet. Standard är True.

Bygga på anpassade modellvikter

Grundmodell Finjustering har stöd för att lägga till anpassade vikter med hjälp av den valfria parametern custom_weights_path för att träna och anpassa en modell.

Kom igång genom att ange custom_weights_path sökvägen för kontrollpunkten Composer från en tidigare träningskörning. Kontrollpunktssökvägar finns på fliken Artefakter i en tidigare MLflow-körning. Namnet på kontrollpunktsmappen motsvarar batchen och epoken för en viss ögonblicksbild, till exempel ep29-ba30/.

Fliken Artefakter för en tidigare MLflow-körning

  • Ange kontrollpunkten Composer för att ange den senaste kontrollpunkten från en tidigare körning custom_weights_path . Exempel: custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink
  • Ange en tidigare kontrollpunkt genom att ange custom_weights_path en sökväg till en mapp som innehåller .distcp filer som motsvarar den önskade kontrollpunkten, till exempel custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#.

Uppdatera sedan parametern model så att den matchar basmodellen för den kontrollpunkt som du skickade till custom_weights_path.

I följande exempel ift-meta-llama-3-1-70b-instruct-ohugkq är en tidigare körning som finjusterar meta-llama/Meta-Llama-3.1-70B. Om du vill finjustera den senaste kontrollpunkten från ift-meta-llama-3-1-70b-instruct-ohugkqanger du variablerna model och custom_weights_path enligt följande:

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

)

Se Konfigurera en träningskörning för att konfigurera andra parametrar i din finjusteringskörning.

Hämta kluster-ID

Så här hämtar du kluster-ID:t:

  1. I det vänstra navigeringsfältet på Databricks-arbetsytan klickar du på Beräkning.

  2. I tabellen klickar du på namnet på klustret.

  3. Klicka Knappen Mer i det övre högra hörnet och välj Visa JSON i den nedrullningsbara menyn.

  4. Kluster-JSON-filen visas. Kopiera kluster-ID:t, som är den första raden i filen.

    kluster-ID

Hämta status för en körning

Du kan spåra förloppet för en körning med hjälp av sidan Experiment i Databricks-användargränssnittet eller med hjälp av API-kommandot get_events(). Mer information finns i Visa, hantera och analysera grundläggande modell Finjusteringskörningar.

Exempel på utdata från get_events():

Använda API för att hämta körningsstatus

Exempel på körningsinformation på sidan Experiment:

Hämta körningsstatus från experimentgränssnittet

Nästa steg

När träningskörningen är klar kan du granska mått i MLflow och distribuera din modell för slutsatsdragning. Se steg 5 till och med 7 i Självstudie: Skapa och distribuera en grundmodell Finjusteringskörning.

Se instruktionens finjustering: Den namngivna demoanteckningsboken För entitetsigenkänning finns ett exempel på finjustering av instruktioner som går igenom dataförberedelser, finjustering av träningskörningskonfiguration och distribution.

Notebook-exempel

Följande notebook-fil visar ett exempel på hur du genererar syntetiska data med hjälp av Meta Llama 3.1 405B Instruct-modellen och använder dessa data för att finjustera en modell:

Generera syntetiska data med hjälp av Llama 3.1 405B Instruct Notebook

Hämta notebook-fil

Ytterligare resurser