重要
本文提供有关使用 Azure 机器学习 SDK v1 的信息。 SDK v1 自 2025 年 3 月 31 日起弃用。 对它的支持将于 2026 年 6 月 30 日结束。 可以在该日期之前安装和使用 SDK v1。 使用 SDK v1 的现有工作流将在支持结束日期后继续运行。 但是,在产品发生体系结构更改时,可能会面临安全风险或中断性变更。
建议在 2026 年 6 月 30 日之前过渡到 SDK v2。 有关 SDK v2 的详细信息,请参阅 什么是 Azure 机器学习 CLI 和 Python SDK v2? 以及 SDK v2 参考。
在某些情况下,适用于 Azure 机器学习的模型推理和扩展性解决方案的预生成 Docker 映像可能无法满足推理服务需求。
在这种情况下,可以使用 Dockerfile 创建新映像,并将某个预生成的映像用作起点。 通过从现有的预生成 Docker 映像进行扩展,可以使用 Azure 机器学习网络堆栈和库,而无需从头开始创建映像。
优点和缺点
使用 Dockerfile 可以在部署之前对映像进行完全自定义。 这样可以最大程度地控制要在容器中设置哪些依赖项或环境变量。
此方法的主要权衡是,在部署过程中会进行额外的映像生成,这会减缓部署过程。 如果可以使用 Python 包扩展性 方法,则部署速度更快。
先决条件
一个 Azure 机器学习工作区。 有关创建工作区的教程,请参阅创建资源以开始使用。
熟悉如何创作 Dockerfile。
一个正常工作的 Docker 本地安装(包括
dockerCLI),或者与你的 Azure 机器学习工作区关联的 Azure 容器注册表 (ACR)。警告
首次使用工作区训练或部署模型时,将创建工作区的 Azure 容器注册表。 如果创建了新工作区,但未训练或创建了模型,则工作区不存在 Azure 容器注册表。
创建和生成 Dockerfile
以下示例是一个 Dockerfile,它使用 Azure 机器学习预生成的 Docker 映像作为基本映像:
FROM mcr.microsoft.com/azureml/<image_name>:<tag>
COPY requirements.txt /tmp/requirements.txt
RUN pip install –r /tmp/requirements.txt
然后,将上述 Dockerfile 放入包含所有所需文件的目录,并运行以下命令来生成映像:
docker build -f <above dockerfile> -t <image_name>:<tag> .
如果 docker build 命令在本地不可用,请使用适用于你的 Azure 机器学习工作区的 Azure 容器注册表 ACR 在云中生成 Docker 映像。 有关详细信息,请参阅教程:使用 Azure 容器注册表生成和部署容器映像。
重要
Azure 建议先验证 Dockerfile 是否在本地工作,然后再尝试通过 Azure 容器注册表创建自定义基础映像。
以下部分包含有关 Dockerfile 的更具体详细信息。
安装额外的包
如果需要在 Ubuntu 容器中安装任何其他 apt 包,可将这些包添加到 Dockerfile 中。 以下示例演示如何通过 Dockerfile 使用 apt-get 命令:
FROM <prebuilt docker image from MCR>
# Switch to root to install apt packages
USER root:root
RUN apt-get update && \
apt-get install -y \
<package-1> \
...
<package-n> && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
# Switch back to non-root user
USER dockeruser
还可以通过 Dockerfile 安装其他 pip 包。 以下示例演示如何使用 pip install:
RUN pip install <library>
将模型和代码生成到映像中
如果需要将模型和代码生成到映像中,需要在 Dockerfile 中设置以下环境变量:
-
AZUREML_ENTRY_SCRIPT:代码的入口脚本。 此文件包含init()和run()方法。 -
AZUREML_MODEL_DIR:包含模型文件的目录。 入口脚本应使用此目录作为模型的根目录。
以下示例演示如何在 Dockerfile 中设置这些环境变量:
FROM <prebuilt docker image from MCR>
# Code
COPY <local_code_directory> /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=<entryscript_file_name>
# Model
COPY <model_directory> /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models
示例 Dockerfile
以下示例演示如何安装 apt 包、设置环境变量,并将代码和模型包含为 Dockerfile 的一部分:
注释
以下示例使用 mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest 映像作为基础映像。 有关可用映像的信息,请参阅 用于模型推理的预构建 Docker 映像。
FROM mcr.microsoft.com/azureml/minimal-ubuntu20.04-py38-cpu-inference:latest
USER root:root
# Install libpng-tools and opencv
RUN apt-get update && \
apt-get install -y \
libpng-tools \
python3-opencv && \
apt-get clean -y && \
rm -rf /var/lib/apt/lists/*
# Switch back to non-root user
USER dockeruser
# Code
COPY code /var/azureml-app
ENV AZUREML_ENTRY_SCRIPT=score.py
# Model
COPY model /var/azureml-app/azureml-models
ENV AZUREML_MODEL_DIR=/var/azureml-app/azureml-models
后续步骤
若要将 Dockerfile 与 Azure 机器学习 Python SDK 配合使用,请参阅以下文档:
若要详细了解如何部署模型,请参阅如何部署模型。
若要了解如何排查预生成 Docker 映像部署的问题,请参阅如何排查预生成 Docker 映像部署的问题。