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

如何在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加载(推荐,灵活度高)

  1. 安装模型依赖库(按需执行):
    %pip install scikit-learn pandas
    
  2. 连接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)
    
  3. 加载模型并执行预测:
    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池批量预测

  1. 确保SQL池已启用机器学习服务,并将模型文件上传至Synapse关联的ADLS Gen2存储。
  2. 创建外部数据源指向模型存储路径:
    CREATE EXTERNAL DATA SOURCE ModelStorage
    WITH (
        LOCATION = 'abfss://容器名@存储账户名.dfs.core.windows.net/模型存储路径/',
        TYPE = HADOOP
    );
    
  3. 调用外部脚本加载模型并预测:
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:30:53