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

如何配置YOLOv8 yaml文件以访问Azure Blob存储数据集(Azure ML环境)

解决Azure ML SDK v2中YOLOv8无法定位Datastore数据集的问题

核心思路

Azure ML计算节点无法直接访问Blob Datastore的URI,必须通过挂载/下载将数据集映射到计算节点的本地文件系统,再让YOLO的custom.yaml指向这个本地路径。以下是具体操作流程:


步骤1:配置数据集挂载到计算节点

方式一:通过作业Input直接挂载(推荐)

使用Azure ML SDK v2的Input类定义数据集,设置mode="mount",Azure ML会自动将Datastore路径挂载到计算节点的临时目录。

示例代码:

from azure.ai.ml import MLClient, command, Input
from azure.identity import DefaultAzureCredential

# 初始化MLClient连接工作区
ml_client = MLClient(
    DefaultAzureCredential(),
    subscription_id="你的订阅ID",
    resource_group_name="你的资源组",
    workspace_name="你的工作区名称"
)

# 定义Datastore数据集输入:挂载指定路径
data_input = Input(
    type="uri_folder",
    path="azureml://datastores/你的Datastore名称/paths/数据集在Blob中的根目录",  # 例如:/yolov8-dataset
    mode="mount"  # 大数据集用mount,小数据集可改用download
)

# 定义训练作业
job = command(
    code="./src",  # 本地存放训练脚本、custom.yaml的目录
    command="yolo train data=${{inputs.data}}/custom.yaml model=yolov8n.pt epochs=10",
    inputs={
        "data": data_input
    },
    environment="你的YOLOv8环境名称@latest",  # 需提前创建包含ultralytics的环境
    compute="你的计算集群名称"
)

# 提交并监控作业
returned_job = ml_client.jobs.create_or_update(job)
ml_client.jobs.stream(returned_job.name)

方式二:在训练脚本中动态修改路径

如果custom.yaml随本地代码上传到作业工作目录,可在脚本中获取挂载路径并自动修改配置:

训练脚本train.py示例:

import yaml
import os
from ultralytics import YOLO

# 获取Azure ML自动设置的挂载路径环境变量
data_mount_path = os.environ.get("AZUREML_DATA_INPUT_data")

# 修改custom.yaml的path字段
yaml_config_path = "./custom.yaml"
with open(yaml_config_path, "r") as f:
    config = yaml.safe_load(f)
config["path"] = data_mount_path  # 替换为计算节点本地的挂载路径
with open(yaml_config_path, "w") as f:
    yaml.dump(config, f)

# 启动训练
model = YOLO("yolov8n.pt")
model.train(data=yaml_config_path, epochs=10)

对应的作业command改为:

python train.py

步骤2:确保custom.yaml的路径逻辑正确

无论用哪种方式,custom.yaml中train、val必须是相对于path的相对路径,示例结构:

path: ./  # 若yaml与数据集根目录同级,或改为挂载的绝对路径
train: images/train
val: images/val
nc: 3  # 你的自定义类别数
names: ["cat", "dog", "bird"]

步骤3:验证挂载有效性

可在训练脚本中添加调试代码,确认数据集是否正确映射:

import os
print("数据集挂载路径:", data_mount_path)
print("根目录内容:", os.listdir(data_mount_path))
print("训练图像数量:", len(os.listdir(os.path.join(data_mount_path, "images", "train"))))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:22:42