在Azure ml中使用已具有培训脚本的Docker容器进行培训

fzsnzjdm  于 2022-12-24  发布在  Docker
关注(0)|答案(1)|浏览(122)

我在Azure ml中使用一个已经有训练脚本的自定义Docker容器来寻找训练,但是到目前为止,我还没有在文档中找到任何东西。是否可以将一个自定义容器(包含训练脚本)上传到工件注册表,然后将其用于训练?
我看了所有的文档都没有找到任何东西。就像在顶点Ai中一样,我们有一个选项可以上传自定义容器,其中包含训练脚本,并通过顶点ai触发它。在Azure ML中寻找类似的东西。

ef1yzkbh

ef1yzkbh1#

你当然可以运行一个已经有训练脚本的Docker。你只需要记住两件事:

  1. AzureML不会执行你的docker的CMD,而是执行你为你的作业提供的命令。
    1.当AzureML在你的Docker上执行命令时,它会在放置code文件的文件夹中执行。如果你没有任何文件夹,那将是一个空文件夹。所以你应该在执行命令前导航到正确的文件夹。
    这里有一个使用简单docker danielschneider/hello的例子,它包含python和一hello.py输出hello world的www.example.com文件。
    如果您在本地运行它,它将执行以下操作:
docker run -it danielschneider/hello python hello.py
> hello world

下面介绍如何在AzureML中的群集节点上运行该命令

1.创建包含以下内容的yaml文件,并将其保存为test.yaml

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
type: command

environment: 
  image: danielschneider/hello

command: |
  cd /  
  python hello.py

# replace below cpu-cluster with the name of your compute target
compute: azureml:cpu-cluster

1.使用CLI执行作业:

az ml job create -f test.yaml

(this当然,需要安装Azure CLI和AzureML扩展--有关说明,请参见here

有关上述YAML的一些详细信息

$schematype不是必需的,但它们有助于VSCode在您编辑文件时提供智能感知。
environment显然指向docker.io我的hello映像的www.example.com位置。您可以指向工作区容器注册表(或连接到您的工作区的任何其他容器注册表)中的任何公共映像或私有映像。此外,您还可以从您的工作区或附加的注册表指向已注册的环境。
command是在docker上执行的命令。正如您所看到的,在执行命令之前,我导航到根目录,因为hello.py位于docker映像中。请注意,|是开始多行字符串的标准YAML表示法。
对于compute,您显然必须使用您想要在其上运行映像的任何计算。

相关问题