你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要说明
重要说明
本文中的一些 Azure CLI 命令使用适用于 Azure 机器学习的 azure-cli-ml 或 v1 扩展。 对 CLI v1 的支持于 2025 年 9 月 30 日结束。 Microsoft将不再为此服务提供技术支持或更新。 使用 CLI v1 的现有工作流将继续在支持终止日期后运行。 但是,当产品发生体系结构更改时,它们可能会面临安全风险或中断性变更。
建议尽快过渡到 mlv2 扩展。 有关 v2 扩展的详细信息,请参阅 Azure 机器学习 CLI 扩展和 Python SDK v2。
重要说明
本文提供有关使用 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 容器实例 (ACI) 或 Azure Kubernetes 服务 (AKS) 部署进行故障排除的第一步。 使用本地 Web 服务可以更轻松地发现和修复常见的 Azure 机器学习 Docker Web 服务部署错误。
Prerequisites
- Azure 订阅。 试用 Azure 机器学习的免费版或付费版。
- 选项 A(建议)- 在 Azure 机器学习计算实例上进行本地调试
- 正在运行计算实例的 Azure 机器学习工作区
- 选项 B - 在计算中进行本地调试
- Azure 机器学习 SDK。
- Azure CLI。
- 用于 Azure 机器学习的 CLI 扩展。
- 在本地系统上安装有效的 Docker。
- 若要验证 Docker 安装,请从终端或命令提示符使用命令
docker run hello-world。 有关安装 Docker 或排除 Docker 错误的详细信息,请参阅 Docker 文档。
- 选项 C - 通过 Azure 机器学习推理 HTTP 服务器启用本地调试。
- Azure 机器学习推理 HTTP 服务器是一个 Python 包,可用于在本地开发环境中轻松验证输入脚本(
score.py)。 如果评分脚本出现问题,该服务器会返回一个错误。 它还会返回发生错误的位置。 - 在持续集成和部署管道中创建验证入口时,也可以使用该服务器。 例如,使用候选脚本启动服务器,并针对本地终结点运行测试套件。
- Azure 机器学习推理 HTTP 服务器是一个 Python 包,可用于在本地开发环境中轻松验证输入脚本(
Azure 机器学习推理 HTTP 服务器
在本地推理服务器中可以快速调试入口脚本 (score.py)。 如果基础评分脚本存在 bug,该服务器将无法初始化或者为模型提供服务。 相反,它会引发异常并指出发生问题的位置。
详细了解 Azure 机器学习推理 HTTP 服务器
从 pypi 源安装
azureml-inference-server-http包:python -m pip install azureml-inference-server-http启动服务器并将
score.py设置为入口脚本:azmlinfsrv --entry_script score.py使用
curl将评分请求发送到服务器:curl -p 127.0.0.1:5001/score
本地调试
可以在 MachineLearningNotebooks 存储库中找到示例本地部署笔记本,以探索可运行的示例。
警告
生产方案不支持本地 Web 服务部署。
若要进行本地部署,请修改代码以使用 LocalWebservice.deploy_configuration() 创建部署配置。 然后使用 Model.deploy() 部署该服务。 以下示例将模型(包含在 model 变量中)部署为本地 Web 服务:
适用于:
适用于 Python 的 Azure 机器学习 SDK v1
from azureml.core.environment import Environment
from azureml.core.model import InferenceConfig, Model
from azureml.core.webservice import LocalWebservice
# Create inference configuration based on the environment definition and the entry script
myenv = Environment.from_conda_specification(name="env", file_path="myenv.yml")
inference_config = InferenceConfig(entry_script="score.py", environment=myenv)
# Create a local deployment, using port 8890 for the web service endpoint
deployment_config = LocalWebservice.deploy_configuration(port=8890)
# Deploy the service
service = Model.deploy(
ws, "mymodel", [model], inference_config, deployment_config)
# Wait for the deployment to complete
service.wait_for_deployment(True)
# Display the port that the web service is available on
print(service.port)
如果定义你自己的 conda 规范 YAML,请将版本大于等于 1.0.45 的 azureml-defaults 作为 pip 依赖项列出。 需要此包才能将模型作为 Web 服务托管。
此时,你可以正常使用该服务。 以下代码演示如何将数据发送到服务:
import json
test_sample = json.dumps({'data': [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
]})
test_sample = bytes(test_sample, encoding='utf8')
prediction = service.run(input_data=test_sample)
print(prediction)
有关自定义 Python 环境的详细信息,请参阅创建和管理用于训练和部署的环境。
更新服务
在本地测试期间,可能需要更新 score.py 文件以添加记录或尝试解决发现的任何问题。 若要重新加载对 score.py 文件的更改,请使用 reload()。 例如,以下代码重新加载服务的脚本,然后向其发送数据。 使用更新后的 score.py 文件对数据进行评分:
重要说明
reload 方法仅适用于本地部署。 有关将部署更新到另一个计算目标的信息,请参阅如何更新 Web 服务。
service.reload()
print(service.run(input_data=test_sample))
注意
脚本从服务所使用的 InferenceConfig 对象指定的位置重新加载。
若要更改模型、Conda 依赖项或部署配置,请使用 update()。 以下示例更新服务使用的模型:
service.update([different_model], inference_config, deployment_config)
删除服务
若要删除服务,请使用 delete()。
检查 Docker 日志
可以通过服务对象打印详细的 Docker 引擎日志消息。 可以查看 ACI、AKS 和本地部署的日志。 以下示例演示如何打印日志。
# if you already have the service object handy
print(service.get_logs())
# if you only know the name of the service (note there might be multiple services with the same name but different version number)
print(ws.webservices['mysvc'].get_logs())
如果在日志中看到行 Booting worker with pid: <pid> 多次出现,则意味着没有足够的内存来启动辅助角色。
可以通过增加 deployment_config 中 memory_gb 的值来处理错误
Next steps
详细了解部署: