首页 > 解决方案 > MLFlow:无法为“mlflow models build-docker”指定基础镜像

问题描述

使用 mlflow 模型 build-docker,它总是从硬编码定义(mlflow.models.docker_utils.py 中的 _DOCKERFILE_TEMPLATE 字符串)创建图像,这是一个大约 3GB 的相当“重”的图像。这是一种否决此内置 dockerfile 定义的方法,以便您可以使用更轻量级的 docker 映像?此外,看起来 docker 映像正在通过 java 为模型提供服务,这引入了许多额外的依赖项。为什么默认不能只使用 python-func 概念,就像 mlflow 在本地系统上服务一样?

谢谢,顺便说一句,我真的很喜欢 mlflow!

2021 年 9 月 27 日更新:(回应评论)

如何重现:(来自 CLI)

    mlflow models build-docker -m {model uri) -n {docker name}    

docker 文件始终基于硬编码的内容

    mlflow.models.docker_utils.py

在一个名为的字符串中

    _DOCKERFILE_TEMPLATE

此字符串在函数中使用

 _build_image(....)   (line 80)

在第 103 行,它实际上用于基于此字符串创建本地 docker 文件

        with open(os.path.join(cwd, "Dockerfile"), "w") as f:
            f.write(
                _DOCKERFILE_TEMPLATE.format(

我本来希望它将用户指定的 Dockerfile 作为输入,而不是硬编码的 _DOCKERFILE_TEMPLATE

标签: dockermlflow

解决方案


推荐阅读