gpt4 book ai didi

python - AWS - Step 函数,在 TuningStep 中使用执行输入

转载 作者:行者123 更新时间:2023-12-03 14:37:30 25 4
gpt4 key购买 nike

我用一个步骤编写了一个简单的 AWS 步骤函数工作流程:

from stepfunctions.inputs import ExecutionInput
from stepfunctions.steps import Chain, TuningStep
from stepfunctions.workflow import Workflow
import train_utils


def main():
workflow_execution_role = 'arn:aws:iam::MY ARN'
execution_input = ExecutionInput(schema={
'app_id': str
})
estimator = train_utils.get_estimator()
tuner = train_utils.get_tuner(estimator)

tuning_step = TuningStep(state_id="HP Tuning", tuner=tuner, data={
'train': f's3://my-bucket/{execution_input["app_id"]}/data/'},
wait_for_completion=True,
job_name='HP-Tuning')

workflow_definition = Chain([
tuning_step
])

workflow = Workflow(
name='HP-Tuning',
definition=workflow_definition,
role=workflow_execution_role,
execution_input=execution_input
)
workflow.create()


if __name__ == '__main__':
main()
我的目标是从运行时提供的执行 JSON 中提取训练输入。当我执行工作流(从步骤函数控制台)时,提供 JSON {"app_id": "My App ID"}调整步骤没有得到正确的数据,而是得到了 stepfunctions.inputs.placeholders.ExecutionInput 的 to_string 表示。 .此外,在查看生成的 ASL 时,我可以看到执行输入被呈现为字符串:
... 
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": "s3://my-bucket/<stepfunctions.inputs.placeholders.ExecutionInput object at 0x12261f7d0>/data/",
"S3DataDistributionType": "FullyReplicated"
}
},
...
我究竟做错了什么?
更新:
正如@yoodan 提到的,SDK 可能落后了,所以我必须在调用 create 之前编辑定义。我可以看到有一种方法可以在调用 create 之前查看定义,但是我可以修改图形定义吗?如何?

最佳答案

用于 step 函数的 python SDK 生成相应的代码,我们需要一个内置于 Amazon States Language 的字符串连接/格式来完成您想要的。
最近在 2020 年 8 月,Amazon States Language 在其语言规范中引入了字符串格式等内置函数。 https://states-language.net/#appendix-b
不幸的是,python SDK 不是最新的,不支持新的更改。
作为一种解决方法,也许在调用工作流创建之前手动修改定义?

关于python - AWS - Step 函数,在 TuningStep 中使用执行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64681293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com