Sdílet prostřednictvím


Vytvoření trénovacího spuštění pomocí rozhraní API pro vyladění základního modelu

Důležité

Tato funkce je ve verzi Public Preview v následujících oblastech: centralus, eastus, eastus2, northcentralusa westus.

Tento článek popisuje, jak vytvořit a nakonfigurovat trénovací běh pomocí rozhraní API pro vyladění základního modelu (nyní součástí rozhraní API Pro trénování modelů AI) a popisuje všechny parametry použité při volání rozhraní API. Spuštění můžete vytvořit také pomocí uživatelského rozhraní. Pokyny najdete v tématu Vytvoření trénovacího spuštění pomocí uživatelského rozhraní pro vyladění základního modelu.

Požadavky

Viz Požadavky.

Vytvoření trénovacího spuštění

K programovému vytvoření trénovacích běhů použijte create() funkci. Tato funkce trénuje model na poskytnuté datové sadě a převede konečný kontrolní bod Composer na kontrolní bod naformátovaný hugging face pro odvozování.

Požadované vstupy jsou model, který chcete trénovat, umístění trénovací datové sady a kde se má model zaregistrovat. Existují také volitelné parametry, které umožňují provádět vyhodnocení a měnit hyperparametry spuštění.

Po dokončení spuštění se uloží dokončené spuštění a konečný kontrolní bod, model se naklonuje a tento klon se zaregistruje do katalogu Unity jako verze modelu pro odvozování.

Model z dokončeného spuštění, ne naklonovaná verze modelu v Katalogu Unity a jeho Autor a Hugging Face kontrolní body se ukládají do MLflow. Kontrolní body Composer lze použít pro pokračování v vyladění úkolů.

Podrobnosti o argumentech pro funkci najdete v tématu create().

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
)

Konfigurace trénovacího spuštění

Následující tabulka shrnuje parametry funkce foundation_model.create() .

Parametr Požaduje se Type Description
model linka Str Název modelu, který se má použít. Viz Podporované modely.
train_data_path linka Str Umístění trénovacích dat Může se jednat o umístění v katalogu Unity (<catalog>.<schema>.<table> nebo dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl) nebo datové sadě HuggingFace.

Pro INSTRUCTION_FINETUNEdata by měla být naformátována každý řádek obsahující a promptresponse pole.

Pro CONTINUED_PRETRAIN, to je složka .txt souborů. Viz Příprava dat pro jemné ladění modelu pro akceptované formáty dat a doporučenou velikost dat pro trénování modelu pro doporučení velikosti dat.
register_to linka Str Katalog a schéma katalogu Unity ( nebo <catalog>.<schema>) ,<catalog>.<schema>.<custom-name> kde je model registrován po trénování pro snadné nasazení. Pokud custom-name není zadaný, toto výchozí nastavení je název spuštění.
data_prep_cluster_id Str ID clusteru, které se má použít ke zpracování dat Sparku. To se vyžaduje pro úlohy trénování pod dohledem, ve kterých jsou trénovací data v tabulce Delta. Informace o tom, jak najít ID clusteru, najdete v tématu Získání ID clusteru.
experiment_path Str Cesta k experimentu MLflow, kde se uloží výstup trénovacího spuštění (metriky a kontrolní body). Výchozí hodnota je název spuštění v osobním pracovním prostoru uživatele (tj. /Users/<username>/<run_name>).
task_type Str Typ úlohy, která se má spustit. Může být CHAT_COMPLETION (výchozí), CONTINUED_PRETRAINnebo INSTRUCTION_FINETUNE.
eval_data_path Str Vzdálené umístění zkušebních dat (pokud existuje). Musí se řídit stejným formátem jako train_data_path.
eval_prompts List[str] Seznam řetězců výzev k vygenerování odpovědí během vyhodnocení Výchozí hodnota je None (nevygenerujte výzvy). Výsledky se do experimentu zaprotokolují při každém vytvoření kontrolního bodu modelu. Generace probíhají v každém kontrolním bodu modelu s následujícími parametry generování: max_new_tokens: 100, temperature: 1, top_k: 50, top_p: 0.95, . do_sample: true
custom_weights_path Str Vzdálené umístění kontrolního bodu vlastního modelu pro trénování. Výchozí hodnota je , což znamená None, že spuštění začíná od původních předem natrénovaných hmotností zvoleného modelu. Pokud jsou k dispozici vlastní váhy, použijí se tyto váhy místo původních předtrénovaných hmotností modelu. Tyto váhy musí být kontrolním bodem Composer a musí odpovídat architektuře model zadané hodnoty. Viz Build on custom model weights
training_duration Str Celková doba trvání spuštění Výchozí hodnota je jedna epocha nebo 1ep. Lze zadat v epochách (10ep) nebo tokenech (1000000tok).
learning_rate Str Rychlost výuky pro trénování modelu. Pro všechny jiné modely než Llama 3.1 405B Pokyn, výchozí rychlost učení je 5e-7. Pro Llama 3.1 405B Pokyn, výchozí rychlost učení je 1.0e-5. Optimalizátor je OddělenýLionW s beta verzemi 0,99 a 0,95 a bez snížení hmotnosti. Plánovač rychlosti učení je LinearWithWarmupSchedule s rozcvičením 2 % celkové doby trénování a násobitelem konečné rychlosti učení 0.
context_length Str Maximální délka sekvence vzorku dat. Používá se ke zkrácení všech dat, která jsou příliš dlouhá, a k zabalení kratších sekvencí společně za účelem efektivity.

