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 Učení. 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 Azure Machine Učení, 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.

Předpoklady

Pokud chcete používat Učení Azure Machine, budete nejdřív potřebovat 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í.

Začínáme s poznámkovými bloky

Oddíl Poznámkové bloky ve vašem pracovním prostoru je dobrým místem, kde se můžete seznámit se službou Azure Machine Učení a jejími možnostmi. Tady se můžete připojit k výpočetním prostředkům, pracovat s terminálem a upravovat a spouštět poznámkové bloky a skripty Jupyter.

  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 Poznámkové bloky.

  4. Pokud nemáte výpočetní instanci, uprostřed obrazovky se zobrazí vytvoření výpočetních prostředků . Vyberte Vytvořit výpočetní prostředky a vyplňte formulář. Můžete použít všechny výchozí hodnoty. (Pokud už máte výpočetní instanci, zobrazí se místo tohoTerminál na místě. Terminál použijete později v tomto kurzu.)

    Screenshot shows how to create a compute instance.

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.
    1. Vyberte Přidat soubory a pak vyberte Nahrát soubory a nahrajte je do svého pracovního prostoru.

      Screenshot shows how to upload files to your workspace.

    2. Vyberte Procházet a vyberte soubory.

    3. Vyberte soubor workstation_env.yml , který jste stáhli.

    4. Vyberte Odeslat.

    Soubor workstation_env.yml uvidíte na kartě Soubory ve složce Soubory . 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 Azure Machine Učení vytvořte nové jádro Jupyter založené na souboru workstation_env.yml.

    1. Výběrem terminálu otevřete okno terminálu. Terminál můžete otevřít také z levého panelu příkazů:

      Screenshot shows open terminal tool in notebook toolbar.

    2. Pokud je výpočetní instance zastavená, vyberte Spustit výpočetní prostředky a počkejte, až bude spuštěný.

      Screenshot shows how to start compute if it's stopped.

    3. Po spuštění výpočetních prostředků se v terminálu zobrazí uvítací zpráva a můžete začít psát příkazy.

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

      conda env list
      
    5. Pokud jste pro tento kurz vytvořili podsložku, cd přejděte do této složky.

    6. 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
      
      
    7. Aktivujte nové prostředí.

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

      conda env list
      
    9. 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" 
      
    10. 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. Vyberte Přidat soubory a zvolte Vytvořit nový soubor.

    Screenshot: Create new file.

  2. Pojmenujte nový poznámkový blok develop-tutorial.ipynb (nebo zadejte preferovaný název).

  3. Pokud je výpočetní instance zastavená, vyberte Spustit výpočetní prostředky a počkejte, až bude spuštěný.

    Screenshot shows how to start compute if it's stopped.

  4. Uvidíte, že je poznámkový blok připojený k výchozímu jádru v pravém horním rohu. Pokud jste jádro vytvořili, přepněte na použití jádra Env pracovní stanice kurzu.

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 Učení Azure Machine.

    # 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. V levém navigačním panelu vyberte Úlohy.

    Screenshot shows how to select Jobs in the navigation.

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

  3. 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.

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

  5. 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.

  6. 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.)

    Screenshot shows metrics for a job.

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

    Screenshot shows images for a job.

  8. 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. Na panelu nástrojů poznámkového bloku vyberte nabídku.

  2. Vyberte Exportovat jako> Python.

    Screenshot shows exporting a Python file from the notebook.

  3. Pojmenujte soubor train.py.

  4. 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()).
    • Můžete chtít odstranit automaticky generované komentáře a přidat další vlastní komentáře.
    • Když skript Pythonu spustíte interaktivně (v terminálu nebo poznámkovém bloku), 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 nebude fungovat a měl by být vynechán – 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.
  5. 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 na výpočetní instanci, což je vaše vývojové prostředí Azure Machine Učení. 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. Na levé straně vyberte Otevřít terminál a otevřete okno terminálu.

    Screenshot shows how to open a terminal window.

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

    conda env list
    
  3. Pokud jste vytvořili nové jádro, aktivujte ho teď:

    conda activate workstation_env
    
  4. Pokud jste pro tento kurz vytvořili podsložku, cd přejděte do této složky.

  5. Spusťte trénovací skript.

    python train.py
    

Poznámka:

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

Prozkoumání výsledků skriptu

Vraťte se do úloh 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 postupy pro azure machine Učení články.

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. Úplně nalevo na webu Azure Portal vyberte Skupiny prostředků.

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

  3. Vyberte Odstranit skupinu prostředků.

    Screenshot of the selections to delete a resource group in the 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: