设置 Mlflow 后端 (SQLite) 和工件(Azure Blob 存储)存储

Dow*_*oru 5 python azure mlflow mlops

我想将 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
Run Code Online (Sandbox Code Playgroud)

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

我运行此命令,然后运行 ​​mlflow(或运行 kedro,因为我使用的是 Kedro),但几乎没有任何反应。该数据库填充了 12 个表,但全部为空,而数据湖内没有任何反应。

我想要的应该类似于文档中的场景 4 。

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

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

然而,即使添加环境变量,数据湖中似乎也没有存储任何内容。我创建了两个环境变量(在 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 门户上遵循以下路径获得它:存储帐户/访问密钥/连接字符串(采用密钥 2 之一)。

他们还指出:

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

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

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

先感谢您 !

Ale*_*Ott 4

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

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