1

我想将 Mlflow 设置为具有以下组件:

  • 后端存储(本地):在本地使用 SQLite 数据库存储 Mlflow 实体(run_id、params、metrics...)
  • 工件存储(远程):使用我的 Azure Data Lake Storage Gen2 上的 blob 存储来存储与我的模型相关的输出文件(版本化数据集、序列化模型、图像......)
  • 跟踪服务器:使用类似于此命令的内容

z

mlflow server --backend-store-uri sqlite:///C:\sqlite\db\mlruns.db --default-artifact-root wasbs://container-name@storage_account_name.blob.core.windows.net/mlartifacts -h 0.0.0.0 -p 8000

其中 mlruns.db 是我在 SQLite 中创建的数据库(在 db 文件夹中),而 mlartifacts 是我在 blob 容器中创建的用于接收所有输出文件的文件夹。

我运行这个命令,然后运行 ​​mlflow(或者在我使用 Kedro 时运行 kedro),但几乎没有任何反应。数据库中填充了 12 个表,但都是空的,而数据湖内没有任何事情发生。

我想要的应该看起来像文档中的场景 4

对于神器商店,我找不到详细的说明。我试图在这里查看 Mlflow 的文档,但这不是很有帮助(我仍然是初学者)。他们说:

MLflow 需要 AZURE_STORAGE_CONNECTION_STRING、AZURE_STORAGE_ACCESS_KEY 环境变量中的 Azure 存储访问凭据,或者配置您的凭据,以便使用 DefaultAzureCredential()。班级可以接他们。

但是,即使添加了 env 变量,数据湖中似乎也没有存储任何内容。我创建了两个环境变量(在 Windows 10 上):

  • AZURE_STORAGE_ACCESS_KEY = wasbs://container-name@storage_account_name.blob.core.windows.net/mlartifacts

  • AZURE_STORAGE_CONNECTION_STRING = DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=。我通过 Azure Portal 上的以下路径获得它:存储帐户/访问密钥/连接字符串(使用密钥 2 之一)。

他们还声明:

此外,您必须单独(在您的客户端和服务器上)运行 pip install azure-storage-blob 才能访问 Azure Blob 存储。最后,如果要使用 DefaultAzureCredential,则必须 pip install azure-identity;默认情况下,MLflow 不声明对这些包的依赖。

我在我的项目需求中添加了它们,但是通过在客户端和服务器上安装它们到底意味着什么?azure-identity 对设置有何帮助?

你能帮我一步一步地说明如何进行完整的设置吗?

先感谢您 !

4

1 回答 1

2

如果使用第一个环境变量,您只需要设置AZURE_STORAGE_CONNECTION_STRING,AZURE_STORAGE_ACCESS_KEY是可选的(无论如何,AZURE_STORAGE_ACCESS_KEY不​​应该是 URL,而是实际的访问密钥)。

关于azure-storage-blob包 - 它应该安装在您运行的服务器mlflow server和运行培训的同一台机器上(客户端)。

于 2021-11-27T11:41:33.007 回答