Просмотр результатов обучения с помощью запусков MLflow
В этой статье описывается, как использовать запуски MLflow для просмотра и анализа результатов эксперимента обучения модели, а также управления ими. Дополнительные сведения об экспериментах MLflow см. в разделе Упорядочение учебных запусков с помощью экспериментов MLflow.
Запуск MFlflow соответствует однократному выполнению кода модели. Каждый запуск записывает такую информацию, как записная книжка, которая инициировала выполнение, любые модели, созданные в результате выполнения, параметры модели и метрики, сохраненные как пары "ключ-значение", теги для метаданных выполнения, а также любые артефакты или выходные файлы, созданные в результате выполнения.
Все запуски (циклы) MLflow регистрируются в активном эксперименте. Если эксперимент не установлен явно как активный, выполненные запуски записываются в эксперимент записной книжки.
Просмотр сведений о запуске
Вы можете получить доступ к запуску на странице сведений о эксперименте или непосредственно из записной книжки, в которой был создан запуск.
На странице сведений об эксперименте щелкните название запуска в таблице запусков.
В блокноте щелкните имя запуска на боковой панели «Запуски эксперимента».
На экране запуска
Фрагменты кода для прогнозирования
Если вы регистрируете модель из запуска, модель отображается на вкладке Артефакты, а также фрагменты кода, иллюстрирующие загрузку и использование модели для прогнозирования на кадрах данных Spark и Pandas.
Просмотр записной книжки, использованной для выполнения задачи
Чтобы просмотреть версию записной книжки, в которой был создан запуск, выполните указанные ниже действия.
- На странице сведений об эксперименте щелкните ссылку в столбце источника .
- На странице запуска щелкните ссылку рядом с пунктом Source (Источник).
- В записной книжке на боковой панели "Эксперимент запускается" щелкните Notebook Version Iconзначок записной книжки в поле для выполнения эксперимента.
Версия записной книжки, связанной с выполнением, отображается в главном окне с панелью выделения с датой и временем выполнения.
Добавление тега для запуска
Теги — это пары "ключ-значение", которые можно создавать и использовать для поиска запусков.
В таблице
сведений настранице запускащелкните Добавить рядом стегами .таблица тегов
Откроется диалоговое окно добавления и редактирования тегов. В поле ключа
введите имя ключа и щелкните Добавить тег .В поле значения введите значение для тега.
Щелкните знак "плюс", чтобы сохранить только что введенную пару "ключ-значение".
Чтобы добавить дополнительные теги, повторите шаги 2–4.
По завершении нажмите кнопку Сохранить теги.
Изменение или удаление тега для запуска
В таблице сведений
настранице запуска щелкните значок карандаша рядом с существующими тегами.. таблица тегов
Откроется диалоговое окно добавления и редактирования тегов.
Чтобы удалить тег, щелкните X на этом теге.
Чтобы изменить тег, выберите ключ в раскрывающемся меню и измените значение в поле значение. Щелкните знак плюса, чтобы сохранить изменения.
По завершении нажмите кнопку Сохранить теги.
Воспроизведение программной среды запуска
Вы можете воспроизвести точную программную среду для выполнения, щелкнув Воспроизвести запуск в правом верхнем углу страницы запуска. Откроется следующее диалоговое окно:
Если выбраны параметры по умолчанию, при нажатии кнопки Confirm (Подтвердить):
- Записная книжка клонируется в расположении, которое отображается в диалоговом окне.
- Если исходный кластер по-прежнему существует, то клонированная записная книжка присоединяется к нему, и кластер запускается.
- Если исходный кластер больше не существует, создается и запускается новый кластер с такой же конфигурацией, включая все установленные библиотеки. Записная книжка присоединяется к новому кластеру.
Можно выбрать другое расположение клонированного записного книжки и проверить конфигурацию кластера и установленные библиотеки:
- Чтобы выбрать другую папку, чтобы сохранить клонированную записную книжку, щелкните Изменить папку.
- Чтобы просмотреть спецификацию кластера, щелкните View Spec (Просмотр спецификации). Чтобы клонировать только записную книжку, но не кластер, снимите этот флажок.
- Если исходный кластер больше не существует, вы можете просмотреть библиотеки, установленные в исходном кластере, щелкнув просмотреть библиотеки. Если исходный кластер по-прежнему существует, этот раздел затемнён.
Переименование запуска
Чтобы переименовать запуск, щелкните на Kebab-menu в правом верхнем углу страницы запуска (рядом с кнопкой "Разрешения") и выберите "Переименовать".
Выбор столбцов для отображения
Чтобы управлять столбцами, отображаемыми в таблице выполнения на странице сведений о эксперименте, щелкните Столбцы и выберите в раскрывающемся меню.
Фильтрация запусков
Вы можете найти запуски в таблице на странице сведений о эксперименте на основе значений параметров или метрик. Также можно искать запуски по тегам.
Чтобы найти запуски, соответствующие выражению, содержащему значения параметров и метрик, введите запрос в поле поиска и нажмите Enter. Ниже приведены примеры синтаксиса запросов.
metrics.r2 > 0.3
params.elasticNetParam = 0.5
params.elasticNetParam = 0.5 AND metrics.avg_areaUnderROC > 0.3
MIN(metrics.rmse) <= 1
MAX(metrics.memUsage) > 0.9
LATEST(metrics.memUsage) = 0 AND MIN(metrics.rmse) <= 1
По умолчанию значения метрик фильтруются на основе последнего зарегистрированного значения. Использование
MIN
илиMAX
позволяет выполнять поиск на основе минимальных или максимальных значений метрик соответственно. Только запуски, зарегистрированные после августа 2024 года, имеют минимальные и максимальные значения метрик.Чтобы найти запуски по тегу, введите теги в таком формате:
tags.<key>="<value>"
. Строковые значения должны быть заключены в кавычки, как показано ниже.tags.estimator_name="RandomForestRegressor"
tags.color="blue" AND tags.size=5
Оба ключа и значения могут содержать пробелы. Если ключ содержит пробелы, его необходимо заключить в обратные кавычки, как показано в примере.
tags.`my custom tag` = "my value"
Кроме того, можно отфильтровать запуски на основе их состояния (активного или удаленного), когда был создан запуск и какие наборы данных использовались. Для этого выберите из раскрывающихся меню: времени создания, состоянияили наборов данных.
Скачивание запусков
Вы можете скачать данные о запусках на странице сведений о эксперименте, следуя следующим шагам:
Щелкните , чтобы открыть меню кебаб.
Чтобы скачать файл в формате CSV, содержащий все прогоны (не более 100), выберите Скачать
<n>
прогоны. MLflow создает и загружает файл, в котором каждой строке соответствует один запуск и который содержит следующие поля для каждого из запусков:Start Time, Duration, Run ID, Name, Source Type, Source Name, User, Status, <parameter1>, <parameter2>, ..., <metric1>, <metric2>, ...
Если вы хотите скачать более 100 запусков или загрузить их программным способом, выберите Скачать все запуски. Откроется диалоговое окно с фрагментом кода, который можно скопировать или открыть в записной книжке. После запуска этого кода в ячейке записной книжки выберите Скачать все строки из выходных данных ячейки.
Удаление запусков
Вы можете удалить запуски на странице сведений о эксперименте, выполнив следующие действия.
- В эксперименте выберите один или несколько запусков, щелкнув по флажку слева от запуска.
- Нажмите Удалить.
- Если запуск является родительским, решите, нужно ли также удалить запуски-потомки. Этот параметр выбирается по умолчанию.
- Нажмите кнопку Удалить, чтобы подтвердить операцию. Удаленные запуски сохраняются в течение 30 дней. Чтобы отобразить удаленные запуски, выберите "Удаленные" в поле "Состояние".
Выполнение массового удаления на основе времени создания
Для массового удаления экспериментов, созданных до или в метке времени UNIX, можно использовать Python.
Используя Databricks Runtime 14.1 или более поздней версии, вы можете вызвать mlflow.delete_runs
API для удаления запусков и вернуть число удаленных запусков.
Ниже приведены параметры mlflow.delete_runs
.
-
experiment_id
: идентификатор эксперимента, содержащего запуски для удаления. -
max_timestamp_millis
: максимальная метка времени создания в миллисекундах с эпохи UNIX для удаления запусков. Удаляются только запуски, созданные до или в данный момент времени. -
max_runs
: необязательный параметр. Положительное целое число, указывающее максимальное количество запусков для удаления. Максимально допустимое значение для max_runs равно 10000. Если значение не указано,max_runs
по умолчанию используется значение 10000.
import mlflow
# Replace <experiment_id>, <max_timestamp_ms>, and <max_runs> with your values.
runs_deleted = mlflow.delete_runs(
experiment_id=<experiment_id>,
max_timestamp_millis=<max_timestamp_ms>,
max_runs=<max_runs>
)
# Example:
runs_deleted = mlflow.delete_runs(
experiment_id="4183847697906956",
max_timestamp_millis=1711990504000,
max_runs=10
)
С помощью Databricks Runtime 13.3 LTS или более ранней версии можно запустить следующий клиентский код в записной книжке Azure Databricks.
from typing import Optional
def delete_runs(experiment_id: str,
max_timestamp_millis: int,
max_runs: Optional[int] = None) -> int:
"""
Bulk delete runs in an experiment that were created prior to or at the specified timestamp.
Deletes at most max_runs per request.
:param experiment_id: The ID of the experiment containing the runs to delete.
:param max_timestamp_millis: The maximum creation timestamp in milliseconds
since the UNIX epoch for deleting runs. Only runs
created prior to or at this timestamp are deleted.
:param max_runs: Optional. A positive integer indicating the maximum number
of runs to delete. The maximum allowed value for max_runs
is 10000. If not specified, max_runs defaults to 10000.
:return: The number of runs deleted.
"""
from mlflow.utils.databricks_utils import get_databricks_host_creds
from mlflow.utils.request_utils import augmented_raise_for_status
from mlflow.utils.rest_utils import http_request
json_body = {"experiment_id": experiment_id, "max_timestamp_millis": max_timestamp_millis}
if max_runs is not None:
json_body["max_runs"] = max_runs
response = http_request(
host_creds=get_databricks_host_creds(),
endpoint="/api/2.0/mlflow/databricks/runs/delete-runs",
method="POST",
json=json_body,
)
augmented_raise_for_status(response)
return response.json()["runs_deleted"]
См. документацию по API экспериментов Azure Databricks для параметров и спецификаций возвращаемых значений, чтобы удалять запуски на основе времени создания.
Восстановление запусков
Вы можете восстановить ранее удаленные запуски из пользовательского интерфейса следующим образом:
- На странице эксперимента
в поле состояние выберитеУдаленный , чтобы отобразить удаленные запуски. - Выберите один или несколько запусков, нажав флажок слева от запуска.
- Щелкните Восстановить.
- Щелкните восстановить, чтобы подтвердить. Теперь восстановленные запуски отображаются при выборе Active в поле Состояние.
выполнение массового восстановления в зависимости от времени удаления
Вы также можете использовать Python для массового восстановления запусков экспериментов, которые были удалены в момент или после метки времени UNIX.
С помощью Databricks Runtime 14.1 или более поздней версии можно вызвать API mlflow.restore_runs
для восстановления выполнения и возврата количества восстановленных запусков.
Ниже приведены параметры mlflow.restore_runs
.
-
experiment_id
: идентификатор эксперимента, содержащего запуски, которые необходимо восстановить. -
min_timestamp_millis
: минимальная метка времени удаления в миллисекундах с момента эпохи UNIX для восстановления запусков. Восстанавливаются только удаленные или после этого метки времени. -
max_runs
: необязательный параметр. Положительное целое число, указывающее максимальное количество запусков для восстановления. Максимально допустимое значение для max_runs равно 10000. Если значение не указано, max_runs по умолчанию — 10000.
import mlflow
# Replace <experiment_id>, <min_timestamp_ms>, and <max_runs> with your values.
runs_restored = mlflow.restore_runs(
experiment_id=<experiment_id>,
min_timestamp_millis=<min_timestamp_ms>,
max_runs=<max_runs>
)
# Example:
runs_restored = mlflow.restore_runs(
experiment_id="4183847697906956",
min_timestamp_millis=1711990504000,
max_runs=10
)
С помощью Databricks Runtime 13.3 LTS или более ранней версии можно запустить следующий клиентский код в записной книжке Azure Databricks.
from typing import Optional
def restore_runs(experiment_id: str,
min_timestamp_millis: int,
max_runs: Optional[int] = None) -> int:
"""
Bulk restore runs in an experiment that were deleted at or after the specified timestamp.
Restores at most max_runs per request.
:param experiment_id: The ID of the experiment containing the runs to restore.
:param min_timestamp_millis: The minimum deletion timestamp in milliseconds
since the UNIX epoch for restoring runs. Only runs
deleted at or after this timestamp are restored.
:param max_runs: Optional. A positive integer indicating the maximum number
of runs to restore. The maximum allowed value for max_runs
is 10000. If not specified, max_runs defaults to 10000.
:return: The number of runs restored.
"""
from mlflow.utils.databricks_utils import get_databricks_host_creds
from mlflow.utils.request_utils import augmented_raise_for_status
from mlflow.utils.rest_utils import http_request
json_body = {"experiment_id": experiment_id, "min_timestamp_millis": min_timestamp_millis}
if max_runs is not None:
json_body["max_runs"] = max_runs
response = http_request(
host_creds=get_databricks_host_creds(),
endpoint="/api/2.0/mlflow/databricks/runs/restore-runs",
method="POST",
json=json_body,
)
augmented_raise_for_status(response)
return response.json()["runs_restored"]
См. документацию по API экспериментов Azure Databricks для параметров и спецификаций возвращаемых значений для восстановления на основе времени удаления.
Сравнение запусков
Вы можете сравнить выполнения из одного или нескольких экспериментов. На странице сравнения запусков представлены сведения о выбранных запусках в табличном формате. Вы также можете создавать визуализации результатов выполнения и таблиц сведений о выполнении, параметров выполнения и метрик. См. Сравнение запусков MLflow с помощью графов и диаграмм..
Таблицы параметров и метрик отображают параметры и метрики всех выбранных запусков. Столбцы в этих таблицах определяются таблицей детали выполнения, которая находится непосредственно выше. Для простоты можно скрыть параметры и метрики, идентичные во всех выбранных запусках, используя кнопку .
Сравнение выполнений из одного эксперимента
- На странице сведений о эксперименте
выберите два или более запусков, нажав флажок слева от запуска или выбрав все запуски, установив флажок в верхней части столбца. - Щелкните Compare (Сравнить). Откроется экран сравнения
<N>
запусков.
Сравнение выполнений из нескольких экспериментов
- На странице экспериментоввыберите эксперименты, которые нужно сравнить, щелкнув поле слева от имени эксперимента.
- Щелкните Сравнить (n) (n — количество выбранных экспериментов). Откроется экран со всеми выполнениями из выбранных экспериментов.
- Выберите два или более запусков, нажав флажок слева от запуска или установив флажок в верхней части столбца.
- Щелкните Compare (Сравнить). Откроется экран сравнения
<N>
запусков.
Копирование выполнений между рабочими областями
Чтобы импортировать или экспортировать выполнения MLflow в рабочую область Databricks или из нее, вы можете использовать управляемый сообществом проект с открытым кодом MLflow Export-Import.