Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНЯЕТСЯ К:
Пакет SDK машинного обучения Azure версии 1 для Python
Это важно
В этой статье содержатся сведения об использовании пакета 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.
В этой статье вы узнаете, как просматривать задания и метрики экспериментов в TensorBoard с помощью пакета tensorboard в основном пакете SDK Машинного обучения Azure. Изучив задания экспериментов, вы сможете лучше настроить и переобучить модели машинного обучения.
TensorBoard — это набор веб-приложений для проверки и понимания структуры и производительности эксперимента.
Способ запуска TensorBoard с экспериментами Машинного обучения Azure зависит от типа эксперимента.
Если эксперимент изначально выводит файлы журналов, которые используются TensorBoard, например PyTorch, Chainer и TensorFlow экспериментов, можно запустить TensorBoard непосредственно из журнала заданий эксперимента.
Для экспериментов, которые не выходные файлы TensorBoard, используемые в собственном коде, такие как Scikit-learn или эксперименты машинного обучения Azure, используйте
export_to_tensorboard()метод для экспорта журналов заданий в виде журналов TensorBoard и запуска TensorBoard оттуда.
Совет
Сведения в этом документе предназначены главным образом для специалистов по обработке и анализу данных и разработчиков, желающих отслеживать процесс обучения модели. Если вы являетесь администратором, заинтересованным в мониторинге использования ресурсов и событий из Машинного обучения Azure, таких как квоты, завершенные задания обучения или завершенные развертывания моделей, см. статью "Мониторинг машинного обучения Azure".
Предварительные условия
- Чтобы запустить TensorBoard и просмотреть журналы заданий эксперимента, ранее включено ведение журнала для отслеживания метрик и производительности.
- Код в этом документе можно запустить в любой из следующих сред:
- Машинное обучение Azure: вычислительный экземпляр — нет необходимости в загрузке или установке
- Завершите создание ресурсов, чтобы приступить к созданию сервера выделенной записной книжки, предварительно загруженного с помощью пакета SDK и примера репозитория.
- В папке примеров на сервере записной книжки найдите две завершенные и развернутые записные книжки, перейдя к этим каталогам:
- Пакет SDK версии 1>, как использовать azureml > отслеживание и мониторинг экспериментов > tensorboard > экспорт истории запуска в tensorboard > export-run-history-to-tensorboard.ipynb
- Пакет SDK версии 1>, как использовать azureml > track-and-monitor-experiments > tensorboard tensorboard > tensorboard tensorboard.ipynb >
- Собственный сервер записной книжки Jupyter
- Машинное обучение Azure: вычислительный экземпляр — нет необходимости в загрузке или установке
Вариант 1. Просмотр журнала заданий непосредственно в TensorBoard
Этот параметр используется для экспериментов, которые изначально выводят файлы журнала, используемые TensorBoard, такие как PyTorch, Chainer и TensorFlow эксперименты. Если это не так для эксперимента, используйте export_to_tensorboard() вместо него метод.
В следующем примере кода используется демонстрационный эксперимент MNIST из репозитория TensorFlow в удаленном целевом объекте вычислений среды Машинного обучения Azure. Затем мы настроим и запустите задание для обучения модели TensorFlow, а затем запустите TensorBoard для этого эксперимента TensorFlow.
Задание имени эксперимента и создание папки проекта
Здесь мы дадим эксперименту имя и создадим для него папку.
from os import path, makedirs
experiment_name = 'tensorboard-demo'
# experiment folder
exp_dir = './sample_projects/' + experiment_name
if not path.exists(exp_dir):
makedirs(exp_dir)
Загрузка демонстрационного кода эксперимента TensorFlow
В репозитории TensorFlow есть демонстрационная версия MNIST с расширенными инструментами TensorBoard. Для работы с машинным обучением Azure не требуется изменять код этой демонстрации. В следующем коде мы скачиваем код MNIST и сохраняем его во вновь созданную папку эксперимента.
import requests
import os
tf_code = requests.get("https://raw.githubusercontent.com/tensorflow/tensorflow/r1.8/tensorflow/examples/tutorials/mnist/mnist_with_summaries.py")
with open(os.path.join(exp_dir, "mnist_with_summaries.py"), "w") as file:
file.write(tf_code.text)
В файле кода MNIST mnist_with_summaries.py обратите внимание на строки, в которых вызываются методы tf.summary.scalar(), tf.summary.histogram(), tf.summary.FileWriter() и т. д. Эти методы группируют, регистрируют и помечают ключевые метрики экспериментов в журнале заданий. Это tf.summary.FileWriter() особенно важно, так как он сериализует данные из метрики зарегистрированных экспериментов, что позволяет TensorBoard создавать визуализации из них.
Настройка эксперимента
Ниже мы настроим эксперимент и укажем каталоги для журналов и данных. Эти журналы отправляются в журнал заданий, к которому tensorBoard обращается позже.
Примечание.
Для этого примера необходимо установить TensorFlow на локальном компьютере. Кроме того, модуль TensorBoard (то есть модуль, входящий в состав TensorFlow) должен быть доступен для ядра этой записной книжки, так как TensorBoard выполняется именно на локальном компьютере.
import azureml.core
from azureml.core import Workspace
from azureml.core import Experiment
ws = Workspace.from_config()
# create directories for experiment logs and dataset
logs_dir = os.path.join(os.curdir, "logs")
data_dir = os.path.abspath(os.path.join(os.curdir, "mnist_data"))
if not path.exists(data_dir):
makedirs(data_dir)
os.environ["TEST_TMPDIR"] = data_dir
# Writing logs to ./logs results in their being uploaded to the job history,
# and thus, made accessible to our TensorBoard instance.
args = ["--log_dir", logs_dir]
# Create an experiment
exp = Experiment(ws, experiment_name)
Создание кластера для эксперимента
Мы создадим кластер AmlCompute для этого эксперимента, однако ваши эксперименты можно создать в любой среде, и вы по-прежнему можете запустить TensorBoard в журнале заданий эксперимента.
from azureml.core.compute import ComputeTarget, AmlCompute
cluster_name = "cpu-cluster"
cts = ws.compute_targets
found = False
if cluster_name in cts and cts[cluster_name].type == 'AmlCompute':
found = True
print('Found existing compute target.')
compute_target = cts[cluster_name]
if not found:
print('Creating a new compute target...')
compute_config = AmlCompute.provisioning_configuration(vm_size='STANDARD_D2_V2',
max_nodes=4)
# create the cluster
compute_target = ComputeTarget.create(ws, cluster_name, compute_config)
compute_target.wait_for_completion(show_output=True, min_node_count=None)
# use get_status() to get a detailed status for the current cluster.
# print(compute_target.get_status().serialize())
Настройка и отправка задания на выполнение обучения
Настройте задание обучения, создав объект ScriptRunConfig.
from azureml.core import ScriptRunConfig
from azureml.core import Environment
# Here we will use the TensorFlow 2.2 curated environment
tf_env = Environment.get(ws, 'AzureML-TensorFlow-2.2-GPU')
src = ScriptRunConfig(source_directory=exp_dir,
script='mnist_with_summaries.py',
arguments=args,
compute_target=compute_target,
environment=tf_env)
run = exp.submit(src)
Запустите TensorBoard
Вы можете запустить TensorBoard во время выполнения или после завершения. В следующем примере мы создадим экземпляр объекта TensorBoard, который принимает журнал заданий эксперимента, tbзагруженный в файл run, а затем запустите TensorBoard с start() помощью метода.
Конструктор TensorBoard принимает массив запусков, поэтому обязательно передайте его в виде массива с одним элементом.
from azureml.tensorboard import Tensorboard
tb = Tensorboard([run])
# If successful, start() returns a string with the URI of the instance.
tb.start()
# After your job completes, be sure to stop() the streaming otherwise it will continue to run.
tb.stop()
Примечание.
Хотя в этом примере мы использовали TensorFlow, вы можете с такой же легкостью использовать TensorBoard с PyTorch или Chainer. TensorFlow должен быть доступен на компьютере с TensorBoard, но не обязательно на компьютере, выполняющем вычисления PyTorch или Chainer.
Вариант 2. Экспорт истории в виде журнала для просмотра в TensorBoard
Следующий код настраивает пример эксперимента, начинает процесс ведения журнала с помощью API журнала заданий Машинного обучения Azure и экспортирует журнал заданий эксперимента в формат, который можно использовать в TensorBoard для визуализации.
Настройка эксперимента
Следующий код настраивает новый эксперимент и присваивает каталогу задания имя root_run.
from azureml.core import Workspace, Experiment
import azureml.core
# set experiment name and job name
ws = Workspace.from_config()
experiment_name = 'export-to-tensorboard'
exp = Experiment(ws, experiment_name)
root_run = exp.start_logging()
Здесь мы загружаем набор данных диабета — встроенный небольшой набор данных, который поставляется с scikit-learn, и разделим его на тестовые и обучающие наборы.
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
X, y = load_diabetes(return_X_y=True)
columns = ['age', 'gender', 'bmi', 'bp', 's1', 's2', 's3', 's4', 's5', 's6']
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}
}
Запуск эксперимента и регистрация метрик
Для этого кода мы обучаем модель линейной регрессии и регистрируем в журнале выполнения ключевые метрики, альфа-коэффициент alpha и среднеквадратическую ошибку mse.
from tqdm import tqdm
alphas = [.1, .2, .3, .4, .5, .6 , .7]
# try a bunch of alpha values in a Linear Regression (aka Ridge regression) mode
for alpha in tqdm(alphas):
# create child runs and fit lines for the resulting models
with root_run.child_run("alpha" + str(alpha)) as run:
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"])
# End train and eval
# log alpha, mean_squared_error and feature names in run history
root_run.log("alpha", alpha)
root_run.log("mse", mse)
Экспорт заданий в TensorBoard
С помощью метода export_to_tensorboard() пакета SDK мы можем экспортировать журнал заданий эксперимента Машинного обучения Azure в журналы TensorBoard, чтобы просмотреть их с помощью TensorBoard.
В следующем коде мы создаем папку logdir в текущем рабочем каталоге. В этой папке мы экспортируем журнал заданий эксперимента и журналы, root_run а затем помечаем это задание как завершенное.
from azureml.tensorboard.export import export_to_tensorboard
import os
logdir = 'exportedTBlogs'
log_path = os.path.join(os.getcwd(), logdir)
try:
os.stat(log_path)
except os.error:
os.mkdir(log_path)
print(logdir)
# export job history for the project
export_to_tensorboard(root_run, logdir)
root_run.complete()
Примечание.
Можно также экспортировать в TensorBoard определенный запуск, указав имя запуска: export_to_tensorboard(run_name, logdir)
Запуск и остановка TensorBoard
После экспорта журнала заданий для этого эксперимента можно запустить TensorBoard с помощью метода start().
from azureml.tensorboard import Tensorboard
# The TensorBoard constructor takes an array of jobs, so be sure to pass it in as a single-element array here
tb = Tensorboard([], local_root=logdir, port=6006)
# If successful, start() returns a string with the URI of the instance.
tb.start()
По завершении убедитесь, что вызвали метод stop() объекта TensorBoard. В противном случае TensorBoard продолжает работать, пока не завершите работу ядра записной книжки.
tb.stop()
Следующие шаги
В этом руководстве вы создали два эксперимента и узнали, как запустить TensorBoard в своих журналах работы, чтобы определить области для потенциальной настройки и переобучения.
- Если вы удовлетворены моделью, перейдите к нашей статье о развертывании модели .
- Дополнительные сведения о настройке гиперпараметров.