如何加载Azure ML导出的.pkl模型在本地预测,需用到所有导出文件吗?
Azure ML本地加载模型预测操作指南
三个下载文件的作用
你从Azure ML下载的三个文件分别对应不同用途,不需要全部使用,但全用可以避免绝大多数兼容问题:
*.pkl模型文件:核心必备文件,存储了序列化后的完整模型结构与权重,单独使用它也可以完成预测conda.yaml依赖配置文件:记录了模型训练时的Python版本、各依赖库的精确版本号,用来解决本地环境与训练环境版本不兼容的问题- 推理脚本(一般命名为
score.py):Azure ML自动生成的标准推理模板,内置了模型加载、数据预处理、预测后处理的完整逻辑,不需要你自行复现训练时的处理流程
方式1:仅使用.pkl文件(适合熟悉训练全流程的用户)
仅用模型文件的前提是你明确知道训练时的依赖版本、输入数据格式、预处理/后处理逻辑,操作步骤如下:
- 本地安装和训练环境版本一致的机器学习框架(比如Scikit-learn、PyTorch等)
- 用对应序列化工具加载模型,示例代码如下:
import pickle # 替换为你的pkl文件名 with open("model.pkl", "rb") as f: model = pickle.load(f)
- 按照训练时的逻辑处理待预测数据,直接调用模型预测方法即可:
# input_data为按照训练要求预处理后的输入数据 pred_result = model.predict(input_data)
注意:该方式容易出现依赖版本不兼容、预处理逻辑不一致导致预测结果偏差的问题,非熟悉场景不推荐使用
方式2:使用全部三个文件(最稳妥的通用方案)
这是最推荐的操作方式,不需要你了解模型的训练细节即可拿到正确结果:
- 先配置运行环境:
- 本地安装Anaconda/Miniconda环境管理工具
- 终端进入三个文件所在的文件夹,执行命令创建对应环境:
conda env create -f conda.yaml - 执行命令激活创建好的环境:
conda activate <yaml中第一行name字段对应的环境名>
- 调用自带的推理逻辑完成预测:
自动生成的score.py已经内置了init()(初始化加载模型)和run(input_data)(执行预测)两个函数,你可以直接调用,示例代码如下:
from score import init, run # 加载模型 init() # 替换为你的待预测数据,格式要求可以参考score.py里的run函数注释 test_data = {"data": [你的待预测样本]} pred_result = run(test_data) print(pred_result)
内容的提问来源于stack exchange,提问作者Crazy
相关产品推荐
相关产品推荐

