自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

本地構(gòu)建Llama 3.2-Vision多模態(tài)LLM聊天應(yīng)用實(shí)戰(zhàn)

譯文 精選
人工智能
在本文中,我們將學(xué)習(xí)如何使用開(kāi)源Llama3.2-Vision模型與我們提供的圖像聊天,其間你會(huì)驚嘆于該模型的OCR、圖像理解和推理能力。示例工程的所有代碼都將方便地提供在一個(gè)Colab筆記本文件中。

譯者 | 朱先忠

審校 | 重樓

本文將以實(shí)戰(zhàn)案例探討如何在類(lèi)似聊天的模式下從本地構(gòu)建Llama3.2-Vision模型,并在Colab筆記本上探索其多模態(tài)技能。

簡(jiǎn)介

視覺(jué)功能與大型語(yǔ)言模型(LLM)的集成正在通過(guò)多模態(tài)LLM(MLLM)徹底改變計(jì)算機(jī)視覺(jué)領(lǐng)域。這些模型結(jié)合了文本和視覺(jué)輸入,在圖像理解和推理方面表現(xiàn)出令人印象深刻的能力。雖然這些模型以前只能通過(guò)API訪問(wèn),但是最近發(fā)布的一些開(kāi)源項(xiàng)目已經(jīng)支持在本地執(zhí)行,這使得它們對(duì)生產(chǎn)環(huán)境中一線應(yīng)用更具吸引力。

在本文中,我們將學(xué)習(xí)如何使用開(kāi)源Llama3.2-Vision模型與我們提供的圖像聊天,其間你會(huì)驚嘆于該模型的OCR、圖像理解和推理能力。示例工程的所有代碼都將方便地提供在一個(gè)Colab筆記本文件中。

Llama 3.2-Vision模型

背景

Llama是“大型語(yǔ)言模型MetaAI”的縮寫(xiě),是Meta公司開(kāi)發(fā)的一系列高級(jí)大語(yǔ)言模型。他們的產(chǎn)品Llama 3.2推出了先進(jìn)的視覺(jué)功能。視覺(jué)變體有兩種大?。?1B和90B參數(shù),可在邊緣設(shè)備上進(jìn)行推理。Llama 3.2具有高達(dá)128k個(gè)標(biāo)記的上下文窗口,支持高達(dá)1120x1120像素的高分辨率圖像,可以處理復(fù)雜的視覺(jué)和文本信息。

架構(gòu)

Llama系列模型是僅使用解碼器的轉(zhuǎn)換器。Llama3.2-Vision模型建立在預(yù)訓(xùn)練的Llama 3.1純文本模型之上。它采用標(biāo)準(zhǔn)的密集自回歸轉(zhuǎn)換器架構(gòu),與其前身Llama和Llama 2并無(wú)太大差異。

為了支持視覺(jué)任務(wù),Llama 3.2使用預(yù)訓(xùn)練的視覺(jué)編碼器(ViT-H/14)提取圖像表示向量,并使用視覺(jué)適配器將這些表示集成到凍結(jié)語(yǔ)言模型中。適配器由一系列交叉注意層組成,允許模型專(zhuān)注于與正在處理的文本相對(duì)應(yīng)的圖像的特定部分(參考文獻(xiàn)【1】)。

適配器基于“文本-圖像”對(duì)進(jìn)行訓(xùn)練,以使圖像表示與語(yǔ)言表示對(duì)齊。在適配器訓(xùn)練期間,圖像編碼器的參數(shù)會(huì)更新,而語(yǔ)言模型參數(shù)保持凍結(jié)以保留現(xiàn)有的語(yǔ)言能力。

Llama 3.2-Vision模型架構(gòu):視覺(jué)模塊(綠色)集成到固定語(yǔ)言模型(粉紅色)中

