内置的 亚马逊SageMaker XGBoost 算法提供了一个托管容器来运行流行的 XGBoost 机器学习 (ML) 框架,增加了支持高级训练或推理功能的便利性,如分布式训练、大规模数据集的数据集分片、 A/B 模型测试或 多模型推理 端点。 您还可以扩展这个强大的算法以适应不同的需求。
将代码和依赖项打包在一个容器中是一种方便且健壮的方法,可用于长期代码维护、可重现性和审计目的。 修改容器直接忠实于基础容器,避免重复基础容器已经支持的现有功能。 在这篇文章中,我们回顾了 SageMaker XGBoost 算法容器的内部工作原理,并提供了实用的脚本来直接自定义容器。
SageMaker XGBoost 容器结构
SageMaker 内置的 XGBoost 算法被打包成一个独立的容器, 在GitHub上可用,并且可以在开发人员友好的 Apache 2.0 开源许可下进行扩展。 容器包装 开源 XGBoost 算法 以及在与其他 AWS 云服务集成的 SageMaker 环境中运行算法的辅助工具。 这允许您在各种 数据源,制作 批量预测 在离线数据上,或托管一个 推理端点 在实时 管道.
该容器支持具有不同入口点的训练和推理操作。 对于推理模式,入口可以在主函数中找到 服务.py 脚本. 对于实时推理服务,容器运行 长颈瓶基于 Web服务器 当 调用,接收包含数据的 HTTP 编码请求,将数据解码为 XGBoost 的 矩阵 格式, 加载模型,并返回一个 HTTP 编码的响应返回. 这些方法封装在 评分服务 类,在很大程度上也可以通过脚本模式进行自定义(见下文附录)。
训练模式(算法模式)的入口点是 培训.py. 主函数设置训练环境并调用训练作业函数。 它足够灵活,可以进行分布式或单节点训练,或交叉验证等实用程序。 培训过程的核心可以在 培训工作 功能。
打包容器的 Docker 文件可以在 GitHub回购. 请注意,容器是分两步构建的: 基地 首先构建容器,然后是 最后 容器在顶部。
解决方案概述
您可以通过源代码修改和重建容器。 但是,这涉及从头开始收集和重建所有依赖项和包。 在这篇文章中,我们讨论了一种更直接的方法,该方法直接在已构建且公开可用的 SageMaker XGBoost 算法容器映像之上修改容器。
在这种方法中,我们 拉 公共 SageMaker XGBoost 映像的副本,修改脚本或添加包,并在顶部重建容器。 修改后的容器可以存储在私有存储库中。 这样,我们避免重建中间依赖项,而是直接在官方容器中打包的已构建库之上构建。
下图是用于拉取公共基础镜像、修改和重建镜像并上传到私有镜像的脚本概览 Amazon Elastic Container注册 (Amazon ECR) 存储库。 这 bash 脚本 在这篇文章的随附代码中,执行图中所示的所有工作流步骤。 伴随的 笔记本 显示了一个示例,其中首先检索 SageMaker XGBoost 算法的特定版本的 URI 并将其传递给 bash 脚本,它会替换映像中的两个 Python 脚本,重新构建它,并将修改后的映像推送到私有 Amazon ECR 存储库。 您可以修改随附的代码以满足您的需要。
先决条件
GitHub存储库 包含本文随附的代码。 你可以运行 样本笔记本 在您的 AWS 账户中,或使用提供的 AWS CloudFormation 堆栈以使用 SageMaker 笔记本部署笔记本。 您需要以下先决条件:
- 一个 AWS 账户。
- 运行 SageMaker 批量转换和训练作业的必要权限以及 Amazon ECR 权限。 CloudFormation 模板创建示例 AWS身份和访问管理 (IAM) 角色。
部署解决方案
要使用 AWS CloudFormation 创建您的解决方案资源,请选择 启动堆栈:
该堆栈部署了一个预先配置为克隆 GitHub 存储库的 SageMaker 笔记本。 演练 笔记本 包括为给定版本提取公共 SageMaker XGBoost 映像、对其进行修改以及将自定义容器推送到私有 Amazon ECR 存储库的步骤。 笔记本使用公 鲍鱼数据集 作为示例,使用 SageMaker XGBoost 内置训练模式训练模型,并在自定义图像中重复使用此模型来执行批量转换作业,从而产生推理和 SHAP 值。
结论
SageMaker 内置算法提供了多种特性和功能,并且可以在 Apache 2.0 开源许可下进一步扩展。 在这篇文章中,我们回顾了如何扩展 SageMaker XGBoost 算法的生产内置容器,以满足向后代码和 API 兼容性等生产要求。
示例笔记本和助手 脚本 提供一个方便的起点,以您希望的方式自定义 SageMaker XGBoost 容器映像。 试试看!
附录:脚本模式
脚本模式 通过提供一个接口来替换负责转换输入和加载模型的函数,从而提供一种修改许多 SageMaker 内置算法的方法。 脚本模式不如直接修改容器灵活,但它提供了完全基于 Python 的路由来自定义内置算法,无需直接使用 码头工人.
在脚本模式下,一个 user-module
提供自定义数据解码、模型加载和预测。 用户模块可以定义一个 transformer_fn
处理从处理请求到准备响应的所有方面。 或者而不是定义 transformer_fn
,可以提供自定义方法 model_fn
, input_fn
, predict_fn
及 output_fn
单独自定义加载模型和解码并准备输入以进行预测。 有关脚本模式的更全面概述,请参阅 使用 SageMaker 脚本模式创建您自己的模型.
作者简介
佩曼·拉扎吉(Peyman Razaghi) 是 AWS 的数据科学家。 他拥有多伦多大学的信息论博士学位,并且是洛杉矶南加州大学 (USC) 的博士后研究科学家。 在加入 AWS 之前,Peyman 是高通公司的一名系统工程师,为许多著名的国际电信标准做出了贡献。 他在统计和系统工程领域撰写了多篇经过同行评审的科学研究文章,并喜欢工作之余的育儿和公路自行车。
- "
- 100
- ACCESS
- 容纳
- 账号管理
- 高级
- 算法
- 算法
- 所有类型
- 已经
- Amazon
- API
- 的途径
- 国家 / 地区
- 刊文
- AWS
- 建立
- 内建的
- 加州
- 程
- 云端技术
- 云服务
- 码
- 收藏
- 完全
- 容器
- 包含
- 方便
- 便捷
- 创建
- 习俗
- data
- 数据科学家
- 部署
- 部署
- 不同
- 直接
- 讨论
- 分布
- 码头工人
- 工程师
- 环境
- 例子
- 延长
- 特征
- 数字
- (名字)
- 柔软
- 以下
- 格式
- 发现
- 骨架
- 功能
- 进一步
- GitHub上
- 大
- 持有
- 创新中心
- How To
- HTTPS
- 身分
- 图片
- 信息
- 输入
- 集成
- 接口
- 国际
- IT
- 工作
- 工作机会
- 学习
- 执照
- 长期
- 洛杉矶
- 机
- 机器学习
- 制作
- 制作
- 管理
- ML
- 模型
- 模型
- 更多
- 笔记本
- 数
- 官方
- 这一点在线下监测数字化产品的影响方面尤为明显。
- 运营
- 其他名称
- 己
- 点
- 热门
- 强大
- 预测
- 预测
- 私立
- 过程
- 生产
- 生产
- 提供
- 提供
- 优
- 国家
- 目的
- 实时的
- 知识库
- 请求
- 岗位要求
- 研究
- 资源
- 响应
- 提供品牌战略规划
- 回报
- 检讨
- 路线
- 运行
- 科学家
- 特色服务
- 服务
- 分片
- 软件
- 方案,
- 源代码
- 南
- 堆
- 标准
- 统计
- 支持
- 支持
- 支持
- 产品
- 通过
- 一起
- 工具
- 最佳
- 多伦多
- 产品培训
- 火车
- 改造
- 转型
- 大学
- 使用
- 各种
- 维基百科上的数据
- 工作
- 将