Press "Enter" to skip to content

在Amazon SageMaker JumpStart中通过两行代码部署和优化基础模型

我们很高兴地宣布,我们推出了一个简化版的Amazon SageMaker JumpStart软件开发工具包,使构建、训练和部署基础模型变得简单明了。预测代码也得到了简化。在本文中,我们演示如何使用简化的SageMaker Jumpstart SDK以及仅用几行代码就能开始使用基础模型。

有关用于部署和训练的简化版SageMaker JumpStart SDK的更多信息,请参阅使用JumpStartModel类进行低代码部署使用JumpStartEstimator类进行低代码微调

解决方案概述

SageMaker JumpStart为各种问题类型提供了预训练的开源模型,帮助您快速入门机器学习(ML)。您可以在部署之前逐步训练和微调这些模型。JumpStart还提供解决方案模板,为常见用例设置基础架构,并提供与Amazon SageMaker的机器学习相关的可执行示例笔记本。您可以通过SageMaker JumpStart登陆页在Amazon SageMaker Studio中访问预训练模型、解决方案模板和示例,或者使用SageMaker Python SDK。

为了演示SageMaker JumpStart SDK的新功能,我们向您展示了如何使用Hugging Face的预训练Flan T5 XL模型进行文本摘要生成任务。我们还展示了如何仅用几行代码对Flan T5 XL模型进行文本摘要生成任务的微调。您也可以使用其他模型进行文本生成,如Llama2FalconMistral AI

您可以在GitHub repo中找到使用Flan T5 XL解决方案的笔记本。

部署和调用模型

在SageMaker JumpStart上托管的基础模型具有模型ID。有关模型ID的完整列表,请参阅带有预训练模型表的内置算法。在本文中,我们使用Flan T5 XL文本生成模型的模型ID。我们通过调用其deploy方法来实例化模型对象并将其部署到SageMaker终端节点。参见以下代码:

from sagemaker.jumpstart.model import JumpStartModel# 如有需要,请替换为更大的模型pretrained_model = JumpStartModel(model_id="huggingface-text2text-flan-t5-base")pretrained_predictor = pretrained_model.deploy()

接下来,我们使用Flan T5 XL模型调用模型来创建提供的文本的摘要。新的SDK接口使您可以轻松地调用模型:您只需将文本传递给预测器,它将返回模型的响应作为Python字典。

text = """对这段内容进行摘要 - Amazon Comprehend使用自然语言处理(NLP)来提取有关文档内容的见解。它通过识别文档中的实体、关键词短语、语言、情感和其他常见元素来开发见解。使用Amazon Comprehend根据对文档结构的理解创建新产品。例如,使用Amazon Comprehend,您可以搜索社交网络推文中有关产品的提及,或扫描整个文档存储库寻找关键短语。您可以使用Amazon Comprehend控制台或使用Amazon Comprehend APIs访问Amazon Comprehend文档分析功能。您可以针对小型工作负载运行实时分析,也可以为大型文档集启动异步分析作业。您可以使用Amazon Comprehend提供的预训练模型,也可以为分类和实体识别训练自己的自定义模型。 """query_response = pretrained_predictor.predict(text)print(query_response["generated_text"])

以下是摘要任务的输出:

了解亚马逊Comprehend的工作原理。使用亚马逊Comprehend对文档进行分析。

优化和部署模型

SageMaker JumpStart SDK为您提供了一个新的类JumpStartEstimator,可简化优化。您可以提供优化数据的位置,还可以选择性地传递验证数据集。在优化模型后,使用Estimator对象的部署方法部署优化后的模型:

from sagemaker.jumpstart.estimator import JumpStartEstimatorestimator = JumpStartEstimator(    model_id=model_id,)estimator.set_hyperparameters(instruction_tuned="True", epoch="3", max_input_length="1024")estimator.fit({"training": train_data_location})finetuned_predictor = estimator.deploy()

自定义SageMaker SDK中的新类

新的SDK使得默认部署和优化JumpStart模型变得简单明了。您仍然有选择性地覆盖默认值,并根据您的需求自定义部署和调用。例如,您可以在部署模型时自定义实例类型:

finetuned_predictor = estimator.deploy(instance_type='ml.g5.2xlarge')

SageMaker JumpStart SDK deploy函数会自动为您选择默认内容类型和序列化程序。如果您想更改输入负载的格式类型,您可以使用serializerscontent_types对象来通过传递您正在使用的模型的model_id来检查可用选项。在下面的代码中,我们将负载输入格式设置为JSON,将JSONSerializer作为serializer,将application/json作为content_type

from sagemaker import serializersfrom sagemaker import content_typesserializer_options = serializers.retrieve_options(model_id=model_id, model_version=model_version)content_type_options = content_types.retrieve_options(model_id=model_id, model_version=model_version)pretrained_predictor.serializer = serializers.JSONSerializer()pretrained_predictor.content_type = 'application/json'

接下来,您可以使用JSON格式的负载调用Flan T5 XL模型进行摘要任务。在下面的代码中,我们还通过JSON负载传递推断参数,以使响应更准确:

from sagemaker import serializersinput_text= """Summarize this content - Amazon Comprehend uses natural language processing (NLP) to extract insights about the content of documents. It develops insights by recognizing the entities, key phrases, language, sentiments, and other common elements in a document. Use Amazon Comprehend to create new products based on understanding the structure of documents. For example, using Amazon Comprehend you can search social networking feeds for mentions of products or scan an entire document repository for key phrases.You can access Amazon Comprehend document analysis capabilities using the Amazon Comprehend console or using the Amazon Comprehend APIs. You can run real-time analysis for small workloads or you can start asynchronous analysis jobs for large document sets. You can use the pre-trained models that Amazon Comprehend provides, or you can train your own custom models for classification and entity recognition. """parameters = {    "max_length": 600,    "num_return_sequences": 1,    "top_p": 0.01,    "do_sample": False,}payload = {"text_inputs": input_text, **parameters} #JSON Input formatpretrained_predictor.serializer = serializers.JSONSerializer()query_response = pretrained_predictor.predict(payload)print(query_response["generated_texts"][0])

如果您想要更多自定义选项来自定义输入和其他用于托管和优化的选项,请参考JumpStartModelJumpStartEstimator类的文档。

结论

在本文中,我们向您展示了如何使用简化的SageMaker JumpStart SDK以几行代码构建、训练和部署基于任务和基础模型。我们使用Hugging Face Flan T5-XL模型作为示例演示了JumpStartModelJumpStartEstimator等新类。您可以使用SageMaker JumpStart中的任何其他基础模型用于内容写作、代码生成、问题回答、摘要、分类、信息检索等用例。要查看SageMaker JumpStart提供的模型完整列表,请参见预训练模型表的内置算法。SageMaker JumpStart还支持许多常见问题类型的特定于任务的模型

我们希望SageMaker JumpStart SDK的简化界面能够帮助您快速入门,并使您能够更快地交付。我们期待听到您如何使用简化的SageMaker JumpStart SDK来创建令人兴奋的应用程序!

Leave a Reply

Your email address will not be published. Required fields are marked *