谷歌云平台提交训练作业,如何从训练代码中读取 USER_ARGS?
Posted
技术标签:
【中文标题】谷歌云平台提交训练作业,如何从训练代码中读取 USER_ARGS?【英文标题】:Google Cloud Platform submit training job, how to read USER_ARGS from training code? 【发布时间】:2019-11-27 11:12:31 【问题描述】:我正在使用
在谷歌云平台上提交培训作业gcloud ai-platform jobs submit training $JOB_NAME
--scale-tier basic
--package-path $TRAINING_PACKAGE_PATH
--module-name $MAIN_TRAINER_MODULE
--job-dir $JOB_DIR
--runtime-version $RUNTIME_VERSION
--python-version $PYTHON_VERSION
--region $REGION
我的训练代码看起来有点像在线教程cloudml-samples 中的代码。 从Packaging a Training Application 指南中,我看到您可以通过添加将参数传递给训练作业
-- \
--user_first_arg=first_arg_value \
--user_second_arg=second_arg_value
但是我可以在任何地方找到如何从培训代码中读取参数。有什么建议?谢谢
【问题讨论】:
您需要在训练计划中相应地定义标志。该服务会将用户参数作为标志传递给您的培训计划。 是的,但是如何?有没有我可以看的代码示例?在训练计划中读取标志的程序是什么? 【参考方案1】:请看看这个新的repo。
你有task.py
,它从gcloud
命令读取参数
将输入传递给存在于this 文件中的model.py
。
【讨论】:
太棒了,所以就像从脚本中读取普通标志一样,我认为这行不通。 就我而言,它实际上无法读取 cmd args。不知道为什么会这样。【参考方案2】:我知道我可能错误地使用了我的 dockerfile,但是为了接受用户参数,我的 gcloud 查询如下所示:
gcloud ai-platform jobs submit training $JOB_NAME /
--region $REGION /
--master-image-uri $IMAGE_URI /
-- /
app.py --user_first_arg=first_arg_value
Dockerfile
...
WORKDIR /app
COPY . /app
ENTRYPOINT ["python"]
CMD ["app.py"]
app.py
def get_args():
parser = argparse.ArgumentParser()
parser.add_argument(
'--user_first_arg',
default=0)
args = parser.parse_args()
return args
def main():
args = get_args()
print(args.user_first_arg)
...
【讨论】:
以上是关于谷歌云平台提交训练作业,如何从训练代码中读取 USER_ARGS?的主要内容,如果未能解决你的问题,请参考以下文章