亚马逊的sagemaker 提供了模型训练到部署的全流程支持,下面这个例子是其参考手册的入门例子,记录一下整体流程,具体代码操作可以查看其手册。
1 创建Amazon账号,建立IAM 用户(identify and access management)
2 建立 S3 bucket (Amazon simple storage service ) 用于存放训练数据和调优后的模型代码/模型工件(model artifact)
3建立sagemaker notebook 实例
4训练模型(可以选用amazon内置的模型也可以上传自己的深度学习模型,入门例程仅适用内置模型,内置模型也有两种操作模型,一种是使用high-level的内置python library,一种是使用AWS SDK,前一种非常方便,后一种虽然复杂,但对于了解整个配置过程有帮助,按后一种讲解)
4.1 建立jupyter notebook,选择conda python3,定义角色role和相应的bucket
4.2下载、整理、转换训练数据,并上传到s3中
4.2.1给出下载地址url,解压到训练、验证和测试三部分;
4.2.2整理清洗数据;
4.2.3将数据转换类型,从numpy.array转换为 RecordIO protobuf格式,并上传到S3中的指定位置
4.3 训练模型算法
4.3.1选择合适的算法
4.3.2创建一个训练任务
指定训练代码的docker image; 指定超参数;指定输入输出的位置(S3)
sagemaker=boto3.client('sagemaker')
sagemaker.create_training_job(**create_training_params)
try:
sagemaker.get_waiter('training_job_completed_or_stopped').wait(TrainingJobName=job_name)
finally:
status=sagemaker.describe_training_job(TrainingJobName=job_name)
4.4 部署模型
在sagemaker上创建模型(提供模型算法存放位置,推理程序所在镜像路径)、配置endpoint(硬件资源)、创建endpoint,应用程序向endpoint发送请求来得到推理结果。
sagemaker.create_model
sagemaker.create_endpoint_config
sagemaker.create_endpoint
try:
sagemaker.get_waiter('endpoint_in_service').wait(EndpointName=endpoint_name)
finally:
4.5 验证模型
转换数据,向endpoint发送请求
runtime=boto3.Session().client('sagemaker-runtime')
response=runtime.invoke_endpoint
4.6 整合sagemaker的endpoint到应用中
创建能够使用AWS lambda服务的IAM账号,其能够调用sagemaker的invokeendpoint API
创立能够使用invokeendpoint API的lambda function
从mobile application中调用lambda function