Amazon SageMaker JumpStart 提供了一套用于快速开始训练和部署机器学习模型的 内置算法、预训练模型 和 预构建解决方案模板。这些算法和模型可以用于监督学习和无监督学习,能够处理包括图像、文本和表格在内的多种类型输入数据。
本文将介绍如何在 SageMaker JumpStart 中使用 文本分类 和 填充掩码 模型进行自定义数据集的文本分类。我们还将演示如何进行实时推理和批量推理。这一监督学习算法支持 Hugging Face 所有预训练模型的迁移学习,模型接受文本作为输入,并输出每个类别标签的概率。即使没有大量文本语料库,您也可以通过迁移学习对这些预训练模型进行微调。该功能可以在 Amazon SageMaker Studio 的 SageMaker JumpStart UI 中找到,您也可以通过 SageMaker Python SDK 使用,具体请参考示例笔记本 Introduction to SageMaker HuggingFace Text Classification。
在 SageMaker 中使用 Hugging Face 进行文本分类,提供了对所有 Hugging Face 可用的预训练模型的迁移学习。根据训练数据中的类标签数量,将一个分类层附加到预训练的 Hugging Face 模型上。然后,可以微调整个网络包括预训练模型或仅微调顶层分类层。在这种迁移学习模式下,即使使用较小的数据集,也能完成训练。
在本文中,我们将演示如何执行以下操作:
使用新的 Hugging Face 文本分类算法使用 Hugging Face 文本分类算法进行推理在自定义数据集上微调预训练模型使用 Hugging Face 文本分类算法执行批量推理在运行笔记本之前,您需要完成一些初始设置步骤。让我们设定 SageMaker 执行角色,以便它可以代表您运行 AWS 服务:
python!pip install sagemaker upgrade quiet
import sagemaker boto3 jsonfrom sagemakersession import Sessionsagemakersession = Session()awsrole = sagemakersessiongetcalleridentityarn()awsregion = boto3Session()regionnamesess = sagemakerSession()
SageMaker JumpStart 支持对任何 通过 Hugging Face 提供的文本分类模型 进行推理。模型可以托管以进行推理,并支持将文本作为 application/xtext 内容类型。这不仅允许您使用一组预训练模型,还可以选择其他分类任务。
输出包含概率值、所有类别的类标签以及与概率最高的类索引相对应的预测标签,均以 JSON 格式编码。模型每次请求处理一个字符串,仅输出一行。以下是 JSON 格式响应的示例:
jsonaccept application/jsonverbose{probabilities [prob0 prob1 prob2 ] labels [label0 label1 label2 ] predictedlabel predictedlabel}
如果将 accept 设置为 application/json,则模型仅输出概率。有关训练和推理的更多详细信息,请参阅示例 笔记本。
您可以通过在创建 Model 类对象时传递环境变量中的 modelid 来运行文本分类模型推理。以下是代码示例:
pythonfrom sagemakerjumpstartmodel import JumpStartModel

hub = {}HFMODELID = distilbertbaseuncasedfinetunedsst2english # 从 https//huggingfaceco/modelspipelinetag=textclassificationampsort=downloads 中传递任何其他 HFMODELIDhub[HFMODELID] = HFMODELIDhub[HFTASK] = textclassification
model = JumpStartModel(modelid=infermodelid env=hub enablenetworkisolation=False)
您可以对任何包含文本句子的自定义数据集微调每个预训练 填充掩码 或 文本分类 模型,数据集可以包含任意数量的类。预训练模型将分类层附加到文本嵌入模型,并将层参数初始化为随机值。分类层的输出维度是基于输入数据中检测到的类数确定的。目标是最小化输入数据上的分类错误。然后,您可以部署微调后的模型进行推理。
以下是训练数据如何格式化以供模型输入的说明:
输入 一个包含 datacsv 文件的目录。第一列的每一行应具有一个介于 0 和类数之间的整数类标签。第二列的每一行应具有相应的文本数据。输出 一个可以部署以进行推理或通过增量训练进一步训练的微调模型。以下是输入 CSV 文件的示例。文件中不应有任何标题。该文件应托管在 Amazon Simple Storage Service (Amazon S3) 存储桶中,路径类似于 s3//bucketname/inputdirectory/。尾部的 / 是必需的。
csv0 hide new secretions from the parental units0 contains no wit only labored gags1 that loves its characters and communicates something rather beautiful about human nature
该算法还支持 Hugging Face 预训练模型 的迁移学习。每个模型都有一个唯一的 modelid。以下示例展示了如何在自定义训练数据集上微调 BERT 基础模型,modelid 为 huggingfacetcbertbasecased。预训练模型的压缩包已经从 Hugging Face 预下载并保存到 S3 存储桶中,确保训练作业在网络隔离下运行。
在自定义数据集上进行迁移学习时,您可能需要更改训练超参数的默认值。您可以通过调用 hyperparametersretrievedefault 获取这些超参数的 Python 字典及其默认值,按需更新,然后将其传递给 Estimator 类。超参数 Trainonlytoplayer 定义了在微调过程中哪些模型参数会发生变化。如果 trainonlytoplayer 为 True,分类层的参数会变化,其余参数在微调过程中保持不变。如果 trainonlytoplayer 为 False,则模型的所有参数都将进行微调。以下是代码示例:
pythonfrom sagemaker import hyperparameters # 获取微调模型的默认超参数hyperparameters = hyperparametersretrievedefault(modelid=modelid modelversion=modelversion) # [可选] 用自定义值覆盖默认超参数hyperparameters[epochs] = 5
对于此用例,我们提供 SST2 作为微调模型的默认数据集。该数据集包含正面和负面的电影评论,已根据 Apache 20 许可证 从 TensorFlow 下载。以下代码提供了在 S3 存储桶中托管的默认训练数据集:
python
trainingdatabucket = fjumpstartcacheprod{awsregion}trainingdataprefix = trainingdatasets/SST/
trainingdatasets3path = fs3//{trainingdatabucket}/{trainingdataprefix}
我们通过提供 modelid 和超参数值创建一个 Estimator 对象,如下所示:
python
tcestimator = JumpStartEstimator( hyperparameters=hyperparameters modelid=dropdownvalue instancetype=traininginstancetype metricdefinitions=trainingmetricdefinitions outputpath=s3outputlocation enablenetworkisolation=False if modelid == huggingfacetcmodels else True)
要启动 SageMaker 训练作业以微调模型,请在 Estimator 类对象上调用 fit,并传递训练数据集的 S3 位置:
python
tcestimatorfit({training trainingdatasets3path} logs=True)
您可以通过 Amazon CloudWatch 监控训练过程中的性能指标,比如训练损失和验证准确率/损失。您还可以使用 TrainingJobAnalytics 获取并分析这些指标:
pythondf = TrainingJobAnalytics(trainingjobname=trainingjobname)dataframe() #它将生成一个包含不同指标的数据框dfhead(10)
下图显示了通过 TrainingJobAnalytics 从 CloudWatch 日志收集的不同指标。
有关如何使用新的 SageMaker Hugging Face 文本分类算法在自定义数据集上进行迁移学习、部署微调后的模型、在已部署模型上执行推理、以及如何在不先在自定义数据集上微调的情况下直接部署预训练模型的更多信息,请参见以下示例 笔记本。
SageMaker JumpStart 支持微调任何预训练的填充掩码或文本分类 Hugging Face 模型。您可以从 Hugging Face Hub 下载所需模型并进行微调。为使用这些模型,超参数中提供 modelid 作为 hubkey。请参见以下代码:
pythonHFMODELID = distilbertbaseuncased # 从 https//huggingfaceco/modelspipelinetag=fillmaskampsort=downloads 或 https//huggingfaceco/modelspipelinetag=textclassificationampsort=downloads 指定 HFMODELIDhyperparameters[hubkey] = HFMODELID
现在,您可以通过传递更新后的超参数创建 Estimator 类对象。在 Estimator 类对象上调用 fit,并传递训练数据集的 S3 位置以执行 SageMaker 训练作业,完成模型微调。
SageMaker 自动模型调优 (ATM),也称为超参数调优,通过在您的数据集上运行多个训练作业,利用您指定的算法和超参数的范围,找到模型的最佳版本。它会选择导致最佳性能的超参数值,以您选择的指标进行衡量。以下代码中,您使用 HyperparameterTuner 对象与 SageMaker 超参数调优API进行交互:
pythonfrom sagemakertuner import ContinuousParameter
amtmetricdefinitions = { metrics [{Name valaccuracy Regex evalaccuracy ([09])}] type Maximize}
hyperparameterranges = { learningrate ContinuousParameter(000001 00001 scalingtype=Logarithmic)}
maxjobs = 6
maxparalleljobs = 2
飞鱼加速npv官网在定义 HyperparameterTuner 对象的参数后,您将其传递给 Estimator 并启动训练。这将找到性能最佳的模型。
如果推理的目标是从训练模型生成大数据集的预测,而且最小化延迟并不是问题,那么 批量推理 功能可能是最简单、最可扩展和最合适的。
批量推理在以下场景中特别有用:
预处理数据集以去除干扰训练或推理的数据中的噪声或偏差从大数据集中获取推理当您不需要持久端点时运行推理将输入记录与推理结果关联,以帮助解释结果在本案例中运行批量推理时,您首先需在本地下载 SST2 数据集。将类标签去掉后,上传到 Amazon S3 进行批量推理。您可以不提供端点而创建 Model 类对象,然后从该对象创建批量转换器对象。使用该对象为输入数据提供批量预测。以下是代码示例:
pythonbatchtransformer = modeltransformer( instancecount=1 instancetype=inferenceinstancetype outputpath=outputpath assemblewith=Line accept=text/csv)
batchtransformertransform( inputpath contenttype=text/csv splittype=Line)
batchtransformerwait()
运行批量推理后,您可以比较 SST2 数据集上的预测准确性。
在本文中,我们讨论了 SageMaker Hugging Face 文本分类算法。我们提供了示例代码,以便在网络隔离下利用预训练模型在自定义数据集上执行迁移学习。我们还提供了在推理和迁移学习中使用任何 Hugging Face 填充掩码或文本分类模型的功能。最后,我们使用批量推理在大型数据集上运行推理。如需更多信息,请查看示例 笔记本。
Hemant Singh 是一名应用科学家,在 Amazon SageMaker JumpStart 方面具有经验。他获得了纽约大学数学科学研究所的硕士学位,并拥有 IIT 德里的本科学位。他在自然语言处理、计算机视觉和时间序列分析等多个领域的机器学习问题方面具有丰富的经验。
Rachna Chadha 是 AWS 战略账户的 AI/ML 解决方案首席架构师。Rachna 是个乐观主义者,她相信人工智能的伦理和负责任使用能够改善未来的社会,带
电话:13594780107
联系人:周经理
邮箱:addictive@hotmail.com
网址:https://www.ghcyd.com
地址:泉州市刊舌入口209号