在亚马逊红移中使用生成性人工智能丰富、标准化和翻译流数据 大数据博客

2026-01-27 13:39:13

利用生成式人工智慧在 Amazon Redshift 中丰富、标准化和翻译串流数据

由 Anusha Challa 于 2024 年 8 月 6 日发表于 Amazon 机器学习、Amazon Redshift 和 生成式人工智慧 永久链接 评论 分享

关键摘要

利用 Amazon Redshift 和生成式人工智慧,您可以轻松丰富、标准化和翻译串流数据。这个过程不仅能清理数据,还能提升决策的准确性,并在多个行业中提高运营效率。利用 Amazon Redshift ML 可以集成众多预训练的语言模型,从而简化这一过程,进一步促进实时数据分析和业务洞察。

Amazon Redshift 是一个快速、可扩展、安全且完全管理的云数据仓库,能够方便且具有成本效益地进行数据分析。数以万计的客户每天使用 Amazon Redshift 处理数十亿字节的数据,支持商业智能、预测分析及实时串流分析等使用场景。

Amazon Redshift ML 是 Amazon Redshift 的一个功能,允许您直接在 Redshift 环境中构建、训练和部署机器学习ML模型。透过使用预训练的公共可用大型语言模型LLMs,您可以将这些强大功能带入分析工作流程中,支持多种自然语言处理NLP用例,如文本摘要、情感分析、命名实体识别、文本生成、语言翻译、数据标准化及数据丰富等。

迅猛兔加速器

解决方案概览

下图展示了如何使用 Redshift ML 功能与 LLMs 集成,以丰富、标准化和清理串流数据。该过程从来自 Amazon Kinesis 数据流 或 Amazon 管理的 Apache Kafka 流 的原始串流数据开始,这些数据将以原始数据的形式物化到 Amazon Redshift。然后,使用者定义的功能UDF将应用于原始数据,调用部署在 SageMaker JumpStart 上的 LLM 来丰富和标准化数据。经过增强和清理的数据随后将存储回 Amazon Redshift,准备进行准确的实时分析、改进的决策和提升的运营效率。

示例数据

下列代码显示了来自串流的原始订单数据示例:

在亚马逊红移中使用生成性人工智能丰富、标准化和翻译流数据 大数据博客

jsonRecord1 { orderID101 email john roe @examplecom phone441234567890 address123 Elm Street London comment please cancel if items are out of stock}Record2 { orderID102 email janes mith @examplecom phone(123)4567890 address123 Main St Chicago 12345 comment Include a gift receipt} (其余数据省略)

原始数据中的电子邮件和电话号码格式不一致,地址不完整且缺乏国家信息,评论使用多种语言。为了解决这些数据挑战,我们可以使用整合 LLM 的 Redshift ML 来实施全面的数据转换流程,帮助标准化、清理和丰富数据,使其符合所需的输出格式。

例如,以下表格显示了丰富的地址数据示例:

orderidAddressCountry (使用 LLM 确定)101123 Elm Street LondonUnited Kingdom102123 Main St Chicago 12345USA103Musterstrabe Bayern 00000Germany104000 main st los angeles 11111USA105000 Jean Allemane paris 00000France

以下表格显示了标准化的电子邮件和电话数据示例:

orderidemailcleansedemail (使用 LLM)PhoneStandardized Phone (使用 LLM)101john roe @examplecomjohnroe@examplecom44123456789044 1234567890102janes mith @examplecomjanesmith@examplecom(123)45678901 1234567890103maxmuller @examplecommaxmuller@examplecom49891234567849 8912345678104julia @examplecomjulia@examplecom(111) 45678901 1114567890105roberto @examplecomroberto@examplecom33 3 44 21 83 4333 344218343

以下表格显示了翻译和丰富的评论数据示例:

orderidCommentenglishcomment (使用 LLM 翻译)commentlanguage (由 LLM 确定)101please cancel if items are out of stockplease cancel if items are out of stockEnglish102Include a gift receiptInclude a gift receiptEnglish103Bitte nutzen Sie den ExpressversandPlease use express shippingGerman104Entregar a la puertaLeave at door stepSpanish105veuillez ajouter un emballage cadeauPlease add a gift wrapFrench

前置条件

在实施步骤之前,请确保您满足以下前置条件:

一个 AWS 帐户。一个 Amazon Redshift Serverless 工作组或 Amazon Redshift 提供集群。设定说明请参考 使用命名空间创建工作组 或 创建一个示例 Amazon Redshift 集群。一个 Kinesis 数据流。针对本示例,我们创建名为 customerorders 的数据流,容量模式为按需模式。使用 Amazon Kinesis 数据生成器 生成的 JSON 格式样本数据,此数据将发送至 customerorders。请使用示例代码中的源记录作为生成数据的模板,详细信息请参见 使用新的 Amazon Kinesis 数据生成器测试串流数据解决方案。

选择 LLM 并使用 SageMaker JumpStart 部署

请按照以下步骤部署您的 LLM:

在 SageMaker JumpStart 控制台中,选择导航窗格中的 Foundation models。搜索您的 FM对于此文章,MetaLlama38BInstruct,然后选择 查看模型。在 模型详情 页面上,检阅最终用户许可协议EULA,然后选择 在工作室中打开笔记本。在 选择域和用户档案 弹出窗口中,选择一个档案,然后选择 打开工作室。打开笔记本后,在 设置笔记本环境 弹出窗口中,选择 t3medium 或其他在笔记本中建议的实例类型,然后选择 选择。修改笔记本单元,使 accepteula = False 改为 accepteula = True。选择并运行前五个单元。在运行第五个单元后,选择导航窗格中的 终端节点,您可以看到创建的终端节点。复制终端节点名称,等待终端节点状态显示为 In Service。

使用 Redshift ML 创建引用 SageMaker JumpStart LLM 端点的模型

在此步骤中,您使用 Redshift ML 和 BYOM 功能创建一个模型。创建后,您可以使用输出函数对 LLM 模型进行远程推断。要为您先前创建的 LLM 端点在 Amazon Redshift 中创建模型,请完成以下步骤:

使用 Amazon Redshift 查询编辑器 V2 登录到 Redshift 端点。确保将以下 AWS 身份和访问管理IAM策略添加到预设 IAM 角色。将 替换为您之前捕获的 SageMaker JumpStart 端点名称:

json{ Statement [ { Action sagemakerInvokeEndpoint Effect Allow Resource arnawssagemakerltregiongtltAccountNumbergtendpoint/ltendpointnamegt Principal } ]}

在查询编辑器中运行以下 SQL 语句以创建 Amazon Redshift 中的模型。请将 替换为您捕获的端点名称。请注意,模型的输入和返回数据类型为 SUPER 数据类型。

sqlCREATE MODEL metallama38binstructFUNCTION metallama38binstruct(super)RETURNS SUPERSAGEMAKER ltendpointnamegtIAMROLE default

创建物化视图以加载原始串流数据

使用以下 SQL 为正在通过 customerorders 流传输的数据创建物化视图。物化视图设置为自动刷新,并将随著数据的到达而不断刷新。

sqlCREATE EXTERNAL SCHEMA kinesisstreams FROM KINESISIAMROLE default

CREATE MATERIALIZED VIEW mvcustomerorders AUTO REFRESH YES AS SELECT refreshtime approximatearrivaltimestamp partitionkey shardid sequencenumber jsonextractpathtext(fromvarbyte(kinesisdata utf8)orderIDtrue)character(36) as orderID jsonextractpathtext(fromvarbyte(kinesisdata utf8)emailtrue)character(36) as email jsonextractpathtext(fromvarbyte(kinesisdata utf8)phonetrue)character(36) as phone jsonextractpathtext(fromvarbyte(kinesisdata utf8)addresstrue)character(36) as address jsonextractpathtext(fromvarbyte(kinesisdata utf8)commenttrue)character(36) as comment FROM kinesisstreamscustomerorders

运行这些 SQL 语句后,物化视图 mvcustomerorders 将被创建,并会随著新数据到达 customerorders Kinesis 数据流而持续更新。

通过提示调用模型函数以转换数据并查看结果

现在,您可以通过提示来调用 Redshift ML LLM 模型函数,以转换原始数据并查看结果。输入有效负载是一个 JSON,其中提示和模型参数作为属性:

提示 提示是提供给生成式人工智能模型的输入文本或指令,以生成新内容。提示作为模型用于生成相关且连贯输出的指导信号。每个模型都有独特的提示工程指导。请参考 Meta Llama 3 Instruct 模型卡 以获取其提示格式和指导。模型参数 模型参数决定模型的行为和输出。透过模型参数,您可以控制随机性、生成的标记数量、模型应停止的位置,以及更多。

以下 SQL 语句调用 Redshift ML LLM 模型函数,标准化电话号码和电子邮件数据,并从地址中识别国家,将评论翻译成英语并识别原语言。SQL 的输出会存储在 enhancedrawdatacustomerorders 表中。

sqlCREATE TABLE enhancedrawdatacustomerorders ASSELECT phone email comment address metallama38binstruct(jsonparse({inputsltbeginoftextgtltstartheaderidgtuserltendheaderidgtnnConvert this phone number into a standard format phone nnA standard phone number had plus sign followed by CountryCode followed by a space and the rest of the phone number without any spaces or dashes nnExamples 1 1234567890 91 1234567890nnReturn only the standardized phone number nothing elselteotidgtltstartheaderidgtassistantltendheaderidgtnnparameters{stop lteotidgt}})) AS standardizedphone metallama38binstruct(jsonparse({inputsltbeginoftextgtltstartheaderidgtuserltendheaderidgtnnConvert this email into a standard format email nnA standard email ID does not have spaces and is lower case Return only the standardized email and nothing elselteotidgtltstartheaderidgtassistantltendheaderidgtnnparameters{stop lteotidgt}})) AS standardizedemail metallama38binstruct(jsonparse({inputsltbeginoftextgtltstartheaderidgtuserltendheaderidgtnnIdentify which country is this address in address nnReturn only the country and nothing elselteotidgtltstartheaderidgtassistantltendheaderidgtnnparameters{stop lteotidgt}})) AS country metallama38binstruct(jsonparse({inputsltbeginoftextgtltstartheaderidgtuserltendheaderidgtnnTranslate this statement to english if it is not in english comment nnReturn the english comment and nothing else Output only englishlteotidgtltstartheaderidgtassistantltendheaderidgtnnparameters{stop lteotidgt}})) AS translatedcomment metallama38binstruct(jsonparse({inputsltbeginoftextgtltstartheaderidgtuserltendheaderidgtnnIdentify which language this statement is in comment nnReturn only the language and nothing elselteotidgtltstartheaderidgtassistantltendheaderidgtnnparameters{stop lteotidgt}})) AS origcommentlanguageFROM mvcustomerorders

通过查询 enhancedrawdatacustomerorders 表来查看数据。LLM 的输出以 JSON 格式存储,其中结果包含在 generatedtext 属性中,并且可以使用 PartiQL 查询:

sqlSELECT

最新文章