這種設(shè)計(jì)使Llama 3.2在多模態(tài)任務(wù)中表現(xiàn)出色,同時(shí)保持其強(qiáng)大的純文本性能。生成的模型在需要圖像和語(yǔ)言理解的任務(wù)中展示了令人印象深刻的能力,并允許用戶(hù)與他們的視覺(jué)輸入進(jìn)行交互式交流。

編碼實(shí)戰(zhàn)

有了對(duì)Llama 3.2架構(gòu)的基本了解后,讓我們深入研究其實(shí)際實(shí)現(xiàn)。但首先,我們需要做一些準(zhǔn)備工作。

準(zhǔn)備

在Google Colab上運(yùn)行Llama3.2—Vision11B之前,我們需要做一些準(zhǔn)備:

1.GPU設(shè)置

  • 建議使用至少具有22GB VRAM的高端GPU進(jìn)行高效推理(參考文獻(xiàn)【2】)。
  • 對(duì)于Google Colab用戶(hù)來(lái)說(shuō):需要導(dǎo)航至“運(yùn)行時(shí)”>“更改運(yùn)行時(shí)類(lèi)型”>“A100 GPU”。請(qǐng)注意,高端GPU可能不適用于免費(fèi)的Colab用戶(hù)。

2.模型權(quán)限

請(qǐng)求訪問(wèn)Llama 3.2模型在鏈接https://www.llama.com/llama-downloads/處提供。

3.HuggingFace設(shè)置

如果你還沒(méi)有Hugging Face賬戶(hù),請(qǐng)?jiān)阪溄?a target="_blank">https://huggingface.co/join處創(chuàng)建一個(gè)。

如果你沒(méi)有Hugging Face賬戶(hù),請(qǐng)?jiān)阪溄觝ttps://huggingface.co/join處生成訪問(wèn)令牌。

對(duì)于Google Colab用戶(hù),請(qǐng)?jiān)诠雀鐲olab Secrets中將Hugging Face令牌設(shè)置為名為“HF_TOKEN”的秘密環(huán)境變量。

4.安裝所需的庫(kù)

加載模型

設(shè)置環(huán)境并獲得必要的權(quán)限后,我們將使用Hugging Face轉(zhuǎn)換庫(kù)來(lái)實(shí)例化模型及其相關(guān)的處理器。處理器負(fù)責(zé)為模型準(zhǔn)備輸入并格式化其輸出。

model_id = "meta-llama/Llama-3.2-11B-Vision-Instruct"

model = MllamaForConditionalGeneration.from_pretrained(
model_id,
torch_dtype=torch.bfloat16,
device_map="auto")

processor = AutoProcessor.from_pretrained(model_id)

預(yù)期的聊天模板

聊天模板通過(guò)存儲(chǔ)“用戶(hù)”(我們)和“助手”(AI模型)之間的交流,通過(guò)對(duì)話歷史記錄來(lái)維護(hù)上下文。對(duì)話歷史記錄的結(jié)構(gòu)為一個(gè)稱(chēng)為消息的字典列表,其中每個(gè)字典代表一個(gè)對(duì)話輪次,包括用戶(hù)和模型響應(yīng)。用戶(hù)輪次可以包括圖像文本或純文本輸入,其中{"type": "image"}表示圖像輸入。

例如,經(jīng)過(guò)幾次聊天迭代后,消息列表可能如下所示:

messages = [
{"role": "user",      "content": [{"type": "image"}, {"type": "text", "text": prompt1}]},
{"role": "assistant", "content": [{"type": "text", "text": generated_texts1}]},
{"role": "user",      "content": [{"type": "text", "text": prompt2}]},
{"role": "assistant", "content": [{"type": "text", "text": generated_texts2}]},
{"role": "user",      "content": [{"type": "text", "text": prompt3}]},
{"role": "assistant", "content": [{"type": "text", "text": generated_texts3}]}
]

此消息列表隨后會(huì)傳遞給apply_chat_template()方法,以便將對(duì)話轉(zhuǎn)換為模型期望格式的單個(gè)可標(biāo)記字符串。

主函數(shù)

