typescript - 如何将动态训练作业名称添加到在 CDK 描述的 AWS StateMachine 中执行的 SageMaker 训练作业?
问题描述
我有一个用 CDK (TypeScript) 创建的状态机。在这个状态机中,我有一个地图状态,我在其中使用 SageMaker 运行多个 ML 模型训练,数量取决于上一步的输出,我们有 2-5 个数据集。我正在努力根据上一步的输出动态设置训练作业名称。如果我使用静态名称,即使只有 1 次训练,我也无法多次运行状态机,因为训练作业已经存在。
这就是我用 CDK 尝试过的
const training = new tasks.SageMakerCreateTrainingJob(
this.stack,
"SageMaker training job",
{
trainingJobName: "$.trainingJobName", // or static name like DemoTrainingJob
...
InputDataConfig: [
{
channelName: "train",
dataSource: {
s3DataSource: {
s3Location: tasks.S3Location.fromJsonExpression("$.input"),
...
hyperparameters: {
"max_depth.$": "$.hyperparameters.max_depth",
显示 s3DataSource 和超参数仅供参考,因为它们工作。然后,上一步输出 trainingJobName 如下所示(TaskStateEntered 中的数据用于训练作业)。
"name": "SageMaker training job",
"input": {
"output": "s3://my-bucket/outputx",
"input": "s3://my-bucket/inputx.csv",
"hyperparameters": {
"max_depth": "5"
},
"trainingJobName": "some-dynamic-name-YYYYMMDDHHiiSS"
},
"inputDetails": {
"truncated": false
}
}
但作为 SageMaker 培训 (TaskScheduled) 的输入,我看到
"resourceType": "sagemaker",
"resource": "createTrainingJob",
"region": "eu-west-1",
"parameters": {
"TrainingJobName": "$.trainingJobName",
"RoleArn": ...
并且 TrainingJobName 不是从输入中插入的。S3 数据被正确插值(尽管表达方式不同)和超参数值。作业自然会失败,因为 $.trainingJobName 不是有效的培训作业名称。如果我以前使用过静态也会失败,但这不行,因为它会阻止多次使用状态机。
我已经看到了这个 https://github.com/aws-samples/amazon-sagemaker-cdk-examples/blob/master/cron-train/lambda-handler.py ,其中 TrainingJob 是从 Lambda 开始的,其中动态训练作业名称可以是很容易设置,但这在状态机中也应该是可能的。
解决方案
必须按以下方式设置:
trainingJobName: sfn.JsonPath.stringAt("$.trainingJobName")
或将 $.trainingJobName 替换为您的变量路径。
推荐阅读
- kubernetes - 如何诊断未生成证书管理器的证书机密?
- amazon-web-services - DynamoDB 中的热分区问题随着新的按需功能而消失了吗?
- reactjs - 如何在带有 webpack 的 React 应用程序中的 web 工作者中使用 ES6 模块?
- javascript - 如何在 React 中自定义 Material UI?
- python - 在循环中跳过多次迭代
- eclipse - Eclipse 等效于 Intellij 动态属性
- python - RuntimeError:CUDA 错误:内存不足 - DCGAN with image_size = 256
- c# - DotNetCore WebAPI:使用 Postman 的命名空间解析 xml 的问题
- java - 从 imageView 更新 Java Fx 图像
- apache-spark - Spark Driver 内存计算