Výchozí hodnota je 8192 tokenů nebo maximální délka kontextu pro zadaný model podle toho, co je nižší. Tento parametr můžete použít ke konfiguraci délky kontextu, ale konfigurace nad rámec maximální délky kontextu každého modelu se nepodporuje. Maximální podporovanou délku kontextu jednotlivých modelů najdete v podporovaných modelech .
validate_inputs Logická hodnota Zda před odesláním úlohy trénování ověříte přístup ke vstupním cestám. Výchozí hodnota je True.

Sestavování na váze vlastních modelů

Vyladění základního modelu podporuje přidání vlastních hmotností pomocí volitelného parametru custom_weights_path pro trénování a přizpůsobení modelu.

Začněte tím, že nastavíte custom_weights_path cestu kontrolního bodu Composer z předchozího trénovacího spuštění. Cesty kontrolních bodů najdete na kartě Artefakty předchozího spuštění MLflow. Název složky kontrolního bodu odpovídá dávce a epochě konkrétního snímku, například ep29-ba30/.

Karta Artefakty pro předchozí spuštění MLflow

  • Pokud chcete poskytnout nejnovější kontrolní bod z předchozího spuštění, nastavte custom_weights_path na kontrolní bod Composer. Například custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink.
  • Pokud chcete poskytnout dřívější kontrolní bod, nastavte custom_weights_path cestu ke složce obsahující .distcp soubory odpovídající požadovanému kontrolnímu bodu, například custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#.

Dále aktualizujte model parametr tak, aby odpovídal základnímu modelu kontrolního bodu, který jste předali custom_weights_path.

V následujícím příkladu ift-meta-llama-3-1-70b-instruct-ohugkq je předchozí spuštění, které jemně-tunes meta-llama/Meta-Llama-3.1-70B. Pokud chcete vyladit nejnovější kontrolní bod, ift-meta-llama-3-1-70b-instruct-ohugkqnastavte proměnné modelcustom_weights_path následujícím způsobem:

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

)

Viz Konfigurace trénovacího běhu pro konfiguraci dalších parametrů v vyladění spuštění.

Získání ID clusteru

Načtení ID clusteru:

  1. V levém navigačním panelu pracovního prostoru Databricks klikněte na Výpočetní prostředky.

  2. V tabulce klikněte na název clusteru.

  3. Klikněte Tlačítko Další v pravém horním rohu a v rozevírací nabídce vyberte Zobrazit JSON .

  4. Zobrazí se soubor JSON clusteru. Zkopírujte ID clusteru, což je první řádek v souboru.

    ID clusteru

Získání stavu spuštění

Průběh spuštění můžete sledovat pomocí stránky Experiment v uživatelském rozhraní Databricks nebo pomocí příkazu get_events()rozhraní API . Podrobnosti najdete v tématu Zobrazení, správa a analýza spuštění jemného ladění základního modelu.

Příklad výstupu z get_events():

Získání stavu spuštění pomocí rozhraní API

Ukázkové podrobnosti o spuštění na stránce Experiment:

Získání stavu spuštění z uživatelského rozhraní experimentů

Další kroky

Po dokončení trénovacího spuštění můžete zkontrolovat metriky v MLflow a nasadit model pro odvozování. Projděte si kroky 5 až 7 kurzu: Vytvoření a nasazení spuštění ladění základního modelu.

Podívejte se na podrobné ladění instrukcí: Pojmenovaný poznámkový blok ukázky rozpoznávání entit pro příklad podrobného ladění instrukcí, který vás provede přípravou dat, vyladěním konfigurace a nasazením trénovacího spuštění.

Příklad poznámkového bloku

Následující poznámkový blok ukazuje příklad generování syntetických dat pomocí Meta Llama 3.1 405B Pokyn modelu a použití těchto dat k vyladění modelu:

Generování syntetických dat pomocí poznámkového bloku s pokyny k Llama 3.1 405B

Získat poznámkový blok

Další materiály