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

标签 python machine-learning state-machine aws-step-functions hyperparameters

我用一个步骤编写了一个简单的 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/

相关文章:

r - 将数据拆分为不具有代表性类别的训练和评估数据集

uml - uml 状态机图中的 if 条件

python - 如何将 matplotlib 图形组合成多个子图?

python - Odoo 记录创建时调用函数

python - 写入 MS Access 表,python win32com

amazon-web-services - 如何暂停 AWS 步骤函数并恢复它?

uml - BoUML 的状态机生成器在退出 StateMachine 状态之前调用 doActivity 时是否正确?

Python:从列表的字符串元素创建变量/数据框名称

java - 文本分类分类器

python - 通过 Python 创建 X 输入矩阵和 y 输出向量