在本教程中,我提供了一個(gè)chat_with_mllm函數(shù),該函數(shù)可實(shí)現(xiàn)與Llama 3.2 MLLM的動(dòng)態(tài)對(duì)話。此函數(shù)能夠處理圖像加載、預(yù)處理圖像和文本輸入、生成模型響應(yīng)并管理對(duì)話歷史記錄以啟用聊天模式交互。

def chat_with_mllm (model, processor, prompt, images_path=[],do_sample=False, temperature=0.1, show_image=False, max_new_tokens=512, messages=[], images=[]):

# 確保列表形式:
if not isinstance(images_path, list):
images_path =  [images_path]

#加載圖像
if len (images)==0 and len (images_path)>0:
for image_path in tqdm (images_path):
image = load_image(image_path)
images.append (image)
if show_image:
display ( image )

#如果開(kāi)始了一個(gè)關(guān)于一個(gè)圖像的新的對(duì)話
if len (messages)==0:
messages = [{"role": "user", "content": [{"type": "image"}, {"type": "text", "text": prompt}]}]

# 如果繼續(xù)對(duì)圖像進(jìn)行對(duì)話
else:
messages.append ({"role": "user", "content": [{"type": "text", "text": prompt}]})

# 處理輸入數(shù)據(jù)
text = processor.apply_chat_template(messages, add_generation_prompt=True)
inputs = processor(images=images, text=text, return_tensors="pt", ).to(model.device)

    生成相應(yīng)
generation_args = {"max_new_tokens": max_new_tokens, "do_sample": True}
if do_sample:
generation_args["temperature"] = temperature
generate_ids = model.generate(**inputs,**generation_args)
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:-1]
generated_texts = processor.decode(generate_ids[0], clean_up_tokenization_spaces=False)

# 附加該模型對(duì)對(duì)話歷史記錄的響應(yīng)
messages.append ({"role": "assistant", "content": [  {"type": "text", "text": generated_texts}]})

return generated_texts, messages, images

與Llama聊天

蝴蝶圖像示例

在我們的第一個(gè)示例中,我們將與Llama3.2進(jìn)行聊天,討論一張孵化蝴蝶的圖像。由于Llama3.2-Vision在使用圖像時(shí)不支持使用系統(tǒng)提示進(jìn)行提示,因此我們將直接在用戶(hù)提示中附加說(shuō)明,以指導(dǎo)模型的響應(yīng)。通過(guò)設(shè)置do_sample=True和temperature=0.2,我們可以在保持響應(yīng)一致性的同時(shí)實(shí)現(xiàn)輕微的隨機(jī)性。對(duì)于固定答案,你可以設(shè)置do_sample==False。保存聊天歷史記錄的messages參數(shù)最初為空,如images參數(shù)中所示:

instructions = "Respond concisely in one sentence."
prompt = instructions + "Describe the image."

response, messages,images= chat_with_mllm ( model, processor, prompt,
images_path=[img_path],
do_sample=True,
temperature=0.2,
show_image=True,
messages=[],
images=[])

# 輸出:"The image depicts a butterfly emerging from its chrysalis, 
#           with a row of chrysalises hanging from a branch above it."

圖片來(lái)自Pixabay(https://www.pexels.com/photo/brown-and-white-swallowtail-butterfly-under-white-green-and-brown-cocoon-in-shallow-focus-lens-63643/)。

我們可以看到,輸出準(zhǔn)確而簡(jiǎn)潔,表明模型有效地理解了圖像。

對(duì)于下一次聊天迭代,我們將傳遞一個(gè)新提示以及聊天歷史記錄和圖像文件。新提示旨在評(píng)估Llama3.2的推理能力:

prompt = instructions + "What would happen to the chrysalis in the near future?"
response, messages, images= chat_with_mllm ( model, processor, prompt,
images_path=[img_path,],
do_sample=True,
temperature=0.2,
show_image=False,
messages=messages,
images=images)

# 輸出: "The chrysalis will eventually hatch into a butterfly."

我們?cè)谔峁┑腃olab筆記本中繼續(xù)此聊天,并得到了以下對(duì)話:

對(duì)話通過(guò)準(zhǔn)確描述場(chǎng)景,突出了模型的圖像理解能力。它還展示了它的推理能力,通過(guò)邏輯地連接信息來(lái)正確推斷蛹會(huì)發(fā)生什么,并解釋為什么有些蛹是棕色的,而有些蛹是綠色的。

模因圖像示例

在這個(gè)例子中,我將向模型展示我自己創(chuàng)建的模因,以評(píng)估Llama的OCR能力并確定它是否理解我的幽默感。

instructions = "You are a computer vision engineer with sense of humor."
prompt = instructions + "Can you explain this meme to me?"


response, messages,images= chat_with_mllm ( model, processor, prompt,
images_path=[img_path,],
do_sample=True,
temperature=0.5,
show_image=True,
messages=[],
images=[])

這是輸入模因:

作者制作的表情包。原始熊圖像由Hans-Jurgen Mager制作。

這是模型的回應(yīng):

我們可以看到,該模型展示了出色的OCR能力,并理解了圖像中文本的含義。至于它的幽默感——你覺(jué)得怎么樣,它明白了嗎?你明白了嗎?也許我也應(yīng)該努力培養(yǎng)我的幽默感!

結(jié)束語(yǔ)

在本文中,我們學(xué)習(xí)了如何在本地構(gòu)建Llama3.2-Vision模型并管理聊天式交互的對(duì)話歷史記錄,從而增強(qiáng)用戶(hù)參與度。我們探索了Llama 3.2的零樣本能力,并領(lǐng)悟了其場(chǎng)景理解、推理和OCR技能。

我們還可以將其他一些高級(jí)技術(shù)應(yīng)用于Llama 3.2,例如對(duì)獨(dú)特?cái)?shù)據(jù)進(jìn)行微調(diào),或使用檢索增強(qiáng)生成(RAG)來(lái)進(jìn)行預(yù)測(cè)并減少幻覺(jué)。

總體而言,本文帶領(lǐng)你深入了解了快速發(fā)展的多模態(tài)LLM領(lǐng)域及其在各種應(yīng)用中的強(qiáng)大功能。

參考文獻(xiàn)

【0】本文示例項(xiàng)目在Colab Notebook地址:https://gist.github.com/Lihi-Gur-Arie/0e87500813c29bb4c4a6a990795c3aaa

【1】Llama 3模型介紹地址:https://arxiv.org/pdf/2407.21783

【2】Llama 3.2 11B Vision模型要求:https://llamaimodel.com/requirements-3-2/

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專(zhuān)家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:Chat with Your Images Using Llama 3.2-Vision Multimodal LLMs,作者:Lihi Gur Arie

責(zé)任編輯:姜華 來(lái)源: 51CTO內(nèi)容精選
相關(guān)推薦

2024-12-16 07:00:00

2024-01-11 16:24:12

人工智能RAG

2025-01-08 08:21:16

2024-10-29 11:54:25

2023-11-10 08:00:00

微服務(wù)架構(gòu)開(kāi)發(fā)

2024-08-08 13:04:28

2023-10-31 16:37:55

大型語(yǔ)言模型人工智能

2024-03-12 10:05:47

大型語(yǔ)言模型

2024-12-18 18:57:58

2024-09-26 14:40:45

2024-11-19 14:40:00

AI技術(shù)

2024-07-11 16:16:27

ChatGPTLLM

2024-09-26 17:54:10

2024-07-02 09:00:00

2023-12-25 09:07:50

AI人工智能Ferret

2024-11-22 08:22:58

2024-11-19 15:00:00

模型開(kāi)源

2025-03-18 08:00:00

大語(yǔ)言模型KubeMQOpenAI

2023-06-08 11:32:00

模型論文

2024-12-30 00:01:00

多模態(tài)大模型Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)