【发布时间】:2022-01-02 04:02:59
【问题描述】:
我想将 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 个表,但都是空的,而数据湖内没有任何事情发生。
我想要的应该类似于文档中的Scenario 4。
关于神器商店,我找不到详细的说明。我试图查看 Mlflow 的文档 here 但这不是很有帮助(我还是个初学者)。他们说:
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 门户上的以下路径获得它:存储帐户/访问密钥/连接字符串(使用密钥 2 之一)。
他们还声明:
此外,您必须单独运行 pip install azure-storage-blob(在您的客户端和服务器上)才能访问 Azure Blob 存储。最后,如果要使用 DefaultAzureCredential,则必须 pip install azure-identity; MLflow 默认不声明对这些包的依赖。
我在我的项目需求中添加了它们,但是通过在客户端和服务器上安装它们究竟意味着什么? azure-identity 对设置有何帮助?
您能否帮助我一步一步地说明如何进行完整的设置?
提前谢谢你!
【问题讨论】:
-
不完全符合您的要求,但使用 Azure ML 作为 MLflow 服务器会是一种替代解决方案吗?这也将存储 Blob 用于工件,并且无需设置 SQL 服务器。 MLflow 客户端也更易于设置。
-
感谢您的回复。实际上,我的第一个意图是完全按照您的建议去做。我什至在发布这个之前就发布了这个问题。见stackoverflow.com/questions/70010405/…。从那时起我就没有尝试让它工作,但如果你有任何关于如何将 Kedro 与 Mlflow 和 Azure ML 一起用作跟踪服务器的提示,我愿意接受任何建议。