黃浩文
資深開發者布道師
亞馬遜云科技
擁有電信、互聯網以及云計算等行業超過 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:
- **Saudi Arabia**: 17.5%
- **Egypt**: 17.5%
- **United Arab Emirates**: 17.5%
- **Bahrain**: 17.5%
- **Kuwait**: 17.5%
- **Qatar**: 17.5%
- **Oman**: 17.5%
- **Yemen**: 17.5%
- **Libya**: 17.5%
- **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?上運行該模型,還能夠更高效地處理數據并生成準確的洞見。
通過這個實際案例,我們展示了將先進的大模型與多模態數據相結合,來解決醫療分析等領域復雜現實問題的潛力。隨著大模型多模態能力的不斷發展,從各種數據源中獲取更深入的洞見,為各行業帶來影響深遠的全新解決方案,將孕育出更多新的市場機遇。
參考文獻
- The Llama 3 Herd of Models
https://ai.meta.com/research/publications/the-llama-3-herd-of-models/?trk=cndc-detail
- 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
- 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=CSDN