SvG*_*vGA 3 google-colaboratory mlflow mlops
我经常使用 Google Colab 来训练 TF/PyTorch 模型,因为 Colab 为我提供了 GPU/TPU 运行时。此外,我喜欢使用 MLflow 来存储和比较经过训练的模型、跟踪进度、共享等。将 MLflow 与 Google Colab 一起使用有哪些可用的解决方案?
给出了一些很好的答案,但也有一些缺点 \xe2\x80\x93\xc2\xa0 主要是您需要设置自己的 MLflow 服务器才能正常工作。
\n长话短说:
\n\n我总结说你有两个选择:
\n选择一:一切都自己做
\ndesertnaut对于此选项,我从答案中获取了一些代码(归功于dmatrix)。基本上,如果我们使用ngrok,我们可以将过程分为3步:
pip install mlflow --quiet\nmlflow ui --port 5000\nRun Code Online (Sandbox Code Playgroud)\n或者在笔记本中运行时:
\n!pip install mlflow --quiet\nget_ipython().system_raw("mlflow ui --port 5000 &")\nRun Code Online (Sandbox Code Playgroud)\n这将初始化 MLflow 服务器。在 Colab 中执行此操作的缺点是运行时是短暂的,这意味着当您关闭会话时,所有实验信息都将丢失。您可以在本地运行该命令,但使用 ngrok 进行隧道传输可能会更复杂。
\n!pip install pyngrok --quiet\n\nfrom pyngrok import ngrok\nfrom getpass import getpass\n\n# Terminate open tunnels if exist\nngrok.kill()\n\n# Setting the authtoken (optional)\n# Get your authtoken from https://dashboard.ngrok.com/auth\nNGROK_AUTH_TOKEN = getpass(\'Enter the ngrok authtoken: \')\nngrok.set_auth_token(NGROK_AUTH_TOKEN)\n\n# Open an HTTPs tunnel on port 5000 for http://localhost:5000\nngrok_tunnel = ngrok.connect(addr="5000", proto="http", bind_tls=True)\nprint("MLflow Tracking UI:", ngrok_tunnel.public_url)\nRun Code Online (Sandbox Code Playgroud)\n这里我修改了要使用的代码getpass,因为不建议使用明文访问令牌。
import mlflow\n\nwith mlflow.start_run(run_name="MLflow on Colab"):\n mlflow.log_metric("m1", 2.0)\n mlflow.log_param("p1", "mlflow-colab")\nRun Code Online (Sandbox Code Playgroud)\n这也已使用当前版本的 MLflow \xe2\x80\x93 1.15.0 进行了测试
\n选项 2:使用托管服务器
\n此选项保存 ngrok 和隧道的设置。它还提供了团队访问控制和改进的 UI 的优点。我知道有两个主要选项:Databricks和DAGsHub。
\nDatabricks 是托管企业解决方案,而 DAGsHub 是免费社区选项。
\n如果您使用 DAGsHub,则可以跳过步骤 1,步骤 2 会变得简单得多。上面的代码片段变成如下(在相关平台上创建帐户和项目后):
\n!pip install mlflow --quiet\n\nimport mlflow\nimport os\nfrom getpass import getpass\n\nos.environ[\'MLFLOW_TRACKING_USERNAME\'] = input(\'Enter your DAGsHub username: \')\nos.environ[\'MLFLOW_TRACKING_PASSWORD\'] = getpass(\'Enter your DAGsHub access token: \')\nos.environ[\'MLFLOW_TRACKING_PROJECTNAME\'] = input(\'Enter your DAGsHub project name: \')\n\nmlflow.set_tracking_uri(f\'https://dagshub.com/\' + os.environ[\'MLFLOW_TRACKING_USERNAME\'] + \'/\' + os.environ[\'MLFLOW_TRACKING_PROJECTNAME\'] + \'.mlflow\')\n\nwith mlflow.start_run(run_name="MLflow on Colab"):\n mlflow.log_metric("m1", 2.0)\n mlflow.log_param("p1", "mlflow-colab")\nRun Code Online (Sandbox Code Playgroud)\n正如您所看到的,这明显更短。它还具有坚持不懈的好处。
\n有一个Github的问题在此,虽然在写它的时候仍然是开放的[编辑:刚刚结束],贡献者dmatrix是一种足以提供笔记本电脑与一个完整的解决方案,利用pyngrok。
这是代码(旨在在 Colab 笔记本上运行),在作者的隐式许可下重新发布:
!pip install mlflow --quiet
!pip install pyngrok --quiet
import mlflow
with mlflow.start_run(run_name="MLflow on Colab"):
mlflow.log_metric("m1", 2.0)
mlflow.log_param("p1", "mlflow-colab")
# run tracking UI in the background
get_ipython().system_raw("mlflow ui --port 5000 &") # run tracking UI in the background
# create remote tunnel using ngrok.com to allow local port access
# borrowed from https://colab.research.google.com/github/alfozan/MLflow-GBRT-demo/blob/master/MLflow-GBRT-demo.ipynb#scrollTo=4h3bKHMYUIG6
from pyngrok import ngrok
# Terminate open tunnels if exist
ngrok.kill()
# Setting the authtoken (optional)
# Get your authtoken from https://dashboard.ngrok.com/auth
NGROK_AUTH_TOKEN = ""
ngrok.set_auth_token(NGROK_AUTH_TOKEN)
# Open an HTTPs tunnel on port 5000 for http://localhost:5000
ngrok_tunnel = ngrok.connect(addr="5000", proto="http", bind_tls=True)
print("MLflow Tracking UI:", ngrok_tunnel.public_url)
Run Code Online (Sandbox Code Playgroud)
其输出将是一个pyngrok生成的 URL,如:
MLflow Tracking UI: https://0a23d7a7d0c4.ngrok.io
Run Code Online (Sandbox Code Playgroud)
单击这将导致 MLfLow GUI 屏幕。
(感谢pyngrok创建者 Alex Laird对原始代码的轻微修改)
使用 MLflow 版本 1.10.0 和 1.11.0 进行测试。
小智 5
您可以使用 databricks-community 提供的免费 MLflow 跟踪服务器,并将其与 Google Colab 一起使用。下面的 gif 详细说明了如何在 databricks 上设置 MLflow 跟踪服务器:
\n
现在,关于从 Google Colab 访问上述设置的 MLflow。只需按照下面的代码片段操作即可:
\n片段#1
\n!pip install mlflow\n!databricks configure --host https://community.cloud.databricks.com/\nRun Code Online (Sandbox Code Playgroud)\n运行上面的代码片段后,它会提示您输入刚刚创建的 databricks 帐户\xe2\x80\x99s 用户名和密码。请这样做。
\n片段 #2
\nimport mlflow\nmlflow.set_tracking_uri("databricks")\nmlflow.set_experiment("<Enter your copied experiment name here>")\nRun Code Online (Sandbox Code Playgroud)\n如果您遵循上面附加的 gif 文件,我会experiment_name在其末尾复制。请执行相同的操作并将您的传递experiment_name给该set_experiment()函数。
通过执行上述步骤,您可以确保 MLflow 在 Google Colab 上配置完毕!
\n顺便说一句,我已经写了一篇关于同样内容的媒体故事,请查看:Intro to MLflow \xe2\x80\x94 With Colab \xe2\x80\x94 Part 1/2
\nJul*_*les -1
尝试这个。但最大的问题是如何进入用户界面
https://github.com/dmatrix/mlflow-tests/blob/master/mllfow_test.ipynb
一种选择是将 /drive/mlruns 目录下载到本地主机,然后在本地主机上启动 mlflow ui。
不确定 DISPLAY localhost:0:0 是否适用于远程服务器以在本地主机上显示。
| 归档时间: |
|
| 查看次数: |
2621 次 |
| 最近记录: |