我可以在基于容器的 Azure 批处理池中使用 docker 卷吗
Can I use docker volumes in container based Azure batch pools
场景:我在同一个 dataset
上有多个任务 运行ning DL
个模型。在每个任务中下载相同的 dataset
变得很浪费,因此寻找允许跨需要相同 dataset
.[=16= 的不同任务 运行 持久保存下载数据的方法]
我探索了 ResourceFiles 和 ApplicationPackages,但是根据我的理解,它们不符合我的要求,原因如下
- ResourceFiles 下载每个任务的数据 运行 并且不会持久化。
- ApplicationPackages 有配额限制(默认为 20)。而且它们不能从 docker 容器中创建。
根据 docker 卷功能,我可以 运行 我的任务使用相同的卷 ID,下载的数据将保留在 VM 中。
由于 Azure 批处理不直接公开 运行 容器的“docker 运行”命令,是否有任何其他方法可以使用 [=53= 为批处理任务指定使用卷] SDK?
我们可以使用 TaskContainerSettings 的“container_run_options”来提及 docker 卷吗?
编辑
我尝试在 TaskContainerSettings 中指定卷,但在尝试写入挂载路径时,出现权限被拒绝错误
PermissionError: [Errno 13] Permission denied: '/opt/docker/Gy9EKVB728YcVZgn7e2AVuuQ/00000001.jpg'
找到了使用 docker 卷的方法。
首先:
使用 TaskContainerSettings 的“container_run_options”来提及 docker 个卷。
task_container_settings = batch.models.TaskContainerSettings(
image_name=image_name,
container_run_options=f"-v {<volume_id>}:{<path>}"
)
这将在 /mnt/docker/volumes 中安装一个名为 的卷,并且可以在上述的容器中访问。
第二个:运行 池范围内的任务和提升的管理员权限。否则,您将在尝试写入容器中的挂载卷路径时出现权限错误。
task = batch.models.TaskAddParameter(
id=task_id,
command_line=command,
container_settings=task_container_settings,
user_identity=batchmodels.UserIdentity(
auto_user=batchmodels.AutoUserSpecification(
scope=batchmodels.AutoUserScope.pool,
elevation_level=batchmodels.ElevationLevel.admin)
)
)
这将 运行 具有 root 权限的任务,以便由该任务旋转的容器可以访问已安装的卷。
场景:我在同一个 dataset
上有多个任务 运行ning DL
个模型。在每个任务中下载相同的 dataset
变得很浪费,因此寻找允许跨需要相同 dataset
.[=16= 的不同任务 运行 持久保存下载数据的方法]
我探索了 ResourceFiles 和 ApplicationPackages,但是根据我的理解,它们不符合我的要求,原因如下
- ResourceFiles 下载每个任务的数据 运行 并且不会持久化。
- ApplicationPackages 有配额限制(默认为 20)。而且它们不能从 docker 容器中创建。
根据 docker 卷功能,我可以 运行 我的任务使用相同的卷 ID,下载的数据将保留在 VM 中。 由于 Azure 批处理不直接公开 运行 容器的“docker 运行”命令,是否有任何其他方法可以使用 [=53= 为批处理任务指定使用卷] SDK?
我们可以使用 TaskContainerSettings 的“container_run_options”来提及 docker 卷吗?
编辑
我尝试在 TaskContainerSettings 中指定卷,但在尝试写入挂载路径时,出现权限被拒绝错误
PermissionError: [Errno 13] Permission denied: '/opt/docker/Gy9EKVB728YcVZgn7e2AVuuQ/00000001.jpg'
找到了使用 docker 卷的方法。
首先: 使用 TaskContainerSettings 的“container_run_options”来提及 docker 个卷。
task_container_settings = batch.models.TaskContainerSettings(
image_name=image_name,
container_run_options=f"-v {<volume_id>}:{<path>}"
)
这将在 /mnt/docker/volumes 中安装一个名为
第二个:运行 池范围内的任务和提升的管理员权限。否则,您将在尝试写入容器中的挂载卷路径时出现权限错误。
task = batch.models.TaskAddParameter(
id=task_id,
command_line=command,
container_settings=task_container_settings,
user_identity=batchmodels.UserIdentity(
auto_user=batchmodels.AutoUserSpecification(
scope=batchmodels.AutoUserScope.pool,
elevation_level=batchmodels.ElevationLevel.admin)
)
)
这将 运行 具有 root 权限的任务,以便由该任务旋转的容器可以访问已安装的卷。