Samouczek: tworzenie modeli na stacji roboczej w chmurze
Dowiedz się, jak opracować skrypt szkoleniowy przy użyciu notesu na stacji roboczej w chmurze Edukacja azure Machine. W tym samouczku omówiono podstawowe informacje potrzebne do rozpoczęcia pracy:
- Konfigurowanie i konfigurowanie stacji roboczej w chmurze. Twoja stacja robocza w chmurze jest obsługiwana przez wystąpienie obliczeniowe usługi Azure Machine Edukacja, które jest wstępnie skonfigurowane ze środowiskami do obsługi różnych potrzeb związanych z tworzeniem modeli.
- Używaj środowisk deweloperskich opartych na chmurze.
- Użyj biblioteki MLflow, aby śledzić metryki modelu — wszystko z poziomu notesu.
Wymagania wstępne
Aby korzystać z usługi Azure Machine Edukacja, najpierw potrzebujesz obszaru roboczego. Jeśli go nie masz, ukończ tworzenie zasobów, aby rozpocząć tworzenie obszaru roboczego i dowiedz się więcej na temat korzystania z niego.
Rozpoczynanie pracy z notesami
Sekcja Notesy w obszarze roboczym to dobre miejsce do rozpoczęcia nauki o usłudze Azure Machine Edukacja i jego możliwościach. W tym miejscu możesz nawiązać połączenie z zasobami obliczeniowymi, pracować z terminalem oraz edytować i uruchamiać notesy Jupyter Notebook oraz skrypty.
Zaloguj się do usługi Azure Machine Edukacja Studio.
Wybierz obszar roboczy, jeśli nie został jeszcze otwarty.
W obszarze nawigacji po lewej stronie wybierz pozycję Notesy.
Jeśli nie masz wystąpienia obliczeniowego, zobaczysz pozycję Tworzenie zasobów obliczeniowych na środku ekranu. Wybierz pozycję Utwórz obliczenia i wypełnij formularz. Możesz użyć wszystkich wartości domyślnych. (Jeśli masz już wystąpienie obliczeniowe, zobaczysz zamiast tegoTerminal w tym miejscu. W dalszej części tego samouczka użyjesz terminala ).
Konfigurowanie nowego środowiska do tworzenia prototypów (opcjonalnie)
Aby skrypt został uruchomiony, należy pracować w środowisku skonfigurowanym z zależnościami i bibliotekami oczekiwanymi przez kod. Ta sekcja ułatwia tworzenie środowiska dostosowanego do kodu. Aby utworzyć nowe jądro Jupyter, z którym nawiązuje połączenie notes, użyjesz pliku YAML definiującego zależności.
Przekaż plik.
Przekazane pliki są przechowywane w udziale plików platformy Azure, a te pliki są instalowane w każdym wystąpieniu obliczeniowym i udostępniane w obszarze roboczym.
- Pobierz ten plik środowiska conda, workstation_env.yml na komputer, używając przycisku Pobierz nieprzetworzonego pliku w prawym górnym rogu.
Wybierz pozycję Dodaj pliki, a następnie wybierz pozycję Przekaż pliki, aby przekazać je do obszaru roboczego.
Wybierz pozycję Przeglądaj i wybierz pliki.
Wybierz pobrany plik workstation_env.yml .
Wybierz opcję Prześlij.
Zobaczysz plik workstation_env.yml w folderze nazwy użytkownika na karcie Pliki . Wybierz ten plik, aby wyświetlić podgląd i zobaczyć, jakie zależności określa. Zobaczysz zawartość podobną do następującej:
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
Utwórz jądro.
Teraz użyj terminalu usługi Azure Machine Edukacja, aby utworzyć nowe jądro Jupyter na podstawie pliku workstation_env.yml.
Wybierz pozycję Terminal , aby otworzyć okno terminalu. Możesz również otworzyć terminal na pasku poleceń po lewej stronie:
Jeśli wystąpienie obliczeniowe zostanie zatrzymane, wybierz pozycję Uruchom obliczenia i zaczekaj na jego uruchomienie.
Po uruchomieniu obliczeń w terminalu zostanie wyświetlony komunikat powitalny i możesz rozpocząć wpisywanie poleceń.
Wyświetl bieżące środowiska conda. Aktywne środowisko jest oznaczone znakiem *.
conda env list
Jeśli na potrzeby tego samouczka utworzono podfolder,
cd
przejdź teraz do tego folderu.Utwórz środowisko na podstawie dostarczonego pliku conda. Skompilowanie tego środowiska zajmuje kilka minut.
conda env create -f workstation_env.yml
Aktywuj nowe środowisko.
conda activate workstation_env
Sprawdź, czy prawidłowe środowisko jest aktywne, ponownie wyszukując środowisko oznaczone znakiem *.
conda env list
Utwórz nowe jądro Jupyter na podstawie aktywnego środowiska.
python -m ipykernel install --user --name workstation_env --display-name "Tutorial Workstation Env"
Zamknij okno terminalu.
Masz teraz nowe jądro. Następnie otworzysz notes i użyjesz tego jądra.
Tworzenie notesu
Wybierz pozycję Dodaj pliki i wybierz pozycję Utwórz nowy plik.
Nadaj nowemu notesowi nazwę develop-tutorial.ipynb (lub wprowadź preferowaną nazwę).
Jeśli wystąpienie obliczeniowe zostanie zatrzymane, wybierz pozycję Uruchom obliczenia i zaczekaj na jego uruchomienie.
Zobaczysz, że notes jest połączony z domyślnym jądrem w prawym górnym rogu. Przejdź do korzystania z jądra Tutorial Workstation Env , jeśli utworzono jądro.
Opracowywanie skryptu szkoleniowego
W tej sekcji utworzysz skrypt szkoleniowy języka Python, który przewiduje domyślne płatności kart kredytowych przy użyciu przygotowanych zestawów danych testowych i szkoleniowych z zestawu danych UCI.
Ten kod służy sklearn
do trenowania i biblioteki MLflow do rejestrowania metryk.
Zacznij od kodu, który importuje pakiety i biblioteki, których będziesz używać w skry skrycie szkoleniowym.
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
Następnie załaduj i przetwórz dane dla tego eksperymentu. W tym samouczku odczytujesz dane z pliku w Internecie.
# 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, )
Przygotuj dane do szkolenia:
# 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
Dodaj kod, aby rozpocząć automatyczne rejestrowanie za pomocą
MLflow
polecenia , aby można było śledzić metryki i wyniki. Dzięki iteracyjnej charakterowi opracowywaniaMLflow
modelu pomaga rejestrować parametry i wyniki modelu. Wróć do tych przebiegów, aby porównać i zrozumieć, jak działa model. Dzienniki zapewniają również kontekst, gdy wszystko będzie gotowe do przejścia z fazy programowania do fazy trenowania przepływów pracy w usłudze Azure Machine Edukacja.# set name for logging mlflow.set_experiment("Develop on cloud tutorial") # enable autologging with MLflow mlflow.sklearn.autolog()
Trenowanie 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()
Uwaga
Możesz zignorować ostrzeżenia mlflow. Nadal będziesz otrzymywać wszystkie wyniki, które są śledzone.
Powtarzanie
Teraz, gdy masz wyniki modelu, możesz zmienić coś i spróbować ponownie. Na przykład wypróbuj inną technikę klasyfikatora:
# 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()
Uwaga
Możesz zignorować ostrzeżenia mlflow. Nadal będziesz otrzymywać wszystkie wyniki, które są śledzone.
Sprawdzanie wyników
Po wypróbowaniu dwóch różnych modeli użyj wyników śledzonych przez MLFfow
usługę , aby zdecydować, który model jest lepszy. Możesz odwoływać się do metryk, takich jak dokładność lub inne wskaźniki, które mają największe znaczenie dla Twoich scenariuszy. Więcej szczegółowych informacji na temat tych wyników można uzyskać, przeglądając zadania utworzone przez MLflow
program .
W obszarze nawigacji po lewej stronie wybierz pozycję Zadania.
Wybierz link do samouczka Dotyczącego tworzenia aplikacji w chmurze.
Istnieją dwa różne zadania, po jednym dla każdego z modeli, które próbowano wykonać. Te nazwy są generowane automatycznie. Po umieszczeniu wskaźnika myszy na nazwie użyj narzędzia ołówka obok nazwy, jeśli chcesz zmienić jego nazwę.
Wybierz link dla pierwszego zadania. Nazwa jest wyświetlana u góry. Możesz również zmienić jego nazwę w tym miejscu za pomocą narzędzia ołówka.
Na stronie przedstawiono szczegóły zadania, takie jak właściwości, dane wyjściowe, tagi i parametry. W obszarze Tagi zobaczysz estimator_name, która opisuje typ modelu.
Wybierz kartę Metryki , aby wyświetlić metryki zarejestrowane przez
MLflow
usługę . (Oczekujesz, że wyniki będą się różnić, ponieważ masz inny zestaw treningowy).Wybierz kartę Obrazy, aby wyświetlić obrazy wygenerowane przez
MLflow
program .Wróć i przejrzyj metryki i obrazy dla innego modelu.
Tworzenie skryptu w języku Python
Teraz utwórz skrypt języka Python na podstawie notesu na potrzeby trenowania modelu.
Na pasku narzędzi notesu wybierz menu.
Wybierz pozycję Eksportuj jako> Python.
Nadaj plikowi nazwę train.py.
Przejrzyj ten plik i usuń kod, którego nie chcesz użyć w skryfcie szkoleniowym. Na przykład zachowaj kod dla modelu, którego chcesz użyć, i usuń kod dla modelu, którego nie chcesz.
- Upewnij się, że zachowasz kod, który uruchamia automatyczne rejestrowanie (
mlflow.sklearn.autolog()
). - Możesz usunąć automatycznie wygenerowane komentarze i dodać więcej komentarzy.
- Po interaktywnym uruchomieniu skryptu języka Python (w terminalu lub notesie) można zachować wiersz definiujący nazwę eksperymentu (
mlflow.set_experiment("Develop on cloud tutorial")
). Możesz nawet podać inną nazwę, aby zobaczyć ją jako inny wpis w sekcji Zadania . Jednak gdy przygotujesz skrypt do zadania szkoleniowego, ten wiersz nie będzie działać i powinien zostać pominięty — definicja zadania zawiera nazwę eksperymentu. - Podczas trenowania pojedynczego modelu wiersze do uruchamiania i kończenia przebiegu (
mlflow.start_run()
imlflow.end_run()
) również nie są konieczne (nie będą miały żadnego efektu), ale mogą pozostać w lewo, jeśli chcesz.
- Upewnij się, że zachowasz kod, który uruchamia automatyczne rejestrowanie (
Po zakończeniu edycji zapisz plik.
Masz teraz skrypt języka Python do użycia na potrzeby trenowania preferowanego modelu.
Uruchamianie skryptu języka Python
Na razie uruchamiasz ten kod w wystąpieniu obliczeniowym, czyli środowisku deweloperskim usługi Azure Machine Edukacja. Samouczek: trenowanie modelu pokazuje, jak uruchomić skrypt szkoleniowy w bardziej skalowalny sposób na bardziej zaawansowane zasoby obliczeniowe.
Po lewej stronie wybierz pozycję Otwórz terminal , aby otworzyć okno terminalu.
Wyświetl bieżące środowiska conda. Aktywne środowisko jest oznaczone znakiem *.
conda env list
Jeśli utworzono nowe jądro, aktywuj je teraz:
conda activate workstation_env
Jeśli na potrzeby tego samouczka utworzono podfolder,
cd
przejdź teraz do tego folderu.Uruchom skrypt szkoleniowy.
python train.py
Uwaga
Możesz zignorować ostrzeżenia mlflow. Nadal będziesz pobierać wszystkie metryki i obrazy z automatycznego rejestrowania.
Sprawdzanie wyników skryptu
Wróć do obszaru Zadania , aby wyświetlić wyniki skryptu szkoleniowego. Należy pamiętać, że dane treningowe zmieniają się wraz z każdym podziałem, więc wyniki różnią się również między przebiegami.
Czyszczenie zasobów
Jeśli planujesz kontynuować korzystanie z innych samouczków, przejdź do sekcji Następne kroki.
Zatrzymywanie wystąpienia obliczeniowego
Jeśli nie zamierzasz go teraz używać, zatrzymaj wystąpienie obliczeniowe:
- W programie Studio w obszarze nawigacji po lewej stronie wybierz pozycję Obliczenia.
- Na pierwszych kartach wybierz pozycję Wystąpienia obliczeniowe
- Wybierz wystąpienie obliczeniowe na liście.
- Na górnym pasku narzędzi wybierz pozycję Zatrzymaj.
Usuwanie wszystkich zasobów
Ważne
Utworzone zasoby mogą być używane jako wymagania wstępne w innych samouczkach usługi Azure Machine Edukacja i artykułach z instrukcjami.
Jeśli nie planujesz korzystać z żadnych utworzonych zasobów, usuń je, aby nie ponosić żadnych opłat:
W witrynie Azure Portal na końcu z lewej strony wybierz pozycję Grupy zasobów.
Z listy wybierz utworzoną grupę zasobów.
Wybierz pozycję Usuń grupę zasobów.
Wpisz nazwę grupy zasobów. Następnie wybierz Usuń.
Następne kroki
Dowiedz się więcej na następujące tematy:
- Z artefaktów do modeli w MLflow
- Using Git with Azure Machine Learning (Używanie usługi Git z usługą Azure Machine Learning)
- Uruchamianie notesów Jupyter w obszarze roboczym
- Praca z terminalem wystąpienia obliczeniowego w obszarze roboczym
- Zarządzanie sesjami notesu i terminalu
W tym samouczku przedstawiono wczesne kroki tworzenia modelu, tworzenia prototypów na tej samej maszynie, na której znajduje się kod. Na potrzeby szkolenia produkcyjnego dowiedz się, jak używać tego skryptu szkoleniowego na bardziej zaawansowanych zasobach obliczeniowych zdalnych:
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla