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

Azure ML Studio:如何编程创建使用不同SelectColumnsTransform的Web服务端点

适配不同SelectColumnsTransform的多Web服务端点实现方案

我之前也碰到过Azure ML Studio里这个端点修改的限制问题,结合实际操作经验,整理了几个可行的编程实现方案,帮你搞定适配不同训练数据的文档分类服务:

先理清楚核心限制

你遇到的两个卡点确实是原生Web服务的硬限制:

  • Patch-AmlWebServiceEndpoint 只允许修改模型资源,完全没法编辑SelectColumnsTransform这类转换模块,返回EditableResourcesNotAvailable是正常的
  • SelectColumnsTransform不像ImportData那样支持把列选择逻辑暴露成Web服务参数,没法动态切换使用不同的转换文件

方案1:为每个转换创建独立的预测实验+端点(最直接的原生方案)

这是官方支持最稳定的方式,步骤很清晰:

  1. 复制基准预测实验:用PowerShell模块或者Python SDK,先把你的基础预测实验模板复制一份,每个数据集对应一个新实验
  2. 替换转换Blob路径:找到新实验里的SelectColumnsTransform模块,修改它指向对应训练数据生成的转换Blob文件。给你个PowerShell代码片段参考:
    # 获取你的基准预测实验
    $baseExp = Get-AmlExperiment -WorkspaceId "你的工作区ID" -Name "基准预测实验"
    # 复制出对应数据集X的实验
    $newExp = Copy-AmlExperiment -Experiment $baseExp -Name "数据集X-预测实验"
    # 定位到SelectColumnsTransform模块并修改Blob路径
    $transformModule = $newExp.Modules | Where-Object {$_.ModuleType -eq "SelectColumnsTransform"}
    $transformModule.Parameters["transformBlobLocation"] = "https://你的存储账户.blob.core.windows.net/容器名/数据集X的转换文件.dprep"
    # 保存修改后的实验
    Update-AmlExperiment -Experiment $newExp
    
  3. 部署独立端点:对每个修改好的实验,用New-AmlWebService创建专属的Web服务端点,每个端点就自带对应的转换逻辑了

方案2:用自定义Python脚本动态加载转换(无需维护多个实验)

如果不想搞一堆重复实验,这个方案更灵活:

  1. 把所有转换文件存在Blob存储:给每个转换文件起个和数据集对应的名字,比如dataset1_transform.dprep、dataset2_transform.dprep
  2. 替换原转换模块为自定义Python脚本:写个Python脚本模块,接收输入数据和一个transform_id参数,根据ID加载对应的转换文件并应用。核心代码大概是这样:
    import azureml.dataprep as dprep
    from azure.storage.blob import BlobServiceClient
    
    def run(input_data, transform_id):
        # 这里可以从Key Vault取连接字符串,避免硬编码
        blob_conn_str = "你的Blob存储连接字符串"
        container_name = "存储转换文件的容器名"
        transform_blob_name = f"{transform_id}_transform.dprep"
    
        # 下载并加载转换文件
        blob_service = BlobServiceClient.from_connection_string(blob_conn_str)
        blob_client = blob_service.get_blob_client(container=container_name, blob=transform_blob_name)
        transform_bytes = blob_client.download_blob().readall()
        transform = dprep.load_transform_from_bytes(transform_bytes)
    
        # 应用转换并返回结果
        input_df = dprep.read_csv(input_data)
        transformed_df = input_df.apply_transform(transform)
        return transformed_df.to_csv()
    
  3. 暴露transform_id为Web服务参数:把transform_id设置成Web服务的可输入参数,这样同一个端点,只要传不同的ID就能用不同的转换逻辑了

方案3:用Azure ML Pipeline做动态路由(适合批量/自动化场景)

如果你的服务需要和其他自动化流程结合,用Pipeline端点更合适:

  1. 创建参数化Pipeline:定义一个Pipeline,把SelectColumnsTransform的Blob路径做成Pipeline参数
  2. 为每个转换创建Pipeline端点:用PipelineEndpoint功能,给每个数据集对应的转换路径创建独立的端点
  3. 直接调用对应端点:每个端点固定对应一个转换,调用的时候不用传额外参数,直接用对应的端点URL就行

一些注意事项

  • 不管用哪个方案,都得确保Web服务有访问转换Blob文件的权限,推荐用托管身份或者SAS token授权,别硬编码连接字符串
  • 方案1适合转换不怎么更新的场景,维护起来简单;方案2适合需要动态切换转换的场景,灵活性更高
  • 如果用Python的话,推荐用最新的azure-ai-ml包,比旧的azureml-sdk功能更全,文档也更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:40