首页 > 其他分享 >Amazon Bedrock 实践 - 利用 Llama 3.2 模型分析全球糖尿病趋势

Amazon Bedrock 实践 - 利用 Llama 3.2 模型分析全球糖尿病趋势

时间:2024-12-27 21:18:58浏览次数:6  
标签:image 90B Amazon 3.2 Bedrock Llama 模型

黄浩文

资深开发者布道师

亚马逊云科技

拥有电信、互联网以及云计算等行业超过 20 年的丰富经验,曾任职于微软、Sun 和中国电信。他目前专注于生成式 AI、大型语言模型 (LLM)、机器学习和数据科学等领域的技术内容创作和实践分享,致力于赋能全球开发者。

本博客内容原文来自于作者在亚马逊云科技开发者社区发表的技术博客:

“Leveraging Llama 3.2 90B Instruct model for Multimodal Diabetes Prevalence Analysis on Amazon Bedrock”:

https://community.aws/content/2p6VvdzzeBfpOzSBXEzZdmJEyaE/?trk=cndc-detail

 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

概述

在大型语言模型领域,多模态模型的强大能力已经开始为解决复杂问题开辟了新的可能性。本文探讨的问题是分析全球糖尿病患病率趋势,这是一个关系到全球数亿人的重大健康问题。在本文中,我将探讨如何在 Amazon Bedrock 上,使用 Meta Llama 3.2 90B Instruct 模型来分析全球不同国家或地区的糖尿病患者的患病率分布数据。 

Meta 开发的 Llama 3.2 90B Instruct 模型,是一种先进的具有多模态能力的大模型,它能够处理和分析文本和图像,这使它成为我们分析全球糖尿病患者的患病率数据的理想选择之一。 

我们将采用运行在 Amazon Bedrock 的 Llama 3.2 90B Instruct 模型来进行分析,Amazon Bedrock 与流行的先进大型语言模型无缝集成,可以帮助开发者更高效专业地创建自己的生成式 AI 应用程序。

多模态能力和基准

Meta 在其对外发布的论文 “The Llama 3 Herd of Models” 之中,详细阐释了将多模态能力添加到 Llama 3 系列模型的研究组合方法,该方法会经过五个阶段来训练多模态模型,分别是:

(1) 语言模型预训练 

(2) 多模态编码器预训练 

(3) 视觉适配器训练 

(4) 模型微调 

(5) 语音适配器训练 

该论文中的图示说明了这一过程。

 

Source:

https://ai.meta.com/research/publications/the-llama-3-herd-of-models/?trk=cndc-detail

来自 llama.com 网站公开的测试数据,比较了不同 AI 模型在各种基准测试和任务上的表现。下表分为“大学水平问题和数学推理”和“图表和图解理解”两大部分,每个部分下又有几个子类别。

在大多数基准测试中,Llama 3.2 90B 模型的表现普遍优于其他模型,在“AI2 Diagram”基准测试中,Llama 3.2 90B 模型获得了 92.3% 的最高分!

 

 

Source:

https://www.llama.com/?trk=cndc-detail

接下来,我们将使用一个具体的案例研究,演示如何在 Amazon Bedrock 上方便高效地利用 Llama 3.2 90B Instruct 模型的多模态能力。我们将使用这个模型分析全球不同国家和地区的糖尿病患病率趋势。

前期准备

我们的分析数据集是一个包含糖尿病流行率信息的数据集,其包括相关的图像等。在我们可以利用 Meta Llama 3.2 90B Instruct 模型进行推理之前,我们还需要确保我们的图像数据与其要求兼容。 

为了解决这个问题,我开发了一个实用的 Python 程序函数(可在 https://github.com/hanyun2019/bedrock-in-practice/blob/main/utils.py?trk=cndc-detail 获得),用于调整图像大小并确保符合 Meta Llama 3.2 90B Instruct 模型规范。

分析中采用的两张关于糖尿病病患数据及趋势的图像来网站如下所示。该网站汇编了世界银行(2024 年)从多个来源收集的相关数据:

https://ourworldindata.org/grapher/diabetes-prevalence?trk=cndc-detail

设置

首先,让我们导入必要的库并打印 boto3 版本。以下代码将导入了 `boto3\ 库,这是亚马逊云科技服务的 Python SDK,然后打印 \boto3\` 的版本以确保它是最新的:

import boto3
print('boto3 version')
print(boto3.__version__)

!pip install --upgrade boto3

接下来,我们定义模型 ID 并加载需要分析的图像:

(1) `MODEL_ID\`被设置为在 Amazon Bedrock 上 Llama 3.2 90B Instruct 模型的特定模型 ID

(2) `ORIGIN_IMAGE\`被设置为原始图像文件的路径

 
MODEL_ID = "us.meta.llama3-2-90b-instruct-v1:0"
ORIGIN_IMAGE = "images/diabetes-prevalence.png"

以下代码从我编写的自定义`utils\模块导入两个函数:\disp_image\和\resize_image\`。需要调整图像大小是因为:Meta Llama 90B Instruct 模型对输入图像的大小有一定限制。

from utils import disp_image
from utils import resize_image

disp_image(ORIGIN_IMAGE)

# Image processing
from PIL import Image
img1 = Image.open(ORIGIN_IMAGE)
img1.size
RESIZED_IMG = resize_image(img1)

# Open the JPG image
jpg_image = Image.open("images/resized_image.jpg")

# Convert the image to PNG format
png_image = jpg_image.convert("RGB")

# Save the converted PNG image
png_image.save("images/resized_image.png")
RESIZED_IMAGE = "images/resized_image.png"
disp_image(RESIZED_IMAGE)

图像处理完成后,我使用自己定义的图像显示函数 `disp_image()\` ,来显示将输入到 Llama 模型的第一张图像。这是一张全球糖尿病病患分布趋势的图像。颜色的深浅表示所在世界国家或地区的糖尿病患者在该区域占比的程度。颜色越深,病患情况就越严重。如下图所示:

 

Source:

https://ourworldindata.org/grapher/diabetes-prevalence?trk=cndc-detail

与模型互动

一切准备就绪,现在可以使用调整后的图像作为输入,提供给 Llama 3.2 90B Instruct 模型了。

我们先使用 `boto3\` 为 Amazon Bedrock Runtime 服务创建一个客户端对象:

bedrock_runtime = boto3.client("bedrock-runtime")

然后,以二进制读取模式 (`"rb"\) 打开调整后的图像文件,文件内容被读入 \image\` 变量:

with open(RESIZED_IMAGE, "rb") as f:   
    image = f.read()

接着定义一个用户消息,要求模型识别出全球糖尿病患病率最高的 10 个国家:

user_message = "According to this chart, which are the top 10 countries with the highest prevalence of diabetes?"

创建一个消息列表,其中包含一条消息。消息中包括用户的角色、图像和用户的消息内容:

messages = [   
    {      
        "role": "user",       
        "content": [         
            {"image": {"format": "png", "source": {"bytes": image}}},        
            {"text": user_message},     
        ],  
    }
]

调用 Amazon Bedrock Runtime 客户端的 `converse\ 函数,传入 \MODEL_ID\ 和以上消息列表。模型的响应消息将存储在 \response\` 变量中:

response = bedrock_runtime.converse( 
    modelId=MODEL_ID,   
    messages=messages,
)

从响应对象中提取响应文本,并将其存储在 `response_text\` 变量中。之后,将响应文本打印显示出来:

response_text = response["output"]["message"]["content"][0]["text"]
print(response_text)

我自己获得的模型测试响应文本如下,供大家参考:

According to the chart, the top 10 countries with the highest prevalence of diabetes are:

  1. **Saudi Arabia**: 17.5%
  2. **Egypt**: 17.5%
  3. **United Arab Emirates**: 17.5%
  4. **Bahrain**: 17.5%
  5. **Kuwait**: 17.5%
  6. **Qatar**: 17.5%
  7. **Oman**: 17.5%
  8. **Yemen**: 17.5%
  9. **Libya**: 17.5%
  10. **Papua New Guinea**: 17.5%

These countries have the highest percentage of their population aged 20-79 with diabetes, according to the chart.

如果你从以上示例中得到启发,并希望进一步探索,可参考以下 GitHub 代码库查看我的完整代码:

https://github.com/hanyun2019/bedrock-in-practice/blob/main/llama32-multimodal-diabetes-1.ipynb?trk=cndc-detail

在以上完整代码中,我还上传测试了第二张输入的图像:亚洲糖尿病患病率分布情况图,供 Meta Llama 3.2 90B Instruct 模型进行进一步分析。如下图所示:

 

Source:

https://ourworldindata.org/grapher/diabetes-prevalence?trk=cndc-detail

细心的开发者也可以找到你坐在的洲际数据图表,以进一步探索这个话题。

总结

在这篇文章中,我们演示了如何利用 Amazon Bedrock 上 Meta Llama 3.2 90B Instruct 模型的多模态能力,来洞察全球糖尿病患病率。通过利用这种先进的大型多模态模型,我们能够同时分析文本数据和可视化数据,根据提供的图表来确定全球糖尿病患病率最高的前 10 个国家或地区。

Meta Llama 3.2 90B Instruct 模型在各种基准测试中表现卓越,尤其在图表理解等领域,非常适合这种多模态分析任务。在 Amazon Bedrock 上运行该模型,还能够更高效地处理数据并生成准确的洞见。

通过这个实际案例,我们展示了将先进的大模型与多模态数据相结合,来解决医疗分析等领域复杂现实问题的潜力。随着大模型多模态能力的不断发展,从各种数据源中获取更深入的洞见,为各行业带来影响深远的全新解决方案,将孕育出更多新的市场机遇。

参考文献

  1. The Llama 3 Herd of Models

https://ai.meta.com/research/publications/the-llama-3-herd-of-models/?trk=cndc-detail

  1. Introducing Llama 3.2 models from Meta in Amazon Bedrock

https://aws.amazon.com/blogs/aws/introducing-llama-3-2-models-from-meta-in-amazon-bedrock-a-new-generation-of-multimodal-vision-and-lightweight-models/?trk=cndc-detail

  1. Vision use cases with Llama 3.2 11B and 90B models from Meta

https://aws.amazon.com/blogs/machine-learning/vision-use-cases-with-llama-3-2-11b-and-90b-models-from-meta/?trk=cndc-detail

说明

本文的封面图片由 Amazon Bedrock 上的 SDXL 1.0 模型生成。给定的输入提示词是:

“A developer with a laptop and a diabetes scientist, sitting in a café, developer with a laptop, excitedly discussing Leveraging generative AI for diabetes prevalence analysis, comic, graphic illustration, comic art, graphic novel art, vibrant, highly detailed, colored, 2d”

*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

 

文章来源:https://dev.amazoncloud.cn/column/article/676e9ac457ce58339e3dc995?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=bokey

标签:image,90B,Amazon,3.2,Bedrock,Llama,模型
From: https://www.cnblogs.com/AmazonwebService/p/18636764

相关文章

  • 【Basic Abstract Algebra】Exercises for Section 3.2 — Normal subgroups and fact
    If\(H<G\)and\([G:H]=2\),showthat\(H\triangleleftG\).Proof:If\([G:H]=2\),then\(gH=Hg\)forall\(g\inG\),so\(H\triangleleftG\).【BasicAbstractAlgebra】ExercisesforSection3.1—CosetsandLagrange'sTheorem-只会......
  • 3.2 图像加权和
    OpenCV中提供了函数cv2.addWeighted(),用来实现图像的加权和(混合、融合),该函数的语法格式为:dst=cv2.addWeighted(src1,alpha,src2,beta,gamma)其中,参数alpha和beta是src1和src2所对应的系数,它们的和可以等于1,也可以不等于1。该函数实现的功是dst=src1alpha+src2be......
  • Llama 3.2 900亿参数视觉多模态大模型本地部署及案例展示
    Llama3.2900亿参数视觉多模态大模型本地部署及案例展示本文将介绍如何在本地部署Llama3.290B(900亿参数)视觉多模态大模型,并开发一些UseCase,展示其强大的视觉理解能力。Llama3.2介绍今年9月,Meta公司发布了Llama3.2版本,包括11B和90B的中小型视觉大语言模型,适用于边缘计......
  • 5.3.2 Xenomai3:使用xeno-config获取编译和链接参数
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!5.3.2Xenomai3:使用xeno-config获取编译和链接参数xeno-config是一个辅助脚本,用于为使用Xenomai库的应用程序提供正确的编译和链接标志。通过......
  • 亚马逊国际获得AMAZON商品详情 API 返回值说明
    通过亚马逊提供的ProductAdvertisingAPI(也称为AmazonPAAPI),你可以获取商品的详细信息。这个API允许开发者查询亚马逊的商品数据,包括商品标题、价格、描述、图片链接等。在使用API时,返回的JSON或XML数据可能包含各种代码,这些代码通常用于描述状态、错误或其他信息。以下是一......
  • 使用Llama-3.2-1B遇到的bug
    背景在使用Llama-3.2-1B时遇到一个关于pad_tokens经验不足的bug。没有指定pad_token的时候分词器会报错,这个使用有以下两种解决策略:配一个新的token。tokenizer.add_special_tokens({'pad_token':'[PAD]'})model.resize_token_embeddings(len(tokenizer))#如果添加了新......
  • USB3.2 ECN是什么
    USB3.2ECN(EngineeringChangeNotice)是一个针对USB3.2标准的技术更新和修订文件。让我详细解释一下:USB3.2标准背景USB3.2是通用串行总线(UniversalSerialBus)的一个版本,用于连接计算机和电子设备,提供数据传输和供电功能。ECN的作用ECN是一种在技术标准中用于引入小规......
  • flutter零基础教程: Dart 3.5语法 flutter3.24 2024年8月27日更新
    flutter零基础教程:Dart3.5语法flutter3.242024年8月27日更新https://www.bilibili.com/video/BV1RZ421p7BL7 142024-8edu.51cto.com/course/36476.htmlP1课程大纲介绍P2002课程使用方法介绍和笔记使用P3003_mac系统查看笔记软件的安装方法和…..P4004黑苹果系统的......
  • Amazon Aurora 中的数据表同步到 Amazon S3
    在现代数据处理架构中,将数据从关系型数据库迁移到对象存储是一个常见的需求。本文将详细介绍如何使用AWSDatabaseMigrationService(DMS)将AmazonAurora中的表数据同步到AmazonS3。前提条件在开始之前,请确保你已经:创建了一个AmazonAurora数据库实例。创建......
  • Amazon S3 概念及如何集成到 .net 8 C#
    AmazonS3(SimpleStorageService)是一个高度可扩展、数据可用性高、安全性强的对象存储服务。AmazonS3使用对象存储架构,数据以对象的形式存储在桶(buckets)中,每个对象都有一个唯一的键(key)。 本文主要分为两个部分:1、AmazonS3相关概念2、.net集成的代码*阅读提示:鼠标悬......