Sdílet prostřednictvím


Kurz: Vývoj modelů na cloudové pracovní stanici

Naučte se vyvíjet trénovací skript s poznámkovým blokem na cloudové pracovní stanici Azure Machine Learning. Tento kurz popisuje základy, které potřebujete, abyste mohli začít:

  • Nastavte a nakonfigurujte cloudovou pracovní stanici. Vaše cloudová pracovní stanice využívá výpočetní instanci služby Azure Machine Learning, která je předem nakonfigurovaná s prostředími pro podporu různých potřeb vývoje modelů.
  • Používejte cloudová vývojová prostředí.
  • Pomocí MLflow můžete sledovat metriky modelu, a to vše v poznámkovém bloku.

Požadavky

Pokud chcete používat Azure Machine Learning, potřebujete pracovní prostor. Pokud ho nemáte, dokončete vytváření prostředků, které potřebujete, abyste mohli začít vytvářet pracovní prostor a získat další informace o jeho používání.

Důležité

Pokud je váš pracovní prostor Azure Machine Learning nakonfigurovaný se spravovanou virtuální sítí, možná budete muset přidat odchozí pravidla, která umožní přístup k veřejným úložištím balíčků Pythonu. Další informace najdete v tématu Scénář: Přístup k veřejným balíčkům strojového učení.

Začínáme s výpočetními prostředky

Oddíl Compute ve vašem pracovním prostoru umožňuje vytvářet výpočetní prostředky. Výpočetní instance je cloudová pracovní stanice plně spravovaná službou Azure Machine Learning. Tato série kurzů používá výpočetní instanci. Můžete ho také použít ke spuštění vlastního kódu a k vývoji a testování modelů.

  1. Přihlaste se k studio Azure Machine Learning.
  2. Vyberte pracovní prostor, pokud ještě není otevřený.
  3. V levém navigačním panelu vyberte Compute.
  4. Pokud nemáte výpočetní instanci, uprostřed obrazovky se zobrazí Nová . Vyberte Nový a vyplňte formulář. Můžete použít všechny výchozí hodnoty.
  5. Pokud máte výpočetní instanci, vyberte ji ze seznamu. Pokud je zastavený, vyberte Spustit.

Otevření editoru Visual Studio Code (VS Code)

Jakmile máte spuštěnou výpočetní instanci, můžete k ní přistupovat různými způsoby. Tento kurz ukazuje použití výpočetní instance z editoru VS Code. VS Code poskytuje úplné integrované vývojové prostředí (IDE) s výkonem prostředků Azure Machine Learning.

V seznamu výpočetních instancí vyberte odkaz VS Code (Web) nebo VS Code (Desktop) pro výpočetní instanci, kterou chcete použít. Pokud zvolíte VS Code (Desktop), může se zobrazit automaticky otevírané okno s dotazem, jestli chcete aplikaci otevřít.

Snímek obrazovky ukazuje odkazy na spuštění nástroje VS Code (web) nebo (Desktop).

Tato instance VS Code je připojená k vaší výpočetní instanci a systému souborů pracovního prostoru. I když ho otevřete na ploše, soubory, které vidíte, jsou soubory ve vašem pracovním prostoru.

Nastavení nového prostředí pro vytváření prototypů (volitelné)

