Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
Important
В этой статье содержатся сведения об использовании пакета SDK машинного обучения Azure версии 1. Пакет SDK версии 1 устарел с 31 марта 2025 г. Поддержка будет завершена 30 июня 2026 г. Вы можете установить и использовать пакет SDK версии 1 до этой даты. Существующие рабочие процессы, использующие пакет SDK версии 1, будут продолжать работать после даты окончания поддержки. Однако они могут быть подвержены рискам безопасности или критическим изменениям в случае изменений архитектуры в продукте.
Рекомендуется перейти на пакет SDK версии 2 до 30 июня 2026 г. Дополнительные сведения о пакете SDK версии 2 см. в статье "Что такое ИНТЕРФЕЙС командной строки Машинного обучения Azure" и пакет SDK для Python версии 2 исправочник по пакету SDK версии 2.
Пакет журналов Python по умолчанию и специализированные функции пакета SDK Python для Машинного обучения Azure позволяют вам записывать данные журналы в режиме реального времени. Вы можете вести журналы в локальной среде и отправлять их в свою рабочую область на портале.
Журналы помогают диагностировать ошибки и предупреждения, а также отслеживать метрики производительности, такие как параметры и производительность модели. Из этой статьи вы узнаете, как включить ведение журнала в следующих сценариях:
- запись метрик выполнения в журнал;
- сеансы интерактивного обучения;
- отправка заданий обучения с помощью ScriptRunConfig;
- встроенные параметры
loggingPython; - ведение журнала из дополнительных источников.
Tip
В этой статье демонстрируется, как обеспечить мониторинг для процесса обучения модели. Если вы заинтересованы в мониторинге использования ресурсов и событий из Машинное обучение Azure, таких как квоты, завершенные запуски обучения или завершенные развертывания моделей, см. Машинное обучение Azure мониторинга.
Типы данных
Вы можете вести журнал по нескольким типам данных, включая скалярные значения, списки, таблицы, изображения, каталоги и т. д. Дополнительные сведения и примеры кода на Python для разных типов данных см. на странице справки по классу Run.
Ведение журналов для метрик выполнения
Используйте следующие методы в API ведения журнала для влияния на визуализации метрик. Учитывайте ограничения служб для таких регистрируемых метрик.
| Зарегистрированное значение | Пример кода | Формат на портале |
|---|---|---|
| Массив числовых значений | run.log_list(name='Fibonacci', value=[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]) |
График для одной переменной |
| Регистрируйте одно числовое значение с одинаковым именем метрики многократно (например, из цикла for) | for i in tqdm(range(-10, 10)): run.log(name='Sigmoid', value=1 / (1 + np.exp(-i))) angle = i / 2.0 |
График для одной переменной |
| Повторно записывать строку с двумя числовыми столбцами | run.log_row(name='Cosine Wave', angle=angle, cos=np.cos(angle)) sines['angle'].append(angle) sines['sine'].append(np.sin(angle)) |
Графики для двух переменных |
| Таблица журнала с двумя числовыми столбцами | run.log_table(name='Sine Wave', value=sines) |
Графики для двух переменных |
| Изображение журнала | run.log_image(name='food', path='./breadpudding.jpg', plot=None, description='desert') |
Используйте этот метод, чтобы записать файл изображения или график matplotlib в выполнение. Эти изображения видимы и сопоставимы в журнале выполнения |
Ведение журнала с помощью MLflow
Мы рекомендуем регистрировать модели, метрики и артефакты с помощью MLflow, так как он является открытым исходным кодом и поддерживает локальный режим переносимости в облако. В следующей таблице и в примерах кода ниже показано, как использовать MLflow для регистрации метрик и артефактов из учебных запусков. Узнайте подробнее о методах ведения журналов MLflow и конструктивных шаблонах.
Обязательно установите в рабочей области пакеты PIP mlflow и azureml-mlflow.
pip install mlflow
pip install azureml-mlflow
Задайте универсальный код ресурса (URI) отслеживания MLflow, чтобы он указывал на серверную часть Машинного обучения Azure, чтобы гарантировать регистрацию метрик и артефактов в рабочей области.
from azureml.core import Workspace
import mlflow
from mlflow.tracking import MlflowClient
ws = Workspace.from_config()
mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())
mlflow.create_experiment("mlflow-experiment")
mlflow.set_experiment("mlflow-experiment")
mlflow_run = mlflow.start_run()
| Зарегистрированное значение | Пример кода | Notes |
|---|---|---|
| Регистрация числового значения (int или float) | mlflow.log_metric('my_metric', 1) |
|
| Регистрация логического значения | mlflow.log_metric('my_metric', 0) |
0 = False, 1 = True |
| Регистрация строки | mlflow.log_text('foo', 'my_string') |
Зарегистрировано как артефакт |
| Регистрация метрик NumPy или объектов образа PIL | mlflow.log_image(img, 'figure.png') |
|
| Файл диаграммы или изображения в журнале matplotlib | mlflow.log_figure(fig, "figure.png") |
Просмотр метрик выполнения с помощью пакета SDK
Метрики обученной модели можно просмотреть с помощью run.get_metrics().
from azureml.core import Run
run = Run.get_context()
run.log('metric-name', metric_value)
metrics = run.get_metrics()
# metrics is of type Dict[str, List[float]] mapping metric names
# to a list of the values for that metric in the given run.
metrics.get('metric-name')
# list of metrics in the order they were recorded
Вы также можете получить доступ к сведениям о выполнении с помощью MLflow, используя свойства данных и сведений об объекте выполнения. Дополнительные сведения см. в документации по объекту MLflow.entities.Run .
После завершения выполнения его можно получить с помощью MlflowClient().
from mlflow.tracking import MlflowClient
# Use MlFlow to retrieve the run that was just completed
client = MlflowClient()
finished_mlflow_run = MlflowClient().get_run(mlflow_run.info.run_id)
Метрики, параметры и теги для выполнения можно просмотреть в поле данных объекта выполнения.
metrics = finished_mlflow_run.data.metrics
tags = finished_mlflow_run.data.tags
params = finished_mlflow_run.data.params
Note
Словарь метрик в mlflow.entities.Run.data.metrics возвращает только последнее зарегистрированное значение для заданного имени метрики. Например, если для метрики sample_metric последовательно регистрируются 1, затем 2, затем 3, а затем 4, то в словаре метрик для sample_metric будет указано только 4.
Чтобы получить все метрики, зарегистрированные для определенного имени метрики, можно использовать MlflowClient.get_metric_history().
Просмотр метрик выполнения в пользовательском интерфейсе студии
В студии Машинного обучения Azure можно просматривать записи о завершенных запусках, в том числе зарегистрированные метрики.
Перейдите на вкладку Эксперименты. Чтобы просмотреть все запуски разных экспериментов в рабочей области, перейдите на вкладку Все запуски. Можно детализировать ход выполнения до уровня конкретных экспериментов, применив фильтр в верхней строке меню.
Для индивидуального просмотра экспериментов выберите вкладку Все эксперименты. На панели мониторинга запуска экспериментов можно просмотреть метрики и журналы для каждого запуска.
Также можно отредактировать таблицу со списком запусков, чтобы выбрать несколько запусков и отобразить последнее, минимальное или максимальное зарегистрированное значение. Настройте диаграммы, чтобы сравнить зарегистрированные значения метрик и агрегированные данные для нескольких запусков. На оси Y можно построить несколько метрик, а на оси X настроить отображение зарегистрированных метрик.
Просмотр и скачивание файлов журналов для запуска
Файлы журналов — это важный ресурс для отладки рабочих нагрузок машинного обучения Azure. Отправив задание обучения, задайте детализацию до уровня конкретного запуска, чтобы просмотреть его журналы и выходные данные:
- Перейдите на вкладку Эксперименты.
- Выберите идентификатор конкретного запуска.
- Выберите Выходные данные и журналы вверху страницы.
- Выберите Скачать все, чтобы скачать все журналы в ZIP-папку.
- Можно также скачать отдельные файлы журнала, выбрав нужный файл и нажав кнопку Скачать.
папка user_logs
Эта папка содержит сведения о журналах, созданных пользователем. По умолчанию эта папка открыта, и выбран журнал std_log.txt. В файле std_log.txt содержатся журналы вашего кода (например, инструкции печати). Этот файл содержит журналы stdout и stderr из скриптов управления и обучения (по одному на процесс). В большинстве случаев вы отслеживаете журналы здесь.
папка system_logs
Эта папка содержит журналы, созданные Машинным обучением Azure, и по умолчанию закрывается. Журналы, созданные системой, сгруппированы в разные папки в зависимости от стадии задания во время выполнения.
Другие папки
Для заданий, выполняемых в кластерах с несколькими вычислительными ресурсами, журналы организованы по IP-адресу узла. Каждый узел имеет такую же структуру папок журнала, как и задания с одним узлом. Кроме того, существует отдельная папка журналов, содержащая общие журналы выполнения, включая stderr и stdout из всего кластера.
Во время машинного обучения Azure регистрируются данные из различных источников, например AutoML ML или контейнера Docker, выполняющего задание обучения. Многие такие журналы не документированы. Если у вас возникли проблемы и вы обратились в службу поддержки Майкрософт, ее специалисты могут воспользоваться этими журналами для устранения неполадок.
Интерактивный сеанс ведения журнала
Интерактивные сеансы ведения журнала обычно используются в средах записных книжек. Запустить интерактивный сеанс ведения журнала можно с помощью метода Experiment.start_logging(). Все метрики, записанные во время сеанса, добавляются в запись о выполнении эксперимента. Метод run.complete() завершает сеансы и помечает операцию как завершенную.
Журналы ScriptRun
В этом разделе описано, как добавить код ведения журнала в запусках, созданных при настройке с помощью ScriptRunConfig. Вы можете использовать класс ScriptRunConfig, чтобы инкапсулировать скрипты и среды для повторяемых операций. Вы также можете использовать этот параметр для отображения визуального мини-приложения Jupyter Notebook для мониторинга.
В этом примере выполняется очистка параметров для альфа-значений и регистрация результатов с помощью метода run.log().
Создайте скрипт обучения, который включает логику ведения журнала
train.py.# Copyright (c) Microsoft. All rights reserved. # Licensed under the MIT license. from sklearn.datasets import load_diabetes from sklearn.linear_model import Ridge from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split from azureml.core.run import Run import os import numpy as np import mylib # sklearn.externals.joblib is removed in 0.23 try: from sklearn.externals import joblib except ImportError: import joblib os.makedirs('./outputs', exist_ok=True) X, y = load_diabetes(return_X_y=True) run = Run.get_context() X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) data = {"train": {"X": X_train, "y": y_train}, "test": {"X": X_test, "y": y_test}} # list of numbers from 0.0 to 1.0 with a 0.05 interval alphas = mylib.get_alphas() for alpha in alphas: # Use Ridge algorithm to create a regression model reg = Ridge(alpha=alpha) reg.fit(data["train"]["X"], data["train"]["y"]) preds = reg.predict(data["test"]["X"]) mse = mean_squared_error(preds, data["test"]["y"]) run.log('alpha', alpha) run.log('mse', mse) model_file_name = 'ridge_{0:.2f}.pkl'.format(alpha) # save model in the outputs folder so it automatically get uploaded with open(model_file_name, "wb") as file: joblib.dump(value=reg, filename=os.path.join('./outputs/', model_file_name)) print('alpha is {0:.2f}, and mse is {1:0.2f}'.format(alpha, mse))Отправьте скрипт
train.pyдля выполнения в среде, управляемой пользователем. Для обучения отправляется вся папка скриптов.from azureml.core import ScriptRunConfig src = ScriptRunConfig(source_directory='./scripts', script='train.py', environment=user_managed_env)run = exp.submit(src)Параметр
show_outputвключает подробное ведение журнала, что позволяет просматривать сведения из процесса обучения и сведения о удаленных ресурсах или целевых объектах вычислений. Используйте следующий код, чтобы включить подробное ведение журнала при отправке эксперимента.run = exp.submit(src, show_output=True)Этот же параметр вы можете указать в функции
wait_for_completionдля финального выполнения.run.wait_for_completion(show_output=True)
Собственное ведение журнала Python
Некоторые журналы, создаваемые с помощью пакета SDK, могут содержать сообщения об ошибках с предложением установить значение DEBUG для уровня ведения журнала. Чтобы изменить уровень ведения журнала, добавьте в скрипт приведенный ниже код.
import logging
logging.basicConfig(level=logging.DEBUG)
Другие источники ведения журнала
Машинное обучение Azure также может регистрировать сведения из других источников во время обучения, например автоматизированное машинное обучение или контейнеры Docker, выполняющие задания. Такие журналы не задокументированы, но если у вас возникли проблемы и вы обратились в службу поддержки Майкрософт, ее специалисты могут воспользоваться этими журналами для устранения неполадок.
См. дополнительные сведения о ведении журналов метрик в конструкторе Машинного обучения Azure.
Примеры записных книжек
Основные понятия, описанные в этой статье, демонстрируют следующие записные книжки:
- how-to-use-azureml/training/train-on-local
- how-to-use-azureml/track-and-monitor-experiments/logging-api
Узнайте, как запускать записные книжки, следуя указаниям из статьи Использование записных книжек Jupyter в Машинном обучении Azure.
Дальнейшие шаги
Подробные сведения об использовании Машинного обучения Azure см. в следующих статьях:
- Пример регистрации оптимальных моделей и их развертывания см. в руководстве Руководство № 1. Обучение модели классификации изображений с помощью Машинного обучения Azure.