在aws sagemaker上进行持续的机器学习培训和部署

sagif的Python项目详细描述


生成状态

主人:构建状态

矢状

sagify

这是一个命令行实用程序,可以在aws sagemaker上培训和部署机器学习/深度学习模型,只需几个简单步骤!

有关sagify命令的详细参考,请转到:阅读文档

安装

先决条件

Sagify要求如下:

  1. 巨蟒(2.7、3.5、3.6)
  2. Docker已安装并正在运行
  3. 已配置awscli

安装Sagify

在命令行:

pip install sagify

开始

步骤1:克隆深度学习计算器存储库

您将克隆并训练一个深入学习的代码库,以评估最多3位整数的算术加法。

克隆存储库:

git clone https://github.com/Kenza-AI/deep-learning-addition.git

或者,如果要使用python2.7,请将test_environment.pymakefile中的必需的pythonpython解释器的值分别替换为python2

创建环境:

make create_environment

在创建环境后,不要忘记通过执行working in deep learning addition来激活virtualenv

安装依赖项:

make requirements

生成培训和验证数据:

make data

步骤2:初始化sagify

sagify init

在sagemaker app name中键入deep learning addition,在中键入n是否正在启动新项目?src对于问题请键入代码所在的目录,并确保选择首选的python版本、aws配置文件、aws区域以及requirements.txt的路径

在您提供的目录下创建了一个名为sagify的模块。结构是:

sagify/
    local_test/
        test_dir/
            input/
                config/
                    hyperparameters.json
                data/
                    training/
            model/
            output/
        deploy_local.sh
        train_local.sh
    prediction/
        __init__.py
        nginx.conf
        predict.py
        predictor.py
        serve
        wsgi.py
    training/
        __init__.py
        train
    __init__.py
    build.sh
    Dockerfile
    executor.sh
    push.sh

一个.sagify.json文件也会在您运行sagify init命令的目录中创建,该命令保存您为项目名称等提供的值。

步骤3:集成Sagify

作为一个数据科学家,你只需要采取一些行动。Sagify负责其余部分:

  1. 复制sagify/local_test/test_dir/input/data/training/下的训练数据子集,测试训练是否在本地工作
  2. sagify/training/train中实现train(…)功能
  3. 在sagify/prediction/predict.py中实现predict(…)函数
  4. 也可以在sagify/local_test/test_dir/input/config/hyperparameters.json中指定超参数

因此,

  1. 将文件从data/processed/复制到sagify/local_test/test_dir/input/data/training/

  2. try..中的TODOS替换为:

     train_model.train(input_path=input_data_path, output_path=model_save_path)
    

    在文件顶部的导入回溯之后,添加:

     from src.models import train_model
    

    try..except的主体应该如下所示:

    pip install sagify
    
    0
  3. sagify/prediction/predict.py中的predict(…)函数的主体替换为:

    pip install sagify
    
    1

    替换get_model()的主体modelservice中的action在同一个文件中使用:

    pip install sagify
    
    2

第四步:建立docker镜像

是时候构建包含深度学习附加代码库的Docker图像了:

pip install sagify
3

如果您在终端中运行grep deep learning addition imgdocker images,您将看到创建的deep learning addition图像。

第五步:培养深度学习模式

在新构建的Docker图像中训练深度学习模型的时间:

pip install sagify
4

在2015年初的MacBook Pro 3.1 GHz Intel Core i7中,此步骤大约需要5分钟。

步骤6:部署深度学习模型

最后,将模型用作rest服务:

pip install sagify
5

在终端上运行以下curl命令以验证rest服务是否工作:

pip install sagify
6

在前两次调用中,它将很慢,因为它以一种懒洋洋的方式加载模型。

哇!这证明了这种深度学习模型将在aws sagemaker上得到成功的培训和部署。现在,转到sagify文档中的sagify文档中的用法部分,了解如何培训并将此深入学习模型部署到aws sagemaker!

超参数优化

鉴于您已经按照前一节中的描述配置了aws帐户,现在可以对aws sagemaker执行贝叶斯超参数优化了!该过程类似于培训步骤。

步骤1:定义超参数配置文件

定义超参数配置文件。更具体地说,您需要在本地json文件中指定超参数的范围、目标度量的名称及其类型(即最大化最小化)。例如:

pip install sagify
7

步骤2:执行列车功能

用您的逻辑替换try..中train(…)函数的TODOS。例如:

pip install sagify
8

步骤3:构建并推送Docker图像

  1. sagify build确保sagify位于requirements.txt文件中。
  2. sagify push

步骤4:调用cli命令

最后,调用hyperparameter optimization cli命令。例如:

pip install sagify
9

步骤5:监视进度

您可以通过sagemaker ui控制台监视进度。下面是已完成的超参数优化作业的示例:

超参数优化结果

命令

初始化

名称

初始化箭头模块

概要
sagify init

说明

当您在调用init命令后被询问时,此命令将初始化您提供的目录中的sagify模块。

示例

sagify init

配置

说明

更新现有配置值,例如python versionaws region

概要
git clone https://github.com/Kenza-AI/deep-learning-addition.git
2

可选标志

--AWS区域AWS区域:AWS推送Docker图像的区域,并执行SageMaker操作(TrainDeploy)。

--aws profile aws配置文件awsaws交互时要使用的配置文件

--image name image_nameDocker与sagemaker一起构建时使用的图像名称。这显示为您的aws账户上的aws ecr存储库。

--python版本python_versionpython生成sagemaker的docker图像时使用的版本。当前支持的版本:2.73.6

示例

git clone https://github.com/Kenza-AI/deep-learning-addition.git
3

构建

名称

建立Docker图像

概要

pip install sagify
3

说明

这个命令从安装在sagify目录下的代码构建一个docker映像。需要在sagify init期间或以后通过sagify configure--requirements dir为docker映像中安装的所有必需依赖项指定需求文件。

示例

pip install sagify
3

本地列车

名称

在列车模式下执行Docker图像

概要
pip install sagify
4

说明

此命令在列车模式下执行Docker图像。更具体地说,它在一个已经构建的docker映像中执行sagify/training/train中的train(…)函数(参见构建命令部分)。

示例

pip install sagify
4

本地部署

名称

在服务模式下执行Docker图像

概要
pip install sagify
5

说明

此命令在服务模式下执行Docker映像。更具体地说,它在docker映像中运行一个flask rest应用程序,并将http请求定向到/invocations端点。然后,/invocations端点调用sagify/prediction/predict.py中的predict(…)函数(请参阅关于如何构建docker映像的build command部分)。

示例

pip install sagify
5

名称

将Docker图像推送到AWS弹性容器服务

概要
make create_environment
0

说明

此命令将已构建的docker映像推送到aws弹性容器服务。稍后,aws sagemaker将使用aws elastic container service for train and service模式中的图像。

< Buff行情>

只能提供iam role arnaws_profile中的一个。如果未提供IAM角色ARN,则忽略外部ID

可选标志

--iam role arn iam角色-i iam角色:aws iam角色用于推送到ecr

--aws region aws区-r aws区:要将图像推送到的aws区

--aws配置文件名-p配置文件名:用于推送到ecr的aws配置文件

--外部id外部id-e外部id:使用IAM角色时使用的可选外部id

示例

make create_environment
1

云上传数据

名称

将数据上载到AWS S3

概要
make create_environment
2

说明

此命令将本地输入数据目录下的内容上载到s3目标数据位置下的s3

必需标志

--input dir本地输入数据目录-i本地输入数据目录:本地输入目录

--s3 dir s3目标数据位置-s3目标数据位置:s3目标位置

示例

make create_environment
3

云列车

名称

使用AWS Sagemaker上的Docker图像和S3的输入训练您的ML/DL模型

概要
make create_environment
4

说明

此命令从AWS弹性容器服务检索Docker图像,并在列车模式下在AWS SageMaker上执行它

必需标志

--input-s3-dir input_data_s3_location-i input_data_s3_location:s3 location to input data

--output-s3-dir s3-u location-u-to-u-save-u输出-o s3-u location-u-to-save-u输出:s3保存输出的位置(模型、报告等)。确保输出bucket已经存在。任何不存在的密钥前缀将由Sagify创建。

--ec2类型ec2类型-e ec2类型:ec2类型。请参阅https://aws.amazon.com/sagemaker/pricing/instance-types/

可选标志

--hyperparams file hyperparams_json_file-h hyperparams_json_file:hyperparams json文件的路径

--卷大小ebs_size_in_GB-v ebs_size_in_GB:ebs卷的大小(以GB为单位)(默认值:30)

--超时时间(单位:秒)-s超时时间(单位:秒):超时时间(单位:秒)(默认值:24*60*60)

--aws标记-a标记:用于标记tag1=value1;tag2=value2形式的培训作业的标记。有关更多信息,请参见https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html" rel="nofollow">https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html

--iam role arn iam角色-r iam角色:aws iam角色用于与sagemaker一起培训

--外部id外部id-x外部id:使用IAM角色时使用的可选外部id

--基本作业名称基本作业名称-n基本作业名称:sagemaker培训作业的可选前缀

--作业名称作业名称:sagemaker培训作业的可选名称。注意:如果与此选项一起传递--base job name,则将忽略它。

--度量名称逗号分隔的度量名称:用于跟踪培训作业性能的可选逗号分隔的度量名称。示例:精度、召回、AUC。然后,请确保使用train函数中的日志度量函数记录这些度量值:

make create_environment
5

培训作业完成后,它们将存储在sagemaker培训作业的cloudwatch算法度量日志中:

算法度量

示例

make create_environment
6

云超参数优化

名称

在aws sagemaker上以超参数优化模式执行docker映像

概要
make create_environment
7

说明

此命令从AWS弹性容器服务检索Docker图像,并在AWS SageMaker上以超参数优化模式执行它

必需标志

--input-s3-dir input_data_s3_location-i input_data_s3_location:s3 location to input data

--output-s3-dir s3-u location-u-to-u-save-u输出-o s3-u location-u-to-save-u输出:s3保存输出的位置(模型、报告等)。确保输出bucket已经存在。任何不存在的密钥前缀将由Sagify创建。

--ec2类型ec2类型-e ec2类型:ec2类型。请参阅https://aws.amazon.com/sagemaker/pricing/instance-types/

--hyperparams配置文件hyperparam_ranges_json_file-h hyperparam_ranges_json_file:hyperparams配置文件的本地路径。例子:

pip install sagify
7

可选标志

--max jobs max_number_of_training_jobs-m max_number_of_training_jobs:要为超参数优化作业启动的最大培训作业总数(默认值:3)

--max parallel jobs max_number_of_parallel_training_jobs-p max_number_of_parallel_training_jobs:要启动的最大并行训练作业数(默认值:1)

--卷大小ebs_size_in_gb-v ebs_size_in_gb:ebs卷的大小(默认值:30)

--超时时间(单位:秒)-s超时时间(单位:秒):超时时间(单位:秒)(默认值:24*60*60)

--aws标记-a标记:用于标记tag1=value1;tag2=value2形式的培训作业的标记。有关更多信息,请参见https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html" rel="nofollow">https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html

--iam role arn iam_role-r iam_role:aws iam角色用于与sagemaker一起培训

--外部id外部id-x外部id:使用IAM角色时使用的可选外部id

--基本作业名称基本作业名称-n基本作业名称:sagemaker培训作业的可选前缀

--作业名称作业名称:sagemaker培训作业的可选名称。注意:如果与此选项一起传递--base job name,则将忽略它。

--wait wait_until_hyperparam_job_is_finished-w wait_until_hyperparam_job_is_finished:等待超参数调整完成的可选标志。(默认值:不要等待)

示例

make create_environment
9

云部署

名称

在aws sagemaker上以服务模式执行docker映像

概要
make requirements
0

说明

此命令从AWS弹性容器服务检索Docker映像,并在服务模式下在AWS SageMaker上执行它

必需标志

--s3 model location s3_location_to_model_tar_gz-ms3_location_to_model_tar_gz:s3 location to model tar.gz

--num instances数量EC2实例n数量EC2实例:数量EC2实例

--ec2类型ec2类型e ec2类型:ec2类型。请参阅https://aws.amazon.com/sagemaker/pricing/instance-types/

可选标志

--aws标记-a标记:用于标记tag1=value1;tag2=value2形式的培训作业的标记。有关更多信息,请参见https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html" rel="nofollow">https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html

--iam role arn iam\u role-r iam\u role:aws iam role用于与sagemaker一起部署

--外部id外部id-x外部id:使用IAM角色时使用的可选外部id

--端点名称端点名称:sagemaker端点的可选名称

示例

make requirements
1

云批处理转换

名称

在aws sagemaker上以批转换模式执行docker映像,即对用户定义的s3数据运行批预测

概要
make requirements
2

说明

此命令从aws弹性容器服务检索docker映像,并在aws sagemaker上以批转换模式执行,即对用户定义的s3数据运行批预测。sagemaker将启动rest容器,并使用来自用户定义的s3路径的输入数据(功能)调用它。

要做的事情:

  • 您应该实现predict函数,它期望json包含所需的特性值。它与将模型部署为rest服务时使用的预测函数相同。json示例:
make requirements
3
  • 输入s3路径应该包含一个或多个文件,其中每一行是json,与predict函数中预期的json格式相同。文件示例:
make requirements
4

必需标志

--s3 model location s3_location_to_model_tar_gz-ms3_location_to_model_tar_gz:s3 location to model tar.gz

--s3输入位置s3输入位置-is3输入位置:s3输入数据位置

--s3输出位置s3输出位置-os3输出位置:s3保存预测的位置

--num instances数量EC2实例n数量EC2实例:数量EC2实例

--ec2类型ec2类型e ec2类型:ec2类型。请参阅https://aws.amazon.com/sagemaker/pricing/instance-types/

< h4>可选标志

--aws标记-a标记:用于标记tag1=value1;tag2=value2形式的培训作业的标记。有关更多信息,请参见https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html" rel="nofollow">https://docs.aws.amazon.com/sagemaker/latest/dg/api_tag.html

--iam role arn iam\u role-r iam\u role:aws iam role用于与sagemaker一起部署

--外部id外部id-x外部id:使用IAM角色时使用的可选外部id

--wait_until_batch_transform_job_finished-w wait_until_batch_transform_job_finished:等待批转换完成的可选标志。(默认值:不要等待)

--作业名称作业名称:sagemaker批处理转换作业的可选名称

示例

make requirements
5

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Selenium中弹出的java句柄窗口   java将格式化消息从任何片段传递到活动   java如何从int类型的方法返回多个整数   servlets数据不会使用java类和bean插入数据库   java如何修改Solr给出的搜索结果页面?   java如何在wildfly中重定向应用程序路径?   java使用Apache异步HTTP客户端从InputStream构造多部分请求   java解析来自REST的压缩输入流   java上载文件失败,原因是Vaadin Spring PlupLocaddon   使用需要CSRF令牌的旧端点的javascript   java如何在viewpager应用程序中将图像设置为墙纸?   java Axis2与SharePoint 2013(ADFS/FedAuth cookie)   java H2选择:意外的类型39映射   Docker Composition中拒绝java Spring应用程序连接   使用Java的ibm mq ibm mq获取LGETTIME   java循环逻辑中的漏洞   javaspringcom。mongodb。util。JSONParseException   方法调用“振动”可能会产生java。更新到Android Studio 3后出现lang.NullPointerException警告   datetime如何将日历的时间与java进行比较。sql。时间物体?