Abyste mohli skript spustit, musíte pracovat v prostředí nakonfigurované se závislostmi a knihovnami, které kód očekává. Tato část vám pomůže vytvořit prostředí přizpůsobené vašemu kódu. K vytvoření nového jádra Jupyter, ke kterému se váš poznámkový blok připojuje, použijete soubor YAML, který definuje závislosti.

  • Nahrajte soubor.

    Soubory, které nahrajete, se ukládají do sdílené složky Azure a tyto soubory se připojují ke každé výpočetní instanci a sdílí se v rámci pracovního prostoru.

    1. Stáhněte si tento soubor prostředí conda, workstation_env.yml do počítače pomocí tlačítka Stáhnout nezpracovaný soubor v pravém horním rohu.

    2. Přetáhněte soubor z počítače do okna VS Code. Soubor se nahraje do vašeho pracovního prostoru.

    3. Přesuňte soubor do složky uživatelského jména.

      Snímek obrazovky ukazuje, jak nahrát soubor.

    4. Vyberte tento soubor, abyste ho zobrazili, a podívejte se, jaké závislosti určuje. Zobrazí se obsah podobný tomuto:

    name: workstation_env
    # This file serves as an example - you can update packages or versions to fit your use case
    dependencies:
      - python=3.8
      - pip=21.2.4
      - scikit-learn=0.24.2
      - scipy=1.7.1
      - pandas>=1.1,<1.2
      - pip:
        - mlflow-skinny 
        - azureml-mlflow
        - psutil>=5.8,<5.9
        - ipykernel~=6.0
        - matplotlib
    
  • Vytvořte jádro.

    Teď pomocí terminálu vytvořte nové jádro Jupyter založené na souboru workstation_env.yml .

    1. V horním řádku nabídek vyberte Terminál > nový terminál.

      Snímek obrazovky s otevřeným nástrojem terminálu na panelu nástrojů poznámkového bloku

    2. Zobrazte si aktuální prostředí Conda. Aktivní prostředí je označené znakem *.

      conda env list
      
    3. cd do složky, do které jste nahráli workstation_env.yml soubor. Pokud jste ho například nahráli do složky uživatele:

      cd Users/myusername
      
    4. Ujistěte se, že je workstation_env.yml v této složce.

      ls
      
    5. Vytvořte prostředí na základě zadaného souboru conda. Sestavení tohoto prostředí trvá několik minut.

      conda env create -f workstation_env.yml
      
    6. Aktivujte nové prostředí.

      conda activate workstation_env
      

      Poznámka:

      Pokud se zobrazí CommandNotFoundError, spusťte ho podle pokynů conda init bash, zavřete terminál a otevřete nový. Pak zkuste conda activate workstation_env příkaz zopakovat.

    7. Ověřte, že je správné prostředí aktivní, a znovu vyhledejte prostředí označené znakem *.

      conda env list
      
    8. Vytvořte nové jádro Jupyter založené na aktivním prostředí.

      python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env" 
      
    9. Zavřete okno terminálu.

Teď máte nové jádro. Dále otevřete poznámkový blok a použijete toto jádro.

Vytvoření poznámkového bloku

  1. V horním řádku nabídek vyberte Soubor > nový soubor.
  2. Pojmenujte nový soubor develop-tutorial.ipynb (nebo zadejte preferovaný název). Ujistěte se, že používáte příponu .ipynb .

Nastavení jádra

  1. V pravém horním rohu vyberte Vybrat jádro.
  2. Vyberte výpočetní instanci Azure ML (computeinstance-name).
  3. Vyberte jádro, které jste vytvořili, Tutorial Workstation Env. Pokud ho nevidíte, vyberte nástroj Aktualizovat v pravém horním rohu.

Vývoj trénovacího skriptu

V této části vytvoříte trénovací skript Pythonu, který předpovídá výchozí platby platební kartou pomocí připravených testovacích a trénovacích datových sad z datové sady UCI.

