You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure ML v2部署模型时如何导入自定义脚本?

Azure ML v2 部署时导入自定义脚本文件的解决方案

我基于心脏病数据集构建了一个包含自定义离群值移除转换器(OutlierRemover)的模型 pipeline。在Azure ML v1中,我把score.py和outlierremover.py等相关文件放在./assets文件夹下,通过以下配置实现导入使用:

inference_config = InferenceConfig(
    entry_script="score.py", 
    environment=myenv, 
    source_directory='./assets')

但迁移到v2时,官方文档的「创建推理资源」部分没有提及对应方案。v2中对应的CodeConfiguration代码如下:

# configure an inference configuration with a scoring script
from azure.ai.ml.entities import CodeConfiguration
code_config = CodeConfiguration(
    code="../model-1/onlinescoring", scoring_script="score.py"
)

看起来没有参数可以直接添加outlierremover.py这类额外文件。另外我注意到部署UI里有添加自定义脚本的选项,但Python SDK v2里找不到对应的配置方式,想知道有没有顺畅的解决方法。


解决方法

其实v2的CodeConfiguration中的code参数就是对应v1的source_directory,只要把自定义脚本和score.py放在同一个目录(或子目录),将code指向该目录即可,具体步骤:

  • 将score.py、outlierremover.py及其他依赖文件放在同一文件夹下,比如./inference_code
  • 配置CodeConfiguration时指向该文件夹:
from azure.ai.ml.entities import CodeConfiguration
code_config = CodeConfiguration(
    code="./inference_code", scoring_script="score.py"
)
  • 在score.py中正常导入自定义模块:
from outlierremover import OutlierRemover

原理是:v2会将code指定目录下的所有文件(包括子目录)打包部署到推理环境,和v1的source_directory行为一致,只是参数命名变更,官方文档未明确说明这一点导致误解。

如果自定义脚本在子目录中,需确保Python能识别模块:

  • 在子目录下添加空的__init__.py文件
  • 或者在score.py中手动添加路径:
import sys
sys.path.append("./subdirectory")
from outlierremover import OutlierRemover

内容的提问来源于stack exchange,提问作者Freejack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:17:12