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

黄浩文

资深开发者布道师

亚马逊云科技

拥有电信、互联网以及云计算等行业超过 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_imagedisp_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860035.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

释放自我,智界新S7成为年轻人最爱的“第三空间”

年轻人最喜欢的时尚潮流是什么? 是音乐,是摇滚,是轰趴! 要不怎么说,国内最懂年轻人的汽车品牌,还得是智界呢。 12月25日,紧跟年轻人潮流的智界汽车,举办了“智界「7」妙派对夜直播歌会”活动,并邀请到了果味VC、旅行团乐队以及“小七”赖美云一起狂欢。 值得关注的是,…

记录一些AI实践课程的课后作业

0. 前记 创建这个随笔的想法其实也很简单,这个学期因为有一些课程需要线下上课所以回学校上了AI实践的课程,然后做了几个比较简单的AI实践项目,同时感觉有的项目还挺有意思,就记录一下。比较有代表性,之后有需要的话大概可以通过这篇随笔来简要回顾自己当时的一个做的策略…

【硬件测试】基于FPGA的QPSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

1.算法仿真效果 本文是之前写的文章基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR_fpga qpsk-CSDN博客的硬件片内测试版本。系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:…

uml类图总结

类图用于描述系统的静态结构,通过展示类、接口及其之间的关系,以便理解和设计系统 类图的基本元素 1.类(Class):类通常使用矩形框表示,其中包含三部分:类名、属性和方法。示例: 2.接口(Interface):表示方法类似类,但是会在矩形框顶部加上<<interface>>标…

任重道远

2024秋软工实践个人总结这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 课程总结学号 102201425一、学期回顾 1.1 回顾你对于软件工程课程的想象 在学期开始之前…

基于MPPT最大功率跟踪和SVPWM的光伏三相并网逆变器simulink建模与仿真

1.课题概述基于MPPT最大功率跟踪和SVPWM的光伏三相并网逆变器simulink建模与仿真。包括PV模块,MPPT模块,SVPWM模块,电网模块等。2.系统仿真结果 1不同光照大小的输出电压2不同光照大小的输出功率3不同光照大小的有功功率-无功功率 4不同光照大小的直流母线实时电压 5不同光…

请问云服务器数据库偶尔自动关闭的原因及解决方案

最近两天,我的云服务器上的数据库偶尔会自动关闭。这种情况导致了网站无法正常访问,影响了用户体验。请问这是什么原因引起的?是否有根本性的解决办法? 答案: 您好,根据您的描述,云服务器上的数据库偶尔自动关闭可能是由多种原因引起的。为了帮助您更好地理解并解决问题…

如何解决FTP上传后网站仍显示“正在建站中”的问题?

在使用FTP工具上传网站文件后,您可能会发现浏览器访问网站时仍然显示“正在建站中”的默认页面,而不是您上传的实际内容。这可能是由于文件上传不完整、默认页面未被覆盖或FTP路径设置错误等原因造成的。本文将详细介绍如何解决这一问题,确保您的网站能够正常显示上传的内容…

虚拟主机对外请求接口是否有端口限制?

您好,关于您提到的虚拟主机对外请求接口是否存在端口限制的问题,我们进行了详细的调查和确认。根据我们的了解,大多数虚拟主机服务商并不会对对外请求的端口进行严格限制,但为了确保网络安全和稳定性,仍有一些需要注意的地方。以下是详细的解答:默认端口开放情况: 虚拟主…

[ 2024 CISCN x 长城杯 ] pwn avm

2024 CISCN x 长城杯 AVM avm VM入门题。不过挺吃逆向经验的。之前都是复现,这算是第一次比赛的时候做出vm题。这个题的逆向思路非常经典,所以分享一下。 1.程序逆向 函数主函数如下: unsigned __int64 __fastcall main(__int64 a1, char **a2, char **a3) {_BYTE s[3080]; …

13C++循环结构-for循环(3)

1、回文数; 2、斐波那契数列及长整型 long; 3、逻辑判断与推理; 4、for语句的应用。一、回文数 问题:“地满红花红满地,天连碧水碧连天”是一副回文联,用回文形式写成的对联,既可以顺读,也可以倒读,意思不变。在数学中也存在这样特征的一类数,称为回文数。设n是一任意…

2025年了,你还不会配置Jetson Orin NX嘛?

2025年了,你还不会配置Jetson Orin NX嘛?我的设备为:Jetson Orin NX 16G + JetPack6.1+达妙科技载板 帅气的Jetson Orin NX拿到手了,都2025年了你还不会配置嘛???让我一篇文章带你不糟蹋这一美丽的艺术品!Cuda、CuDNN、TensorRT配置首先我们拿出一块刚刚烧录完的…