如果在Sagemaker中传递环境变量给Sagemaker Tuner Job?

0

【以下的问题经过翻译处理】 Sagemaker训练任务支持在训练作业中即时设置环境变量:

 "环境": { 
      "string" : "string" 
   },

https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html

我没有找到tunning任务中如何做同样的事情:

https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html

根据我的测试,Python SDK中的SagemakerTuner仅忽略传递的估算器中设置的环境变量。

是否有办法以编程方式将环境变量传递给由tuner作业启动的培训作业,或者目前不支持该功能?

profile picture
专家
已提问 8 个月前19 查看次数
1 回答
0

【以下的回答经过翻译处理】 感谢您提出这个问题。是的,正如您所指出的那样,在基础的CreateHyperparameterTuningJobAPI中不支持Environment集合,因此当运行调参器时,SageMaker Python SDK无法使用它。

如在SM Py SDK GitHub问题页面中讨论的那样,您可以考虑改为使用超参数来通过参数传递给作业。

如果您特别需要环境变量来进行某些其他进程/库,还可以探索通过Python脚本设置变量(也许是从超参数到环境变量的映射)。

或者另一种选择是自定义您的容器映像以通过ENV命令来导入变量。例如,要自定义现有的AWS Deep Learning容器(框架容器),您可以:

  • 使用sagemaker.image_uris.retrieve(...)查找给定框架、版本、区域等的基础镜像URI。您需要对此注册表进行Docker身份验证以及您自己的Amazon ECR帐户。
  • 创建一个Docker文件,将此基础镜像URI作为参数并从中构建FROM。类似于此示例
  • 添加所需的ENV命令以导入您需要的(静态)环境变量
  • docker build您的自定义容器(将基础镜像URI作为“ --build-arg”传递),将其上传到Amazon ECR
profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则