Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Model Yang Dicatat MLflow membantu Anda melacak kemajuan model sepanjang siklus hidupnya. Saat Anda melatih model, gunakan mlflow.<model-flavor>.log_model() untuk membuat LoggedModel yang menggabungkan semua informasi pentingnya dengan menggunakan ID unik. Untuk memanfaatkan kekuatan LoggedModels, mulailah dengan MLflow 3.
Untuk aplikasi GenAI, LoggedModels dapat dibuat untuk menangkap komit git atau set parameter sebagai objek khusus yang kemudian dapat ditautkan ke lintasan dan metrik. Dalam pembelajaran mendalam dan ML klasik, LoggedModels diproduksi dari eksekusi MLflow, yang merupakan konsep yang ada dalam MLflow dan dapat dianggap sebagai pekerjaan yang menjalankan kode model. Pelatihan berjalan menghasilkan model sebagai output, dan evaluasi berjalan menggunakan model yang ada sebagai input untuk menghasilkan metrik dan informasi lain yang dapat Anda gunakan untuk menilai performa model.
Objek LoggedModel bertahan di seluruh siklus hidup model, di berbagai lingkungan, dan berisi tautan ke artefak seperti metadata, metrik, parameter, dan kode yang digunakan untuk menghasilkan model. Pelacakan Model yang Dicatat memungkinkan Anda membandingkan model satu sama lain, menemukan model dengan kinerja terbaik, dan melacak informasi selama pemecahan masalah.
Model yang Dicatatkan juga dapat didaftarkan ke registri model Unity Catalog, yang menyajikan informasi tentang model dari semua eksperimen dan ruang kerja MLflow yang tersedia dalam satu lokasi terpusat. Untuk detail selengkapnya, lihat Peningkatan Registri Model dengan MLflow 3.
Peningkatan pelacakan untuk kecerdasan buatan generatif dan model pembelajaran mendalam
AI generatif dan alur kerja pembelajaran mendalam terutama mendapat manfaat dari pelacakan terperinci yang disediakan Model Yang Dicatat.
Gen AI - data evaluasi dan pelacakan terpadu:
- Model AI Generatif menghasilkan metrik tambahan selama evaluasi dan penyebaran, seperti data umpan balik peninjau dan jejak data.
- Entitas
LoggedModelmemungkinkan Anda untuk mengkueri semua informasi yang dihasilkan oleh model menggunakan satu antarmuka.
Pembelajaran mendalam - manajemen titik pemeriksaan yang efisien:
- Pelatihan pembelajaran mendalam membuat beberapa titik pemeriksaan, yang merupakan rekam jepret status model pada titik tertentu selama pelatihan.
- MLflow membuat file terpisah untuk setiap titik pemeriksaan, yang berisi metrik model dan data performa. Ini memungkinkan Anda membandingkan dan mengevaluasi titik pemeriksaan untuk mengidentifikasi model berkinerja terbaik secara efisien.
Membuat Model yang Dicatat
Untuk menciptakan Model yang Dicatat, gunakan API yang sama log_model() seperti pada beban kerja MLflow yang sudah ada. Cuplikan kode berikut menunjukkan cara membuat Model Tercatat untuk AI generatif, pembelajaran mendalam, dan alur kerja ML tradisional.
Untuk contoh notebook yang lengkap dan dapat dijalankan, lihat Contoh buku catatan.
Kecerdasan Buatan Generatif (Gen AI)
Cuplikan kode berikut menunjukkan cara mengelog agen LangChain. Gunakan metode log_model() untuk varian agen Anda.
# 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)
Mulai pekerjaan evaluasi dan tautkan metrik ke Model yang Dicatat dengan memberikan model_id yang unik untuk 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
)
Pembelajaran mendalam
Cuplikan kode berikut menunjukkan cara membuat Model Tercatat selama pelatihan pembelajaran mendalam. Gunakan metode log_model() untuk varian dari model MLflow Anda.
# 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()
# Obtain input and output examples for MLflow Model signature creation
with torch.no_grad():
input_example = X_train[:1]
output_example = scripted_model(input_example)
# 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,
signature=mlflow.models.infer_signature(
model_input=input_example.cpu().numpy(),
model_output=output_example.cpu().numpy(),
),
input_example=X_train.cpu().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
)
ML Tradisional
Cuplikan kode berikut menunjukkan cara mencatat model sklearn dan menautkan metrik ke Logged Model. Gunakan metode log_model() untuk varian dari model MLflow Anda.
## 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
)
Contoh buku catatan
Misalnya buku catatan yang mengilustrasikan penggunaan LoggedModels, lihat halaman berikut ini:
Melihat model dan melacak kemajuan
Anda dapat melihat Model yang Dicatat di antarmuka pengguna ruang kerja:
- Buka tab Eksperimen di ruang kerja Anda.
- Pilih eksperimen. Kemudian, pilih tab Model .
Halaman ini berisi semua Model Yang Dicatat yang terkait dengan eksperimen, bersama dengan metrik, parameter, dan artefaknya.
Anda dapat membuat bagan untuk melacak metrik di seluruh percobaan.
Mencari dan memfilter Model yang Dicatat
Dari tab Model , Anda dapat mencari dan memfilter Model yang Dicatat berdasarkan atribut, parameter, tag, dan metriknya.
Anda dapat memfilter metrik berdasarkan performa khusus himpunan data, dan hanya model dengan nilai metrik yang cocok pada himpunan data yang diberikan yang dikembalikan. Jika filter himpunan data disediakan tanpa filter metrik apa pun, model dengan metrik apa pun pada himpunan data tersebut dikembalikan.
Anda dapat memfilter berdasarkan atribut berikut:
model_idmodel_namestatusartifact_uri-
creation_time(numerik) -
last_updated_time(numerik)
Gunakan operator berikut untuk mencari dan memfilter atribut, parameter, dan tag seperti string:
-
=,!=,IN,NOT IN
Gunakan operator perbandingan berikut untuk mencari dan memfilter atribut dan metrik numerik,:
-
=, ,!=>,<, ,>=,<=
Cari Model yang Dicatat secara Programatis
Anda dapat mencari Model Yang Dicatat menggunakan 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>}
]
)
Untuk informasi selengkapnya dan parameter pencarian tambahan, lihat dokumentasi MLflow 3 API.
Pencarian berjalan berdasarkan input dan output model
Anda dapat mencari eksekusi menurut ID model untuk mengembalikan semua eksekusi yang memiliki Model yang Tercatat sebagai input atau output. Untuk informasi selengkapnya tentang sintaks string filter, lihat pemfilteran untuk proses.
Anda dapat mencari run menggunakan MLflow API.
## Get all Runs with a particular model as an input or output by model id
mlflow.search_runs(filter_string = "models.model_id = <my-model-id>")
Langkah selanjutnya
Untuk mempelajari selengkapnya tentang fitur baru MLflow 3 lainnya, lihat artikel berikut ini: