如何在Azure后台运行Python脚本及Excel数据导入问题咨询
问题解答
1. 如何让Excel数据正确传入Azure ML Pipeline的Python脚本?
要在Azure ML Pipeline中传递Excel数据,核心是使用Azure ML的Dataset机制,而非直接传递本地文件,具体步骤如下:
- 第一步:将Excel文件注册为Azure ML的Tabular Dataset
可在Azure ML Studio中直接上传Excel文件并完成注册,也可通过Python SDK代码实现:from azureml.core import Workspace, Dataset ws = Workspace.from_config() datastore = ws.get_default_datastore() dataset = Dataset.Tabular.from_excel_files(path=(datastore, 'path/to/your/file.xlsx')) dataset.register(ws, name='ml_project_excel') - 第二步:在Pipeline的Python脚本中加载Dataset
在机器学习脚本内,通过运行上下文获取输入的Dataset并转换为DataFrame:from azureml.core import Run import pandas as pd run = Run.get_context() # 输入名称需与Pipeline组件配置的输入名对应 input_dataset = run.input_datasets['excel_input'] df = input_dataset.to_pandas_dataframe() - 第三步:配置Pipeline组件的输入
定义Pipeline组件时,将注册好的Dataset指定为输入参数,避免使用本地文件路径(计算实例无法访问本地路径)。
2. 更优的长时间运行任务方案
针对48-168小时的批量任务,推荐以下两种可靠方案:
方案A:用Screen/Tmux在Azure ML计算实例后台运行脚本
这是最简单的持久化会话方案,完全适配GridSearchCV(n_jobs=-1)的多进程场景:
- 若计算实例终端未安装
screen,执行命令安装:sudo apt-get update && sudo apt-get install screen - 创建持久化会话:
screen -S ml_grid_search - 在会话内运行Python脚本:
python your_ml_script.py - 按
Ctrl+A再按D,将会话后台挂起,此时关闭浏览器或断开连接,进程仍会持续运行 - 后续需查看进度时,重新连接会话:
screen -r ml_grid_search
- 该方案比
ctrl-z+bg+disown更可靠,所有子进程均属于screen会话,不会因父shell关闭而终止。
方案B:使用Azure ML批量作业(Batch Job)
这是Azure ML专为长时间任务设计的服务,更规范且易于管理:
- 配置运行环境:将Python依赖(如scikit-learn、pandas等)打包成Conda环境文件或Docker镜像
- 创建低优先级计算集群:低优先级VM价格比常规VM便宜约70%,适合批量任务,学生额度可完全覆盖
- 提交Batch Job:在Azure ML Studio或通过SDK指定计算集群、脚本路径、输入输出Dataset
- 任务会在集群独立运行,可在Studio中实时监控进度、查看日志,关闭浏览器也不受影响
- 优点:支持自动重试、资源弹性伸缩,适合大规模Grid Search任务,无需手动维护会话。
其他备选方案
- 若觉得Azure ML配置复杂,可使用GitHub学生包提供的DigitalOcean额度,创建云服务器后同样用Screen/Tmux运行脚本,成本极低
- 不推荐Google Colab:免费版有12小时运行限制,资源不稳定,速度远不如本地或Azure计算实例
内容的提问来源于stack exchange,提问作者user6543460
相关产品推荐
相关产品推荐

