用于训练的自定义 sagemaker 容器,每天将预测写入 AWS RDS

Custom sagemaker container for training, write forecast to AWS RDS, on a daily basis

我有 3 个主要过程要使用 Amazon SageMaker 执行。

  1. 使用自己的训练 python 脚本,(不使用 sagemaker 容器,内置算法)[Train.py]

-> 为此,我参考了这个 link:
Bring own algorithm to AWS sagemaker 似乎我们可以将自己的训练脚本带到 sagemaker 管理的训练设置中,模型工件可以上传到 s3 等。 注:我使用的是Light GBM模型进行训练。

  1. 正在将预测写入 AWS RDS 数据库:

-> 无需部署模型和创建端点,因为每天都会进行训练,并且会在训练完成后立即创建预测。 (需要在 train.py 本身生成预测)

-> 挑战是如何从 train.py 脚本在 AWS RDS 数据库中编写预测。 (鉴于该脚本在私有 VPC 中是 运行)

  1. 将此过程安排为日常工作:

--> AWS step functions我已经过一遍了,好像是触发日常训练和写预测到RDS的方法。

--> 挑战是如何将步进函数用于基于时间的触发器而不是基于事件的触发器。

关于如何做到这一点有什么建议吗?有什么最佳实践可以遵循吗?提前谢谢你。

按计划触发 Step Functions 的方法是使用 CloudWatch Events(类似于 cron)。查看本教程:https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-cloudwatch-events-target.html

不要从您的 Python 代码写入 RDS!最好将输出写入 S3,然后将 S3 中的文件 "copy" 写入 RDS。解耦这些批次将使过程更加可靠和可扩展。您可以在文件写入 S3 时触发批量复制到 RDS 中,或者稍后在您的数据库不太忙时触发。