Azure ML笔记本在Blob存储上传CSV后自动重训练及部署方案咨询
Azure Blob触发ML模型自动重训练+部署实现方案
一、基础资源准备
- 先搭好核心资源:Azure存储账户(新建两个Blob容器:
training-data存上传的训练数据,model-artifacts存生成的.pkl模型)、Azure机器学习(ML)工作区。 - 在ML工作区里把这个存储账户关联成数据存储,让训练脚本/Notebook能直接访问Blob里的文件。
- 准备训练逻辑:把你的训练流程封装成可自动化执行的脚本(比如
train.py),如果一定要用Notebook,建议用papermill做参数化运行,纯Notebook不太适合自动化触发。
二、Blob上传触发机制实现
用Azure Event Grid + Azure Functions组合监听上传事件,触发训练:
- 给存储账户配置Event Grid订阅:筛选条件设为「当新Blob添加到
training-data容器时触发」,终点选择Azure Function。 - 写一个Python类型的Azure Function,触发类型选
Event Grid Trigger,核心逻辑是调用ML训练作业:from azureml.core import Workspace, ScriptRunConfig, Experiment import azure.functions as func def main(event: func.EventGridEvent): # 连接ML工作区(提前把config.json放到函数目录) ws = Workspace.from_config() # 定义训练作业配置 script_config = ScriptRunConfig( source_directory='./train-scripts', script='train.py', compute_target='your-compute-cluster' # 替换成你的计算集群名称 ) # 提交训练实验 exp = Experiment(ws, 'auto-retrain-exp') run = exp.submit(script_config) run.wait_for_completion(show_output=True)
三、训练与部署核心逻辑
不管用脚本还是参数化Notebook,必须包含这几步:
- 数据加载:用Azure ML SDK或者
azure-storage-blob库从training-data容器读取新上传的数据。 - 模型重训练:加载旧模型(如果有)或从头训练,完成后生成更新后的
.pkl文件。 - 模型存储:把新.pkl文件上传到
model-artifacts容器,建议按版本命名(比如model_v3.pkl)方便回溯。 - 自动部署:用ML SDK把新模型部署到在线端点(测试用ACI,生产用AKS或托管在线端点):
# 训练脚本里的部署示例 from azureml.core import Model from azureml.core.webservice import ManagedOnlineEndpoint, ManagedOnlineDeployment # 注册模型到ML工作区 model = Model.register( workspace=ws, model_path='./updated_model.pkl', model_name='my-prediction-model', tags={'data_version': 'latest'} ) # 创建/更新托管在线端点 endpoint = ManagedOnlineEndpoint( name='my-model-endpoint', workspace=ws, description='Auto-updated prediction endpoint' ) endpoint.create() # 创建部署 deployment = ManagedOnlineDeployment( name='blue', endpoint=endpoint.name, model=model, instance_type='Standard_DS3_v2', instance_count=1 ) deployment.create()
四、验证与监控
- 手动上传测试数据到
training-data,检查Event Grid是否触发Function,ML工作区里的实验是否正常启动。 - 查看训练日志,确认.pkl文件生成、模型部署是否成功。
- 给ML工作区加告警规则:训练失败、部署失败时自动发邮件/Teams通知。
可选优化
- 用Azure ML数据集做数据版本控制,每次训练绑定对应的数据版本,方便排查问题。
- 在部署前加模型校验步骤:用验证集测试新模型准确率,达标再执行部署。
- 复杂场景可以换Azure DevOps Pipeline,实现多环境部署、审批流程等更灵活的CI/CD逻辑。
内容的提问来源于stack exchange,提问作者Pritiranjan Biswal
相关产品推荐
相关产品推荐

