如果在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
專家
已提問 1 年前檢視次數 34 次
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
專家
已回答 1 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南