如何在Synapse Analytics中调用ML Studio已注册的ML模型
实现指引:ML Studio模型在Synapse Analytics中离线预测
1. ML Studio训练并注册模型
- 完成模型训练后,可通过两种方式注册到模型注册表:
- 代码注册:训练脚本中集成
mlflow.register_model(Azure ML原生支持MLflow),指定模型路径、名称和版本; - 界面注册:进入ML Studio的「模型」页面,点击「注册」,选择训练产出的模型文件(如
.pkl、SavedModel、.onnx等离线可用格式),填写名称、版本等元信息。
- 代码注册:训练脚本中集成
- 注意:优先选择无需依赖部署端点的通用格式,避免使用仅适用于在线部署的特殊封装格式。
2. Synapse Analytics中处理数据
- 使用Synapse Notebook或SQL池完成数据清洗、特征工程,确保最终输出的数据集:
- 特征列名、数据类型与模型训练时的输入完全匹配;
- 可通过Spark DataFrame或Synapse内部表存储,方便后续调用。
3. Synapse中加载模型并执行预测
方式1:Synapse Notebook加载(推荐,灵活度高)
- 安装模型依赖库(按需执行):
%pip install scikit-learn pandas - 连接ML工作区并下载模型:
from azureml.core import Workspace from azureml.core.model import Model # 通过Synapse关联的ML工作区配置初始化(无需手动输入密钥) ws = Workspace.from_config() # 加载指定名称和版本的模型 model = Model(ws, name="你的模型名称", version=1) # 下载模型到Notebook本地目录 model_local_path = model.download(target_dir="./trained_model", exist_ok=True) - 加载模型并执行预测:
import pickle import pandas as pd # 根据模型格式加载示例(Scikit-learn模型用pickle) with open(f"{model_local_path}/model.pkl", "rb") as f: trained_model = pickle.load(f) # 读取Synapse中处理好的数据(从内部表读取) processed_df = spark.sql("SELECT * FROM 你的处理后数据表").toPandas() # 执行预测并添加结果列 processed_df["预测结果"] = trained_model.predict(processed_df[["特征列1", "特征列2"]]) # 将结果写回Synapse内部表 spark.createDataFrame(processed_df).write.mode("overwrite").saveAsTable("预测结果表")
方式2:Synapse SQL池批量预测
- 确保SQL池已启用机器学习服务,并将模型文件上传至Synapse关联的ADLS Gen2存储。
- 创建外部数据源指向模型存储路径:
CREATE EXTERNAL DATA SOURCE ModelStorage WITH ( LOCATION = 'abfss://容器名@存储账户名.dfs.core.windows.net/模型存储路径/', TYPE = HADOOP ); - 调用外部脚本加载模型并预测:
EXEC sp_execute_external_script @language = N'Python', @script = N' import pickle import pandas as pd # 从存储加载模型 with open("/模型存储路径/model.pkl", "rb") as f: model = pickle.load(f) # 读取输入数据并预测 input_data = InputDataSet.toPandas() input_data["预测结果"] = model.predict(input_data[["特征列1", "特征列2"]]) OutputDataSet = input_data ', @input_data_1 = N'SELECT * FROM 处理后数据表', @input_data_1_name = N'InputDataSet', @output_data_1_name = N'OutputDataSet' WITH RESULT SETS ((特征列1 INT, 特征列2 FLOAT, 预测结果 INT));
关键注意事项
- 权限配置:确保Synapse工作区拥有Azure ML模型注册表的读取权限,以及ADLS存储的读写权限(SQL池方式需额外配置);
- 模型兼容性:避免使用依赖GPU或特殊硬件的模型,Synapse默认使用CPU环境,如需GPU需配置对应计算池;
- 版本管理:每次模型更新后,在Synapse中指定对应版本加载,避免使用过时模型。
内容的提问来源于stack exchange,提问作者Pythonista
相关产品推荐
相关产品推荐

