Databricks 多任务作业 - 将 MLflow run_id 从一个任务传递到下一个任务
Databricks multi-task jobs - pass MLflow run_id from one task to next task
我想按以下顺序创建一个数据块多任务:
- 笔记本任务 1:训练模型并将结果记录到 MLflow 跟踪服务器
- 笔记本任务 2:使用任务 1 中的 mlflow run_id 在模型注册表中注册模型
是否可以将 run_id 从任务 1 传递到任务 2?如果可以,是否有关于如何完成的文档?
您可以考虑以下步骤,
通过以下代码并解析所需的 run_id
从 note_book1 获取 run id
。
import requests
import json
class BearerAuth(requests.auth.AuthBase):
def __init__(self, token):
self.token = token
def __call__(self, r):
r.headers["authorization"] = "Bearer " + self.token
return r
response = requests.get('https://instancename/api/2.0/jobs/list', auth=BearerAuth('enteryourtoken')).json()
response
我们可以将该变量从 task1 传递到 task2。
截至目前(可能会更改),如果您使用多任务作业,则无法在作业之间传递结果。
但是如果你使用 notebook workflows 和函数 dbutils.notebooks.run
:
,你可以调用另一个笔记本作为子作业
# notebook 1
... training code ...
dbutils.notebooks.run("notebook2", 300, {"run_id": run_id})
我想按以下顺序创建一个数据块多任务:
- 笔记本任务 1:训练模型并将结果记录到 MLflow 跟踪服务器
- 笔记本任务 2:使用任务 1 中的 mlflow run_id 在模型注册表中注册模型
是否可以将 run_id 从任务 1 传递到任务 2?如果可以,是否有关于如何完成的文档?
您可以考虑以下步骤,
通过以下代码并解析所需的 run_id
从 note_book1 获取 run id
。
import requests
import json
class BearerAuth(requests.auth.AuthBase):
def __init__(self, token):
self.token = token
def __call__(self, r):
r.headers["authorization"] = "Bearer " + self.token
return r
response = requests.get('https://instancename/api/2.0/jobs/list', auth=BearerAuth('enteryourtoken')).json()
response
我们可以将该变量从 task1 传递到 task2。
截至目前(可能会更改),如果您使用多任务作业,则无法在作业之间传递结果。
但是如果你使用 notebook workflows 和函数 dbutils.notebooks.run
:
# notebook 1
... training code ...
dbutils.notebooks.run("notebook2", 300, {"run_id": run_id})