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

Azure ML中使用Blob存储训练YOLO-NAS时数据路径找不到的问题

在Azure ML中解决YOLO-NAS加载Blob存储数据的路径问题

问题核心

YOLO-NAS的官方数据加载器(如coco_detection_yolo_format_train)仅支持本地文件系统路径,无法直接识别Azure ML的azureml://格式URI,这是导致路径找不到错误的根本原因。必须将Blob存储的数据映射到计算实例/集群的本地目录后,才能被YOLO-NAS加载。

解决方案

方法1:直接使用已挂载的本地路径

从你提供的挂载点截图来看,Blob存储已经挂载到计算实例的本地目录(通常格式为/mnt/azureml/<datastore-name>)。只需修改数据路径配置:

# 替换原有的azureml://路径为挂载后的本地路径
DATA_DIR = '/mnt/azureml/faucetpoc/'  # 对应截图中的挂载点路径
TRAIN_IMAGES_DIR = 'train/images'
TRAIN_LABELS_DIR = 'train/labels'

VAL_IMAGES_DIR = 'valid/images'
VAL_LABELS_DIR = 'valid/labels'

TEST_IMAGES_DIR = 'test/images/'
TEST_LABELS_DIR = 'test/labels'

CLASSES = ['faucet','sink','toilet']
NUM_CLASSES = len(CLASSES)

dataset_params = {
    'data_dir': DATA_DIR,
    'train_images_dir':TRAIN_IMAGES_DIR,
    'train_labels_dir':TRAIN_LABELS_DIR,
    'val_images_dir':VAL_IMAGES_DIR,
    'val_labels_dir':VAL_LABELS_DIR,
    'test_images_dir':TEST_IMAGES_DIR,
    'test_labels_dir':TEST_LABELS_DIR,
    'classes': CLASSES
}

修改后重新运行数据加载代码即可,YOLO-NAS会自动从本地挂载路径读取数据,完成预处理和训练。

方法2:通过Azure ML Dataset加载(适合计算集群场景)

如果使用计算集群训练,推荐通过Azure ML Dataset管理数据,自动完成挂载:

# 1. 连接到Azure ML工作区
from azureml.core import Workspace, Dataset
ws = Workspace.from_config()

# 2. 获取已创建的Dataset(需提前在Azure ML工作室中从Blob存储创建)
dataset = Dataset.get_by_name(ws, name='your-dataset-name')

# 3. 将Dataset挂载到本地临时目录
mount_context = dataset.mount()
mount_context.start()

# 4. 使用挂载后的本地路径作为DATA_DIR
DATA_DIR = mount_context.mount_point

# 后续的dataset_params和数据加载代码保持不变
dataset_params = {
    'data_dir': DATA_DIR,
    # ... 其他参数不变
}

# 训练完成后可停止挂载
# mount_context.stop()

关键注意事项

  • 确保计算实例/集群拥有Blob存储的访问权限:可通过系统分配托管标识、存储账户密钥或SAS令牌配置权限。
  • 计算集群场景下,也可在运行配置中直接指定数据存储挂载,无需手动写挂载代码。
  • YOLO-NAS不会自动拉取云端Blob数据,必须先将数据映射到本地文件系统,其数据加载器才能识别并处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:03:04