Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Модели MLflow Logged помогают отслеживать ход выполнения модели на протяжении всего жизненного цикла. При обучении модели используйте mlflow.<model-flavor>.log_model()
для создания LoggedModel
связи всей критически важной информации с помощью уникального идентификатора. Чтобы использовать возможности LoggedModels
, начните работу с MLflow 3.
Для приложений GenAI LoggedModels
можно создать для фиксации фиксаций Git или наборов параметров как отдельные объекты, которые затем могут быть связаны с трассировками и метриками. В глубоком обучении и классическом машинном обучении LoggedModels
создаются из запусков MLflow, которые являются существующими концепциями в MLflow и могут рассматриваться как задания, которые выполняют код модели. Учебные запуски создают модели в качестве выходных данных, а запуски оценки используют существующие модели в качестве входных данных для создания метрик и других сведений, которые можно использовать для оценки производительности модели.
Объект LoggedModel
сохраняется в течение жизненного цикла модели в разных средах и содержит ссылки на артефакты, такие как метаданные, метрики, параметры и код, используемый для создания модели. Логирование модели позволяет сравнивать модели друг с другом, находить наиболее эффективную модель и следить за информацией при отладке.
Сохраненные модели также можно зарегистрировать в реестре моделей каталога Unity, что позволяет сведения о модели из всех экспериментов MLflow и рабочих областей быть доступными в одном месте. Дополнительные сведения см. в разделе "Усовершенствования реестра моделей" с помощью MLflow 3.
Улучшено отслеживание моделей генеративного искусственного интеллекта и глубокого обучения.
Рабочие процессы генеративного ИИ и глубокого обучения особенно выигрывают от детализированного отслеживания, которое предоставляют модели с ведением логов.
Gen AI — унифицированные данные оценки и трассировки:
- Генеративные модели ИИ создают дополнительные метрики во время оценки и развертывания, такие как данные отзывов рецензентов и треки.
- Сущность
LoggedModel
позволяет запрашивать все сведения, созданные моделью с помощью одного интерфейса.
Глубокое обучение — эффективное управление контрольными точками:
- Обучение глубоким обучением создает множество контрольных точек, которые представляют собой снимки состояния модели в определенный момент во время обучения.
- MLflow создает отдельную
LoggedModel
для каждой контрольной точки, содержащую метрики модели и данные о производительности. Это позволяет сравнивать и оценивать контрольные точки для эффективного определения наиболее эффективных моделей.
Создание модели, зарегистрированной в журнале
Чтобы создать модель с журналом, используйте тот же log_model()
API, что и существующие рабочие нагрузки MLflow. В следующих фрагментах кода показано, как создать зарегистрированную модель для генеративного ИИ, глубокого обучения и традиционных рабочих процессов машинного обучения.
Полные примеры запускаемых записных книжек см. в разделе "Примеры записных книжек".
Генеративный ИИ
В следующем фрагменте кода показано, как регистрировать агент LangChain. Используйте метод log_model()
для вашего варианта агента.
# Log the chain with MLflow, specifying its parameters
# As a new feature, the LoggedModel entity is linked to its name and params
model_info = mlflow.langchain.log_model(
lc_model=chain,
name="basic_chain",
params={
"temperature": 0.1,
"max_tokens": 2000,
"prompt_template": str(prompt)
},
model_type="agent",
input_example={"messages": "What is MLflow?"},
)
# Inspect the LoggedModel and its properties
logged_model = mlflow.get_logged_model(model_info.model_id)
print(logged_model.model_id, logged_model.params)
Запустите задание оценки и свяжите метрики с зарегистрированной моделью, предоставив уникальный идентификатор model_id
для LoggedModel
.
# Start a run to represent the evaluation job
with mlflow.start_run() as evaluation_run:
eval_dataset: mlflow.entities.Dataset = mlflow.data.from_pandas(
df=eval_df,
name="eval_dataset",
)
# Run the agent evaluation
result = mlflow.evaluate(
model=f"models:/{logged_model.model_id}",
data=eval_dataset,
model_type="databricks-agent"
)
# Log evaluation metrics and associate with agent
mlflow.log_metrics(
metrics=result.metrics,
dataset=eval_dataset,
# Specify the ID of the agent logged above
model_id=logged_model.model_id
)
Глубокое обучение
В следующем фрагменте кода показано, как создавать логируемые модели во время обучения нейронных сетей. Используйте метод log_model()
для вашей версии модели MLflow.
# Start a run to represent the training job
with mlflow.start_run():
# Load the training dataset with MLflow. We will link training metrics to this dataset.
train_dataset: Dataset = mlflow.data.from_pandas(train_df, name="train")
X_train, y_train = prepare_data(train_dataset.df)
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(scripted_model.parameters(), lr=0.01)
for epoch in range(101):
X_train, y_train = X_train.to(device), y_train.to(device)
out = scripted_model(X_train)
loss = criterion(out, y_train)
optimizer.zero_grad()
loss.backward()
optimizer.step()
# Log a checkpoint with metrics every 10 epochs
if epoch % 10 == 0:
# Each newly created LoggedModel checkpoint is linked with its
# name, params, and step
model_info = mlflow.pytorch.log_model(
pytorch_model=scripted_model,
name=f"torch-iris-{epoch}",
params={
"n_layers": 3,
"activation": "ReLU",
"criterion": "CrossEntropyLoss",
"optimizer": "Adam"
},
step=epoch,
input_example=X_train.numpy(),
)
# Log metric on training dataset at step and link to LoggedModel
mlflow.log_metric(
key="accuracy",
value=compute_accuracy(scripted_model, X_train, y_train),
step=epoch,
model_id=model_info.model_id,
dataset=train_dataset
)
Традиционное машинное обучение
В следующем фрагменте кода показано, как регистрировать модель sklearn и связывать метрики с данными Logged Model
. Используйте метод log_model()
для вашей версии модели MLflow.
## Log the model
model_info = mlflow.sklearn.log_model(
sk_model=lr,
name="elasticnet",
params={
"alpha": 0.5,
"l1_ratio": 0.5,
},
input_example = train_x
)
# Inspect the LoggedModel and its properties
logged_model = mlflow.get_logged_model(model_info.model_id)
print(logged_model.model_id, logged_model.params)
# Evaluate the model on the training dataset and log metrics
# These metrics are now linked to the LoggedModel entity
predictions = lr.predict(train_x)
(rmse, mae, r2) = compute_metrics(train_y, predictions)
mlflow.log_metrics(
metrics={
"rmse": rmse,
"r2": r2,
"mae": mae,
},
model_id=logged_model.model_id,
dataset=train_dataset
)
Примеры записных книжек
Примеры записных книжек, которые иллюстрируют использование LoggedModels
, см. на следующих страницах:
Просмотр моделей и отслеживание хода выполнения
Вы можете просмотреть зарегистрированные модели в пользовательском интерфейсе рабочей области:
- Перейдите на вкладку "Эксперименты" в рабочей области.
- Выберите эксперимент. Затем выберите вкладку "Модели".
Эта страница содержит все записанные модели, связанные с экспериментом, а также их метрики, параметры и артефакты.
Вы можете создавать диаграммы для отслеживания метрик в разных запусках.
Поиск и фильтрация зарегистрированных моделей
На вкладке "Модели" можно выполнять поиск и фильтрацию "Зарегистрированные модели" на основе их атрибутов, параметров, тегов и метрик.
Метрики можно фильтровать на основе производительности конкретного набора данных, а возвращаются только модели с соответствующими значениями метрик для заданных наборов данных. Если фильтры наборов данных предоставляются без фильтров метрик, возвращаются модели с любыми метриками этих наборов данных.
Вы можете фильтровать на основе следующих атрибутов:
model_id
model_name
status
artifact_uri
-
creation_time
(числовой) -
last_updated_time
(числовой)
Используйте следующие операторы для поиска и фильтрации строковых атрибутов, параметров и тегов:
-
=
,!=
,IN
,NOT IN
Используйте следующие операторы сравнения для поиска и фильтрации числовых атрибутов и метрик.
-
=
,!=
,>
,<
,>=
,<=
Поиск зарегистрированных моделей программным способом
Вы можете искать модели, зарегистрированные в журнале, с помощью API MLflow:
## Get a Logged Model using a model_id
mlflow.get_logged_model(model_id = <my-model-id>)
## Get all Logged Models that you have access to
mlflow.search_logged_models()
## Get all Logged Models with a specific name
mlflow.search_logged_models(
filter_string = "model_name = <my-model-name>"
)
## Get all Logged Models created within a certain time range
mlflow.search_logged_models(
filter_string = "creation_time >= <creation_time_start> AND creation_time <= <creation_time_end>"
)
## Get all Logged Models with a specific param value
mlflow.search_logged_models(
filter_string = "params.<param_name> = <param_value_1>"
)
## Get all Logged Models with specific tag values
mlflow.search_logged_models(
filter_string = "tags.<tag_name> IN (<tag_value_1>, <tag_value_2>)"
)
## Get all Logged Models greater than a specific metric value on a dataset, then order by that metric value
mlflow.search_logged_models(
filter_string = "metrics.<metric_name> >= <metric_value>",
datasets = [
{"dataset_name": <dataset_name>, "dataset_digest": <dataset_digest>}
],
order_by = [
{"field_name": metrics.<metric_name>, "dataset_name": <dataset_name>,"dataset_digest": <dataset_digest>}
]
)
Дополнительные сведения и дополнительные параметры поиска см. в документации по API MLflow 3.
Поиск выполняется по входным и выходным данным модели
Вы можете выполнять поиск по идентификатору модели, чтобы вернуть все запуски, имеющие модель ведения журнала в качестве входных или выходных данных. Для получения дополнительной информации о синтаксисе строки фильтров см. раздел "Фильтрация запусков".
Вы можете искать запуски с помощью API MLflow:
## Get all Runs with a particular model as an input or output by model id
mlflow.search_runs(filter_string = "model_id = <my-model-id>")
Дальнейшие шаги
Дополнительные сведения о других новых возможностях MLflow 3 см. в следующих статьях: