### **概述**
在大语言模型领域,多模态模型的强大能力已经开始为解决复杂问题开辟了新的可能性。本文探讨的问题是**分析全球糖尿病患病率趋势**,这是一个关系到全球数亿人的重大健康问题。本文将探讨**如何在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 上,使用 Meta Llama 3.2 90B Instruct 模型来分析全球不同国家或地区的糖尿病患者的患病率分布数据**。
Meta 开发的 Llama 3.2 90B Instruct 模型,是一种先进的具有多模态能力的大模型,它能够处理和分析文本和图像,这使它成为分析全球糖尿病患者的患病率数据的理想选择之一。
本文将采用运行在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的 Llama 3.2 90B Instruct 模型来进行分析,[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 与流行的先进大语言模型无缝集成,可以帮助开发者更高效专业地创建自己的生成式 AI 应用程序。
### **多模态能力和基准**
Meta 在其对外发布的论文“The Llama 3 Herd of Models”之中,详细阐释了将多模态能力添加到 Llama 3 系列模型的研究组合方法,该方法会经过五个阶段来训练多模态模型,分别是:
1. 语言模型预训练
2. 多模态编码器预训练
3. 视觉适配器训练
4. 模型微调
5. 语音适配器训练
该论文中的图示说明了这一过程:
![image.png](https://dev-media.amazoncloud.cn/1981c69e91cc493db3e8d02537ac5d48_image.png "image.png")
**Source:**
https://ai.meta.com/research/publications/the-llama-3-herd-of-models/?trk=cndc-detail
来自 llama.com 网站公开的测试数据,比较了不同人工智能模型在各种基准测试和任务上的表现。下表分为“大学水平问题和数学推理”和“图表和图解理解”两大部分,每个部分下又有几个子类别。
在大多数基准测试中,Llama 3.2 90B 模型的表现普遍优于其他模型,在“AI2 Diagram”基准测试中,Llama 3.2 90B 模型获得了**92.3**%的最高分!
![image.png](https://dev-media.amazoncloud.cn/49aa3b17d8cd45d8a4b3ad17f4bf9572_image.png "image.png")
**Source:**
https://www.llama.com/?trk=cndc-detail
接下来将使用一个具体的案例研究,**演示如何在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 方便高效地利用 Llama 3.2 90B Instruct 模型的多模态能力**。本文将使用这个模型分析全球不同国家和地区的糖尿病患病率趋势。
### **前期准备**
我们的分析数据集是一个包含糖尿病流行率信息的数据集,其包括相关的图像等。在可以利用 Meta Llama 3.2 90B Instruct 模型进行推理之前,还需要确保图像数据与其要求兼容。
为了解决这个问题,开发了一个实用的 Python 程序函数,用于调整图像大小并确保符合 Meta Llama 3.2 90B Instruct 模型规范。
**Python 程序函数:**
https://github.com/hanyun2019/bedrock-in-practice/blob/main/utils.py?trk=cndc-detail
分析中采用的两张关于糖尿病病患数据及趋势的图像来网站如下所示。该网站汇编了世界银行(2024年)从多个来源收集的相关数据:https://ourworldindata.org/grapher/diabetes-prevalence?trk=cndc-detail
### **设置**
首先,导入必要的库并打印 boto3 版本。将以下代码导入 `boto3` 库,这是亚马逊云科技服务的 Python SDK,然后打印 `boto3` 的版本以确保它是最新的:
```js
import boto3
print('boto3 version')
print(boto3.__version__)
!pip install --upgrade boto3
```
接下来,定义模型 ID 并加载需要分析的图像:
1. MODEL_ID 被设置为在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 上 Llama 3.2 90B Instruct 模型的特定模型 ID。
2. ORIGIN_IMAGE 被设置为原始图像文件的路径。
```js
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 模型对输入图像的大小有一定限制。
```js
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](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Runtime 服务创建一个客户端对象:
```js
bedrock_runtime = boto3.client("bedrock-runtime")
```
然后,以二进制读取模式(`“rb”`)打开调整后的图像文件,文件内容被读入 `image` 变量:
```js
with open(RESIZED_IMAGE, "rb") as f:
image = f.read()
```
接着定义一个用户消息,要求模型识别出全球糖尿病患病率最高的10个国家:
```js
user_message = "According to this chart, which are the top 10 countries with the highest prevalence of diabetes?"
```
创建一个消息列表,其中包含一条消息。消息中包括用户的角色、图像和用户的消息内容:
```js
messages = [
{
"role": "user",
"content": [
{"image": {"format": "png", "source": {"bytes": image}}},
{"text": user_message},
],
}
]
```
调用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) Runtime 客户端的 `converse` 函数,传入 `MODEL_ID` 和以上消息列表。模型的响应消息将存储在 `response` 变量中:
```js
response = bedrock_runtime.converse(
modelId=MODEL_ID,
messages=messages,
)
```
从响应对象中提取响应文本,并将其存储在 `response_text` 变量中。之后,将响应文本打印显示出来:
```js
response_text = response["output"]["message"]["content"][0]["text"]
print(response_text)
```
本文获得的模型测试响应文本如下,供您参考:
```js
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
细心的开发者也可以找到您所在的洲际数据图表,以进一步探索这个话题。
### **总结**
本文演示了**如何利用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 上 Meta Llama 3.2 90B Instruct 模型的多模态能力,来洞察全球糖尿病患病率**。通过利用这种先进的大型多模态模型,能够同时分析文本数据和可视化数据,根据提供的图表来确定全球糖尿病患病率最高的前10个国家或地区。
Meta Llama 3.2 90B Instruct 模型在各种基准测试中表现卓越,尤其在图表理解等领域,非常适合这种多模态分析任务。**在 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 上运行该模型,还能够更高效地处理数据并生成准确的洞见。**
通过这个实际案例,展示了**将先进的大模型与多模态数据相结合,来解决医疗分析等领域复杂现实问题的潜力**。随着大模型多模态能力的不断发展,从各种数据源中获取更深入的洞见,为各行业带来影响深远的全新解决方案,将孕育出更多新的市场机遇。
**参考文献**
**1.The Llama 3 Herd of Models:**
https://ai.meta.com/research/publications/the-llama-3-herd-of-models/?trk=cndc-detail
**2.Introducing Llama 3.2 models from Meta in [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail):**
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
**3.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](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)上的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”
![image.png](https://dev-media.amazoncloud.cn/504d18c66fa445a7b85bab6310d1d299_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/4f6d903f780a419c8ba4de37f1446320_image.png "image.png")
> *前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。