Azure ML中Yolov8训练Job与Dataset YAML配置及权限问题咨询
解决方案:修复Azure ML CLI v2训练Yolov8的权限拒绝问题
一、修正YAML文件配置
1. 修正job.yaml中的数据资产引用
你当前training_data的path格式错误,Azure ML数据资产的正确引用格式是azureml:<data-asset-name>:<version>,而非azure:data_asset:1。修改后示例:
inputs: training_data: type: uri_folder mode: ro_mount path: azureml:your-data-asset-name:1 # 替换为你的数据资产名称和版本
2. 调整custom_dataset.yaml的路径与语法
当数据以ro_mount模式挂载后,${{ inputs.training_data }}指向挂载根目录,需将train/test/val路径改为相对路径(去掉开头斜杠),同时修正YAML语法错误:
path: ../dataset # 该行会被sed替换为挂载路径,无需手动修改 train: images/train/ # 改为相对路径,基于path指定的根目录 test: images/test/ val: images/test/ nc: 2 # YAML语法要求用冒号,替换原有的等号 # class names names: ['class1', 'class2'] # 数组元素加引号,避免语法解析问题
3. 优化job中的sed命令
确保路径替换后的格式正确,避免转义问题,调整命令如下:
command: | sed -i "s|^path:.*|path: '${{ inputs.training_data }}'|" custom_dataset.yaml yolo task=detect train data=custom_dataset.yaml model=${{ inputs.model_to_train }} epochs=10 project=yolov8-experiment name=experiment
二、配置必要的权限
1. 计算集群托管标识的存储权限
Azure ML计算集群的托管标识需要访问数据资产对应的存储账户:
- 进入Azure门户,找到数据资产所在的存储账户
- 转到「访问控制(IAM)」页面,点击「添加角色分配」
- 选择「存储Blob数据读取者」角色,添加对象为你的Azure ML计算集群托管标识(名称通常为
azureml-compute-<cluster-name>)
2. 用户账号的权限
确保提交作业的账号拥有以下权限:
- 工作区的「机器学习数据科学家」或「参与者」角色
- 数据资产的「读取」权限(可在Azure ML Studio的数据资产页面配置)
3. 存储容器权限检查
若数据资产存储在自定义容器中:
- 若容器为私有访问级别,必须通过上述IAM角色授权;若为blob匿名读取,可临时测试,但生产环境建议使用IAM授权。
内容的提问来源于stack exchange,提问作者aditijedhe
相关产品推荐
相关产品推荐