Tento kód se používá sklearn pro trénování a MLflow pro protokolování metrik.

  1. Začněte kódem, který importuje balíčky a knihovny, které použijete v trénovacím skriptu.

    import os
    import argparse
    import pandas as pd
    import mlflow
    import mlflow.sklearn
    from sklearn.ensemble import GradientBoostingClassifier
    from sklearn.metrics import classification_report
    from sklearn.model_selection import train_test_split
  2. Dále načtěte a zpracujte data pro tento experiment. V tomto kurzu si přečtete data ze souboru na internetu.

    # load the data
    credit_df = pd.read_csv(
        "https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv",
        header=1,
        index_col=0,
    )
    
    train_df, test_df = train_test_split(
        credit_df,
        test_size=0.25,
    )
  3. Příprava dat na trénování:

    # Extracting the label column
    y_train = train_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_train = train_df.values
    
    # Extracting the label column
    y_test = test_df.pop("default payment next month")
    
    # convert the dataframe values to array
    X_test = test_df.values
  4. Přidejte kód pro zahájení automatickéhologování pomocí MLflow, abyste mohli sledovat metriky a výsledky. S iterativní povahou vývoje MLflow modelů vám pomůže protokolovat parametry a výsledky modelu. Vraťte se k těmto spuštěním a porovnejte a zjistěte, jak model funguje. Protokoly také poskytují kontext, kdy jste připraveni přejít z fáze vývoje do fáze trénování pracovních postupů v rámci služby Azure Machine Learning.

    # set name for logging
    mlflow.set_experiment("Develop on cloud tutorial")
    # enable autologging with MLflow
    mlflow.sklearn.autolog()
  5. Trénování modelu

    # Train Gradient Boosting Classifier
    print(f"Training with data of shape {X_train.shape}")
    
    mlflow.start_run()
    clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
    clf.fit(X_train, y_train)
    
    y_pred = clf.predict(X_test)
    
    print(classification_report(y_test, y_pred))
    # Stop logging for this model
    mlflow.end_run()

    Poznámka:

    Upozornění mlflow můžete ignorovat. Pořád získáte všechny výsledky, které potřebujete sledovat.

Iterovat

Teď, když máte výsledky modelu, můžete něco změnit a zkusit to znovu. Zkuste například použít jinou techniku klasifikátoru:

# Train  AdaBoost Classifier
from sklearn.ensemble import AdaBoostClassifier

print(f"Training with data of shape {X_train.shape}")

mlflow.start_run()
ada = AdaBoostClassifier()

ada.fit(X_train, y_train)

y_pred = ada.predict(X_test)

print(classification_report(y_test, y_pred))
# Stop logging for this model
mlflow.end_run()

Poznámka:

Upozornění mlflow můžete ignorovat. Pořád získáte všechny výsledky, které potřebujete sledovat.

Prozkoumání výsledků

Teď, když jste vyzkoušeli dva různé modely, využijte výsledky sledované MLFfow a rozhodněte se, který model je lepší. Můžete odkazovat na metriky, jako je přesnost nebo jiné indikátory, které jsou pro vaše scénáře nejdůležitější. Na tyto výsledky se můžete podívat podrobněji, když se podíváte na úlohy vytvořené .MLflow

  1. Vraťte se do pracovního prostoru v studio Azure Machine Learning.

  2. V levém navigačním panelu vyberte Úlohy.

    Snímek obrazovky ukazuje, jak vybrat úlohy v navigaci.

  3. Vyberte odkaz pro kurz Vývoj v cloudu.

  4. Zobrazí se dvě různé úlohy, jedna pro každý z modelů, které jste vyzkoušeli. Tyto názvy se automaticky vygenerují. Když najedete myší na název, použijte nástroj tužky vedle názvu, pokud ho chcete přejmenovat.

  5. Vyberte odkaz pro první úlohu. Název se zobrazí v horní části. Můžete ho také přejmenovat pomocí nástroje tužky.

  6. Na stránce se zobrazují podrobnosti úlohy, jako jsou vlastnosti, výstupy, značky a parametry. V části Značky uvidíte estimator_name, který popisuje typ modelu.

  7. Výběrem karty Metriky zobrazíte metriky, které byly protokolovány MLflow. (Očekáváte, že se výsledky budou lišit, protože máte jinou trénovací sadu.)

    Snímek obrazovky znázorňující metriky pro úlohu

  8. Výběrem karty Obrázky zobrazíte obrázky vygenerované nástrojem MLflow.

    Snímek obrazovky znázorňující obrázky pro úlohu

  9. Vraťte se zpět a prohlédněte si metriky a obrázky pro druhý model.

Vytvoření skriptu Pythonu

