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

Azure DevOps中通过Azure ML SDK启动TensorFlow训练遇磁盘满问题求助

解决Azure ML添加TensorFlow依赖时磁盘已满的问题

问题背景

当前通过Azure DevOps的Azure CLI任务提交TensorFlow训练作业,命令如下:

az ml run submit-script -g $(ml.resourceGroup) -w $(ml.workspace) -e $(ml.DtExperimentName) --ct $(ml.computeName) -c cnn_training --source-directory . --path environment_setup -t ./metadata/cnn_run.json cnn_training.py --container_name  --model_path ./models/cnn_model.pkl --artifact_loc ./outputs/models/ --dataset_name data_ds

训练配置文件内容:

framework: Python
script: cnn_training.py
communicator: None
autoPrepareEnvironment: true
maxRunDurationSeconds:
nodeCount: 1
environment:
  name: cnn_model_demo
  python:
    userManagedDependencies: false
    interpreterPath: python
    condaDependenciesFile: .azureml/conda_dependencies.yml
    baseCondaEnvironment:
  docker:
    enabled: true
    baseImage: mcr.microsoft.com/azureml/base:intelmpi2018.3-ubuntu16.04
    sharedVolumes: true
    gpuSupport: false
    shmSize: 10g
    arguments: []
history:
  outputCollection: true
  snapshotProject: true
  directoriesToWatch:
  - logs
dataReferences:
  workspaceblobstore:
    dataStoreName: workspaceblobstore
    pathOnDataStore: cccdata
    mode: download
    overwrite: true
    pathOnCompute: 

核心问题:在conda_dependencies.yml中添加TensorFlow依赖后,作业触发磁盘已满错误,已尝试增大计算集群规模、修改shmSize,无效。

排查方向

磁盘满的根源通常是:

  • 老旧基础镜像的系统盘空间不足,conda安装TensorFlow时会下载大量依赖包及缓存文件
  • 数据默认下载到系统盘,占用额外空间
  • 作业快照、日志收集占用过多磁盘
  • conda依赖配置未优化,导致下载冗余包

解决方案

1. 更换轻量化/预构建的基础镜像

原基础镜像mcr.microsoft.com/azureml/base:intelmpi2018.3-ubuntu16.04版本过旧,系统盘空间预留有限,且需要从头安装TensorFlow。建议更换为:

  • 更轻量的Azure ML基础镜像:mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04(更新的Ubuntu版本,默认环境更精简)
  • 预构建的TensorFlow环境镜像:mcr.microsoft.com/azureml/tensorflow-2.10-ubuntu20.04-py38-cpu(已预装TensorFlow,无需手动安装,大幅减少磁盘占用)

修改配置中docker.baseImage字段即可。

2. 优化conda依赖配置

  • 指定TensorFlow具体版本:避免conda遍历所有兼容版本,减少下载量。示例conda_dependencies.yml:
    name: project_environment
    dependencies:
      - python=3.8
      - pip
      - pip:
        - tensorflow==2.10.0
        # 其他依赖
    
  • 清理缓存:在环境配置中添加post-install命令,安装完成后清理缓存。修改配置的docker.arguments:
    docker:
      arguments: ["bash", "-c", "pip install --no-cache-dir tensorflow==2.10.0 && rm -rf /root/.cache/pip && rm -rf /opt/conda/pkgs/*"]
    

3. 调整数据下载路径

配置中dataReferences.pathOnCompute为空,默认会将数据下载到系统盘根目录附近。指定到计算节点的临时磁盘(通常为/tmp或/azureml/tmp,空间更大且无需持久化):

dataReferences:
  workspaceblobstore:
    # ... 其他配置
    pathOnCompute: /tmp/cccdata

4. 减少不必要的磁盘占用

  • 关闭项目快照:将history.snapshotProject设为false,避免上传整个项目目录到节点占用磁盘
  • 限制日志收集范围:仅监控必要的日志目录,避免收集冗余文件

5. 检查计算集群磁盘配置

创建计算集群时,确保OS磁盘大小足够(建议至少100GB),部分低规格实例默认OS盘仅40GB,无法容纳TensorFlow及依赖包。可在Azure ML Studio或CLI中修改计算集群的磁盘配置。

后续推进步骤

  1. 优先更换预构建的TensorFlow基础镜像,快速验证是否解决磁盘满问题
  2. 若仍有问题,添加磁盘监控命令到训练脚本开头(如df -h),输出磁盘使用情况,定位占用空间的目录
  3. 逐步应用上述优化项,每次只调整一个变量,便于排查效果
  4. 验证数据下载到临时盘后,系统盘的占用情况
  5. 若使用GPU训练,切换到支持GPU的基础镜像,并开启gpuSupport: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:55:22