我刚开始使用AWS,我想用自己的数据集训练自己的模型。我在Python中将我的模型作为具有tensorflow后端的keras模型。我阅读了一些文档,他们说我需要一个Docker映像来加载我的模型。因此,如何将keras模型转换为Docker映像。我通过互联网进行搜索,但没有发现任何可以清楚解释该过程的信息。如何制作keras模型的docker映像,以及如何将其加载到sagemaker。还有如何将h5文件中的数据加载到S3存储桶中进行训练?谁能帮我得到清楚的解释?
答案 0 :(得分:0)
尽管您可以将Docker容器加载到Sagemaker中进行生产,但这听起来似乎可以通过完成整个Sagemaker管道(从S3中的数据开始,并通过支持keras和TF的Jupyter笔记本进行培训)来获得更好的服务。
一旦您对模型进行了培训,文档将逐步指导如何存储和持久化模型以进行生产。对于Docker,您将构建Docker容器并将其推送到AWS ECR并从那里导入-请注意,在awslabs示例中,您需要遵循非常特定的Docker目录结构(例如:
答案 1 :(得分:0)
您可以将Keras模型转换为tf.estimator并使用Sagemaker中的TensorFlow框架估算器进行训练。
尽管这种转换是非常基本的,但是我使用tf.keras API在TensorFlow中重新实现了模型,这使模型几乎完全相同,并以脚本模式与Sagemaker TF估计器一起训练。
我最初使用纯Keras模型的方法是基于自带算法容器,类似于Matthew Arthur的回答。
答案 2 :(得分:0)
Scikit Building Your Own Algorithm Container教程是编写自己的自定义算法的一个很好的起点。它概述了Docker,将脚本打包到容器中,上传并运行培训工作的步骤。
如果您已经拥有hdf5文件,则可以使用AWS CLI将其上传到您拥有的存储桶中。
$ aws s3 cp ./path/to/file.h5 s3://my-sagemaker-bucket/folder/file.h5
然后,在创建培训工作时,您可以指定[输入通道]:(http://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html#SageMaker-CreateTrainingJob-request-InputDataConfig)
[{
"ChannelName": "train",
"DataSource": {
"S3DataSource": {
"S3Uri": "s3://my-sagemaker-bucket/folder",
"S3DataType": "S3Prefix",
"S3DataDistributionType": "FullyReplicated"
}
}
}]
培训工作开始时,您的容器化脚本应该能够在本地文件系统/opt/ml/input/data/train/file.h5
上找到它,并且能够像普通文件一样读取它。请注意,此文件路径中的“火车”对应于您在input-data-config中指定的通道名称。
您可以在https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html
阅读更多内容答案 3 :(得分:0)
借助TensorFlow和MXNet内置框架,SageMaker现在支持Keras。您可以使用SageMaker进行培训和部署,也可以导入TensorFlow Serving格式的现有Keras模型并进行部署。