Teď vytvořte skript Pythonu z poznámkového bloku pro trénování modelu.

  1. V okně VS Code klikněte pravým tlačítkem na název souboru poznámkového bloku a vyberte Importovat poznámkový blok do skriptu.

  2. Pomocí nabídky Uložit soubor > uložte tento nový soubor skriptu. Zavolejte train.py.

  3. Prohlédněte si tento soubor a odstraňte kód, který v trénovacím skriptu nechcete. Například ponechte kód modelu, který chcete použít, a odstraňte kód pro model, který nechcete.

    • Ujistěte se, že máte kód, který spouští automatickélogování (mlflow.sklearn.autolog()).
    • Když skript Pythonu spustíte interaktivně (jak tady děláte), můžete ponechat řádek, který definuje název experimentu (mlflow.set_experiment("Develop on cloud tutorial")). Nebo ho pojmenujte jinak, abyste ho viděli jako jinou položku v části Úlohy . Když ale připravíte skript pro trénovací úlohu, tento řádek se nepoužije a měl by se vynechat – definice úlohy obsahuje název experimentu.
    • Při trénování jednoho modelu nejsou čáry pro zahájení a ukončení běhumlflow.start_run() (a mlflow.end_run()) také nezbytné (nebudou mít žádný vliv), ale pokud chcete, můžete je nechat.
  4. Až budete s úpravami hotovi, soubor uložte.

Teď máte skript Pythonu, který můžete použít k trénování preferovaného modelu.

Spuštění skriptu Pythonu

Prozatím tento kód spouštíte ve výpočetní instanci, což je vývojové prostředí služby Azure Machine Learning. Kurz: Trénování modelu vám ukáže, jak spustit trénovací skript škálovatelným způsobem na výkonnějších výpočetních prostředcích.

  1. Jako verzi Pythonu (workstations_env) vyberte prostředí, které jste vytvořili dříve v tomto kurzu. V pravém dolním rohu poznámkového bloku uvidíte název prostředí. Vyberte ho a pak vyberte prostředí uprostřed obrazovky.

    Snímek obrazovky znázorňující výběr nového prostředí

  2. Teď spusťte skript Pythonu. Použijte nástroj Spustit soubor Pythonu v pravém horním rohu.

    Snímek obrazovky ukazuje nástroj Spustit soubor Pythonu v pravém horním rohu obrazovky.

Poznámka:

Upozornění mlflow můžete ignorovat. Stále budete dostávat všechny metriky a obrázky z automatickéhologování.

Prozkoumání výsledků skriptu

Vraťte se do úloh v pracovním prostoru v studio Azure Machine Learning a podívejte se na výsledky trénovacího skriptu. Mějte na paměti, že se trénovací data mění s jednotlivými rozděleními, takže se výsledky mezi spuštěními liší.

Vyčištění prostředků

Pokud chcete pokračovat v dalších kurzech, přejděte k dalším krokům.

Zastavení výpočetní instance

Pokud ji teď nebudete používat, zastavte výpočetní instanci:

  1. V sadě Studio v levé navigační oblasti vyberte Compute.
  2. Na horních kartách vyberte Výpočetní instance.
  3. V seznamu vyberte výpočetní instanci.
  4. Na horním panelu nástrojů vyberte Zastavit.

Odstranění všech prostředků

Důležité

Prostředky, které jste vytvořili, se dají použít jako předpoklady pro další kurzy a články s postupy pro Azure Machine Learning.

Pokud nemáte v úmyslu používat žádné prostředky, které jste vytvořili, odstraňte je, abyste za ně neúčtovaly žádné poplatky:

  1. Na webu Azure Portal do vyhledávacího pole zadejte skupiny prostředků a vyberte je z výsledků.

  2. V seznamu vyberte skupinu prostředků, kterou jste vytvořili.

  3. Na stránce Přehled vyberte Odstranit skupinu prostředků.

    Snímek obrazovky s výběrem pro odstranění skupiny prostředků na webu Azure Portal

  4. Zadejte název skupiny prostředků. Poté vyberte Odstranit.

Další kroky

Přečtěte si další informace:

V tomto kurzu jste si ukázali počáteční kroky vytvoření modelu, vytváření prototypů na stejném počítači, ve kterém se nachází kód. V případě produkčního trénování se naučíte používat tento trénovací skript pro výkonnější vzdálené výpočetní prostředky: