介绍 SageMaker Core:一个面向对象的 Python SDK 用于 Amazon Sag

全新 SageMaker Core:面向 Amazon SageMaker 的对象导向 Python SDK

关键要点

介绍了 SageMaker Core,这是一个对象导向的 Python SDK,用于简化机器学习生命周期管理。SDK 的功能包括资源链式管理、智能默认值和增强的日志记录功能。提供了与 Boto3 和 SageMaker Python SDK 的对比, highlighting SDK 的优势。利用 SageMaker Core 开展数据准备、训练和模型部署的示例。

我们很高兴地宣布发布 SageMaker Core,这是一款来自 Amazon SageMaker 的全新 Python SDK,旨在提供更加便捷的对象导向方式来管理机器学习ML生命周期。这个新的 SDK 简化了数据处理、训练与推理的流程,具有资源链式管理、智能默认设置和改进的日志记录功能。有了 SageMaker Core,在 SageMaker 上管理 ML 工作负载变得更简单、更高效。SageMaker Core SDK 是 SageMaker Python SDK 版本 22310 及以上版本的一部分。

在这篇文章中,我们将展示 SageMaker Core SDK 如何简化开发者的使用体验,提供无缝执行各种 ML 生命周期阶段的 API。同时,我们还会讨论使用该 SDK 的主要好处,并分享相关资源以深入了解。

传统上,开发者在使用 SageMaker 时有两个选择:AWS SDK for Python通常称为 boto3和 SageMaker Python SDK。虽然这两者都提供了全面的 ML 生命周期管理 API,但往往会依赖于松散类型的构造,例如硬编码常量和 JSON 字典,模拟 REST 接口。例如,要创建一个训练作业,Boto3 提供了 createtrainingjob API,但获取作业详情需要使用 describetrainingjob。

使用 Boto3 时,开发者会面临记忆和构建冗长 JSON 字典的挑战,确保所有键位置准确。让我们仔细看看 Boto3 中的 createtrainingjob 方法:

pythonresponse = clientcreatetrainingjob( TrainingJobName=string HyperParameters={ string string } AlgorithmSpecification={ } RoleArn=string InputDataConfig=[ { } ] OutputDataConfig={ } ResourceConfig={ } VpcConfig={ } )

为简洁起见未显示所有参数

如上所示,对于AlgorithmSpecification、InputDataConfig、OutputDataConfig 等参数,我们需要撰写冗长的 JSON 字典。由于字典中包含许多字符串变量,很容易出现拼写错误或缺少键。编译器只会将其视为字符串,无法进行类型检查。

同样在 SageMaker Python SDK 中,开发者需要创建一个 estimator 对象并调用 fit() 方法。尽管这些构造有效,但对开发者的体验并不直观,难以帮助开发者把理解的意义与训练模型的过程连接起来。

引入 SageMaker Core SDK

SageMaker Core SDK 旨在通过用对象导向接口替代冗长的字典,帮助开发者更加方便地进行开发,这样开发者就可以使用对象导向的抽象,而 SageMaker Core 将负责将这些对象转换为字典并代为执行操作。

以下是 SageMaker Core 的主要特性:

对象导向界面:提供处理、训练和部署等任务的对象导向类,强制类型检查,提升代码可维护性,促进重用,开发者能够充分利用面向对象编程的所有特性。资源链式管理:开发者可以轻松地将 SageMaker 资源作为对象传递,例如,在设置端点时将模型对象作为参数传递。反观 Boto3,则需要将 ModelName 作为字符串参数提供。低级细节的抽象:自动处理资源状态转换和轮询逻辑,让开发者无需管理这些复杂性,专注于更高价值的任务。智能默认设置支持:支持 SageMaker 智能默认设置,允许开发者设置默认参数值,如 AWS 身份与访问管理 (IAM) 角色和虚拟私有云 (VPC) 配置,简化设置流程。自动代码完成:在基于 集成开发环境 (IDEs) 的流行平台中提供实时建议和完成功能,加快编码速度,减少语法错误。与 SageMaker API 完全兼容,包含生成 AI:通过核心 SDK 访问 SageMaker 的功能,包括生成 AI,开发者可以无忧无虑地使用 SageMaker Core,无需担心与 Boto3 的特性兼容性。全面的文档和类型提示:提供强大的文档和类型提示,使开发者能够理解 API 和对象的功能,更快地编写代码,减少错误。

在本次演示中,我们将执行一个涉及数据准备、模型微调和 Meta 的 Llama38B LLM 部署的简单生成 AI 生命周期。我们使用 SageMaker Core SDK 来执行所有步骤。

前置条件

要开始使用 SageMaker Core,确保环境中安装了 Python 38 或更高版本。有两种方法可以开始使用 SageMaker Core:

如果不使用 SageMaker Python SDK,可以通过以下代码示例安装 sagemakercore SDK。

bashpip install sagemakercore

如果已经在使用 SageMaker Python SDK,将其升级到版本 22310 或更高版本。任何高于 22310 的版本都预先安装了 SageMaker Core。以下代码示例显示了升级 SageMaker Python SDK 的命令。

bashpip install upgrade sagemakergt=22310

解决方案演示

要在 SageMaker 上使用 SageMaker Core 管理 ML 工作负载,请遵循以下各节中的步骤。

数据准备

在此阶段,准备 LLM 的训练和测试数据。这里使用公开可获取的数据集 斯坦福问答数据集 (SQuAD)。以下代码使用静态方法 create 创建一个 ProcessingJob 对象,指定脚本路径、实例类型和实例数量。智能默认设置会抓取 SageMaker 执行角色,进一步简化开发者体验。输入数据位置和输出数据位置无需提供,因为这两个位置也通过智能默认设置提供。有关如何设置智能默认设置的信息,请查看 配置和使用 SageMaker Python SDK 中的默认设置。

pythonfrom sagemakercoreresources import ProcessingJob

初始化 ProcessingJob 资源

processingjob = ProcessingJobcreate( processingjobname=llmdataprep scriptpath=s3//mybucket/dataprepscriptpy rolearn=ltgt # 执行角色的智能默认 instancetype=mlm5xlarge instancecount=1)

等待 ProcessingJob 完成

processingjobwait()

训练

在此步骤中,您将使用预训练的 Llama38B 模型,并在上一步准备的数据上进行微调。以下代码片段展示了training API。您使用 create 方法创建 TrainingJob 对象,指定训练脚本、源目录、实例类型、实例数量、输出路径和超参数。

pythonfrom sagemakercoreresources import TrainingJobfrom sagemakercoreshapes import HyperParameters

初始化 TrainingJob 资源

trainingjob = TrainingJobcreate( trainingjobname=llmfinetune estimatorentrypoint=trainpy sourcedir=s3//mybucket/trainingcode instancetype=mlg512xlarge instancecount=1 outputpath=s3//mybucket/trainingoutput hyperparameters=HyperParameters( learningrate=000001 batchsize=8 epochs=3 ) rolearn=ltgt # 执行角色的智能默认 inputdata=processingjoboutput # 资源链式管理)

等待 TrainingJob 完成

trainingjobwait()

对于超参数,您创建了一个对象,而不是提供字典。通过将 ProcessingJob 资源的输出作为 TrainingJob 的输入数据来使用资源链式管理。

您还利用智能默认设置来获取 SageMaker 执行角色。等待训练作业结束,它将生成一个模型工件,打包在 targz 文件中,存储在前面训练 API 提供的 outputpath 中。

模型创建与部署

在 SageMaker 端点上部署模型需要三个步骤:

创建一个 SageMaker 模型对象创建端点配置创建端点

SageMaker Core 为这三个步骤提供了对象导向的接口。

创建 SageMaker 模型对象

以下代码片段展示了 SageMaker Core 中的模型创建体验。

pythonfrom sagemakercoreshapes import ContainerDefinitionfrom sagemakercoreresources import Model

创建一个 Model 资源

model = Modelcreate( modelname=llmmodel primarycontainer=ContainerDefinition( image=763104351884dkrecruswest2amazonawscom/djlinference0290tensorrtllm0110cu124 environment={HFMODELID metallama/MetaLlama38B} ) executionrolearn=ltgt # 执行角色的智能默认 inputdata=trainingjoboutput # 资源链式管理)在处理和训练步骤中,您可以看到模型类中的 create 方法也得以使用。容器定义现在是一个对象,指定了包含大型模型推理LMI容器图像和 HuggingFace 模型 ID 的容器定义。您可以看到资源链式管理的实际应用,您将 TrainingJob 的输出传递作为模型的输入数据。

创建端点配置

接下来创建端点配置。以下代码片段展示了 SageMaker Core 中的这一经验。

pythonfrom sagemakercoreshapes import ProductionVariantfrom sagemakercoreresources import Model EndpointConfig Endpoint

创建 EndpointConfig 资源

endpointconfig = EndpointConfigcreate( endpointconfigname=llmendpointconfig productionvariants=[ ProductionVariant( variantname=llmvariant initialinstancecount=1 instancetype=mlg512xlarge modelname=model ) ])ProductionVariant 现在是一个对象。

创建端点

使用以下代码片段创建端点。

pythonendpoint = Endpointcreate( endpointname=modelname endpointconfigname=endpointconfig # 传递上面创建的 EndpointConfig 对象)这也使用了资源链式管理。不再仅仅提供 endpointconfigname在 Boto3 中,而是将整个 endpointconfig 对象传递过去。

如上所示,SageMaker Core 通过提供一个对象导向接口与 SageMaker 资源相互作用,从而简化了开发体验。智能默认设置和资源链式管理减少了样板代码和手动参数指定,形成了更具可读性和可维护性的代码。

清理

使用本文中的代码创建的任何端点将产生费用。请使用 delete() 方法关闭任何未使用的端点。

介绍 SageMaker Core:一个面向对象的 Python SDK 用于 Amazon Sag

关于现有 SageMaker Python SDK 的说明

SageMaker Python SDK 将以 SageMaker Core 为基础,并受益于作为 SageMaker Core 一部分创建的对象导向接口。从今往后,客户可选择在使用 SageMaker Python SDK 时采用对象导向的方法。

好处

SageMaker Core SDK 提供了多个好处:

简化开发:通过抽象低级细节和提供智能默认,开发者可以专注于构建和部署 ML 模型,而不必因重复性任务而影响进度。同时也减轻了开发者记忆长而复杂的多层字典的认知负担,他们可以在熟悉的对象导向范式下工作。提升生产力:自动代码完成和类型提示等特性帮助开发者更快地编写代码,并减少错误。增强可读性:专门的资源类和资源链式管理使得代码更具可读性和可维护性。轻便与 AWS Lambda 的集成:由于该 SDK 轻便解压后约 8 MB,为 SageMaker Core 构建 AWS Lambda 层 也变得简单,方便通过 Lambda 函数执行 ML 生命周期中各个步骤。

结论

SageMaker Core 是 Amazon SageMaker 的强大补充,为机器学习实践者提供了一种简化高效的开发体验。借助其对象导向接口、资源链式管理和智能默认值,SageMaker Core 使开发者能够专注于构建和部署 ML 模型,而不必为复杂的 JSON 结构的调度而减速。请查看以下资源,立即开始使用 SageMaker Core:

SageMaker Core SDK 文档SageMaker Core GitHubSageMaker Core 的 PyPI 包动手示例和笔记本

关于作者

Vikesh Pandey 是 AWS 的首席 GenAI/ML 专家解决方案架构师,帮助金融行业的客户设计、构建和扩展其在 AWS 上的 GenAI/ML 工作负载。他拥有超过十年的 ML 和软件工程栈的经验。在工作之外,Vikesh 喜欢尝试不同的美食和户外运动。

Shweta Singh 是 AWS Amazon SageMaker 机器学习ML平台团队的高级产品经理,领导 SageMaker Python SDK。在亚马逊的多个产品角色中工作超过 5 年。她拥有纽约大学计算机工程的理学学士学位和金融工程的理学硕士学位。

TAG Amazon SageMaker

pioneer加速器官方入口

发表评论

订阅我们的邮箱