模型概述
模型特點
模型能力
使用案例
🚀 H2OVL-Mississippi-2B模型
H2OVL-Mississippi-2B是由H2O.ai開發的高性能通用視覺語言模型,可處理廣泛的多模態任務。該模型擁有20億參數,在圖像描述、視覺問答(VQA)和文檔理解等任務中表現出色,同時能滿足實際應用的效率需求。它基於H2O-Danube語言模型構建,將功能擴展到視覺和語言任務的集成,在多個基準測試中可與更大的模型競爭,為文檔AI、OCR和多模態推理提供了通用且可擴展的解決方案。
模型相關鏈接

✨ 主要特性
- 20億參數:在性能和效率之間取得平衡,適用於文檔處理、OCR、VQA等多種任務。
- 針對視覺語言任務優化:在包括文檔AI、OCR和多模態推理等廣泛應用中實現高性能。
- 綜合數據集:在1700萬圖像 - 文本對上進行訓練,確保廣泛覆蓋和強大的任務泛化能力。
📊 基準測試
多個基準測試中相似規模模型的性能比較 - OpenVLM排行榜
模型 | 參數 (B) | 平均得分 | MMBench | MMStar | MMMUVAL | Math Vista | Hallusion | AI2DTEST | OCRBench | MMVet |
---|---|---|---|---|---|---|---|---|---|---|
Qwen2-VL-2B | 2.1 | 57.2 | 72.2 | 47.5 | 42.2 | 47.8 | 42.4 | 74.7 | 797 | 51.5 |
H2OVL-Mississippi-2B | 2.1 | 54.4 | 64.8 | 49.6 | 35.2 | 56.8 | 36.4 | 69.9 | 782 | 44.7 |
InternVL2-2B | 2.1 | 53.9 | 69.6 | 49.8 | 36.3 | 46.0 | 38.0 | 74.1 | 781 | 39.7 |
Phi-3-Vision | 4.2 | 53.6 | 65.2 | 47.7 | 46.1 | 44.6 | 39.0 | 78.4 | 637 | 44.1 |
MiniMonkey | 2.2 | 52.7 | 68.9 | 48.1 | 35.7 | 45.3 | 30.9 | 73.7 | 794 | 39.8 |
MiniCPM-V-2 | 2.8 | 47.9 | 65.8 | 39.1 | 38.2 | 39.8 | 36.1 | 62.9 | 605 | 41.0 |
InternVL2-1B | 0.8 | 48.3 | 59.7 | 45.6 | 36.7 | 39.4 | 34.3 | 63.8 | 755 | 31.5 |
PaliGemma-3B-mix-448 | 2.9 | 46.5 | 65.6 | 48.3 | 34.9 | 28.7 | 32.2 | 68.3 | 614 | 33.1 |
H2OVL-Mississippi-0.8B | 0.8 | 43.5 | 47.7 | 39.1 | 34.0 | 39.0 | 29.6 | 53.6 | 751 | 30.0 |
DeepSeek-VL-1.3B | 2.0 | 39.6 | 63.8 | 39.9 | 33.8 | 29.8 | 27.6 | 51.5 | 413 | 29.2 |
🚀 快速開始
我們提供了使用transformers
運行h2ovl-mississippi-2b的示例代碼。
📦 安裝依賴
pip install transformers torch torchvision einops timm peft sentencepiece
如果您有安培架構的GPU,可以安裝flash-attention以加速推理:
pip install flash_attn
💻 使用示例
基礎用法
使用transformers
進行推理:
import torch
from transformers import AutoModel, AutoTokenizer
# 設置模型和分詞器
model_path = 'h2oai/h2ovl-mississippi-2b'
model = AutoModel.from_pretrained(
model_path,
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True).eval().cuda()
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, use_fast=False)
generation_config = dict(max_new_tokens=1024, do_sample=True)
# 純文本對話
question = 'Hello, who are you?'
response, history = model.chat(tokenizer, None, question, generation_config, history=None, return_history=True)
print(f'User: {question}\nAssistant: {response}')
# 單張圖像示例
image_file = './examples/image1.jpg'
question = '<image>\nPlease describe the image in detail.'
response, history = model.chat(tokenizer, image_file, question, generation_config, history=None, return_history=True)
print(f'User: {question}\nAssistant: {response}')
# 多張圖像 - 多輪對話示例
image_files = ['./examples/image1.jpg', './examples/image2.jpg']
question = 'Image-1: <image>\nImage-2: <image>\nDescribe the Image-1 and Image-2 in detail.'
response, history = model.chat(tokenizer, image_files, question, generation_config, history=None, return_history=True)
print(f'User: {question}\nAssistant: {response}')
question = 'What are the similarities and differences between these two images.'
response, history = model.chat(tokenizer, image_files, question, generation_config=generation_config, history=history, return_history=True)
print(f'User: {question}\nAssistant: {response}')
高級用法
使用vllm
進行推理:
h2ovl-mississippi模型也支持vllm v0.6.4及更高版本。
首先安裝vllm:
pip install vllm
離線推理
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
from PIL import Image
question = "Describe this image in detail"
image = Image.open("assets/a_cat.png")
model_name = "h2oai/h2ovl-mississippi-2b"
llm = LLM(
model=model_name,
)
tokenizer = AutoTokenizer.from_pretrained(model_name,
trust_remote_code=True)
messages = [{'role': 'user', 'content': f"<image>\n{question}"}]
prompt = tokenizer.apply_chat_template(messages,
tokenize=False,
add_generation_prompt=True)
# H2OVL-Mississippi的停止標記
# https://huggingface.co/h2oai/h2ovl-mississippi-2b
stop_token_ids = [tokenizer.eos_token_id]
sampling_params = SamplingParams(n=1,
temperature=0.8,
top_p=0.8,
seed=777, # 可復現性的種子
max_tokens=1024,
stop_token_ids=stop_token_ids)
# 單提示推理
outputs = llm.generate({
"prompt": prompt,
"multi_modal_data": {"image": image},
},
sampling_params=sampling_params)
# 查看輸出
for o in outputs:
generated_text = o.outputs[0].text
print(generated_text)
更多示例請見:https://docs.vllm.ai/en/latest/models/vlm.html#offline-inference
使用與OpenAI兼容的視覺API進行在線推理
運行以下命令以使用h2ovl-mississippi-2b模型啟動vLLM服務器:
vllm serve h2oai/h2ovl-mississippi-2b --dtype auto --api-key token-abc123
from openai import OpenAI
client = OpenAI(
base_url="http://0.0.0.0:8000/v1",
api_key="token-abc123",
)
# 檢查模型名稱
model_name = client.models.list().data[0].id
print(model_name)
# 使用聊天完成API
response = client.chat.completions.create(
model=model_name,
messages=[{
'role':
'user',
'content': [{
'type': 'text',
'text': 'describe this image in detail',
}, {
'type': 'image_url',
'image_url': {
'url':
# 來自https://galaxyofai.com/opencv-with-python-full-tutorial-for-data-science/的圖像示例
# 這是一隻貓
'https://galaxyofai.com/wp-content/uploads/2023/04/image-42.png',
},
}],
}],
temperature=0.8,
top_p=0.8)
print(response)
更多示例請見:https://docs.vllm.ai/en/latest/models/vlm.html#online-inference
📚 詳細文檔:JSON提取的提示工程
概述
本指南展示瞭如何創建提示,以提取信息並將其轉換為結構化的JSON輸出。從基礎示例開始,逐步過渡到更復雜的JSON結構,包括處理表格和圖表圖像中的數據。目標是幫助用戶設計可用於各種應用(如自然語言處理、聊天機器人或從視覺輸入中提取數據)的有效提示。
目錄
開始使用
要開始從圖像中提取JSON數據,必須清楚瞭解要提取的視覺內容以及所需JSON輸出的結構。以下示例將指導您如何編寫提示以實現這一目標。
示例1:從圖像中提取簡單信息
假設場景:您有一張包含“姓名”、“出生日期”和“地址”等基本信息的表格圖像。
提示:
從表格圖像中提取詳細信息,並將其結構化為JSON格式:
{
"name": "",
"date_of_birth": "",
"address": ""
}
預期輸出:
{
"name": "John Doe",
"date_of_birth": "1990-01-01",
"address": "1234 Elm Street, Springfield"
}
示例2:從圖像中提取嵌套信息
假設場景:您有一張包含詳細個人信息(包括聯繫方式和緊急聯繫人)的表格圖像。
提示:
從表格中提取信息,並按以下格式進行格式化:
{
"personal_details": {
"name": "",
"age": 0,
"gender": ""
},
"contact": {
"phone": "",
"email": ""
},
"emergency_contact": {
"name": "",
"relation": "",
"phone": ""
}
}
預期輸出:
{
"personal_details": {
"name": "Sarah Connor",
"age": 35,
"gender": "Female"
},
"contact": {
"phone": "555-1234",
"email": "sarah.connor@example.com"
},
"emergency_contact": {
"name": "Kyle Reese",
"relation": "Friend",
"phone": "555-5678"
}
}
示例3:從圖像中提取列表和數組
假設場景:您有一張列出多個事件、其時間和地點的日程表圖像。
提示:
從日程表圖像中提取事件詳細信息,並將其結構化為JSON:
{
"events": [
{
"name": "",
"time": "",
"location": ""
}
]
}
預期輸出:
{
"events": [
{
"name": "Morning Meeting",
"time": "09:00 AM",
"location": "Conference Room 1"
},
{
"name": "Lunch Break",
"time": "12:00 PM",
"location": "Cafeteria"
},
{
"name": "Project Update",
"time": "02:00 PM",
"location": "Conference Room 2"
}
]
}
示例4:從圖像中提取表格數據
表格圖像通常包含需要解析並轉換為JSON的結構化數據。以下示例展示瞭如何處理表格數據提取。
假設場景:您有一張列出產品名稱、價格和數量的表格圖像。
提示:
從表格圖像中提取數據,並將其格式化為JSON:
{
"products": [
{
"product_name": "",
"price": "",
"quantity": 0
}
]
}
預期輸出:
{
"products": [
{
"product_name": "Apples",
"price": "$2",
"quantity": 10
},
{
"product_name": "Bananas",
"price": "$1",
"quantity": 20
},
{
"product_name": "Oranges",
"price": "$3",
"quantity": 15
}
]
}
示例5:從圖像中提取圖表數據
圖表包含需要準確提取的元數據和數據點。以下是如何構建提示以從圖像中提取圖表數據的方法。
假設場景:您有一張顯示月度銷售數據的柱狀圖圖像。
提示:
從圖像中提取柱狀圖的詳細信息,包括標題、軸標籤和數據點,並將其格式化為JSON:
{
"chart": {
"title": "",
"x_axis": "",
"y_axis": "",
"data_points": [
{
"label": "",
"value": 0
}
]
}
}
預期輸出:
{
"chart": {
"title": "Monthly Sales Report",
"x_axis": "Months",
"y_axis": "Sales (in $)",
"data_points": [
{
"label": "January",
"value": 500
},
{
"label": "February",
"value": 600
},
{
"label": "March",
"value": 700
}
]
}
}
最佳實踐
- 明確表述:在提示中清晰定義所需的鍵和結構,以避免歧義。
- 使用示例:提供示例輸出,以便系統理解預期格式。
- 考慮變化:考慮視覺數據中可能的變化,並確保提示能夠適應這些變化。
- 從簡單開始:從簡單的結構開始,根據需要逐步增加複雜性。
- 測試和迭代:通過測試優化提示,確保輸出的準確性和一致性。
致謝
我們要感謝OpenGVLab的InternVL團隊的研究和代碼庫,我們在此基礎上進行了構建和擴展。我們也感謝LLaVA團隊和Monkey團隊在改進多模態模型方面提供的見解和技術。
免責聲明
在使用本倉庫中提供的大語言模型之前,請仔細閱讀本免責聲明。您使用該模型即表示您同意以下條款和條件。
- 偏差和冒犯性:大語言模型是在各種互聯網文本數據上進行訓練的,這些數據可能包含有偏差、種族主義、冒犯性或其他不適當的內容。使用此模型即表示您承認並接受生成的內容有時可能存在偏差或產生冒犯性或不適當的內容。本倉庫的開發者不認可、支持或推廣任何此類內容或觀點。
- 侷限性:大語言模型是基於人工智能的工具,而非人類。它可能會產生不正確、無意義或不相關的回覆。用戶有責任批判性地評估生成的內容,並自行決定是否使用。
- 自擔風險:使用此大語言模型的用戶必須對使用該工具可能產生的任何後果承擔全部責任。本倉庫的開發者和貢獻者不對因使用或濫用所提供的模型而導致的任何損害、損失或傷害承擔責任。
- 道德考量:鼓勵用戶負責任和道德地使用大語言模型。使用此模型即表示您同意不將其用於宣揚仇恨言論、歧視、騷擾或任何形式的非法或有害活動。
- 報告問題:如果您遇到大語言模型生成的有偏差、冒犯性或其他不適當的內容,請通過提供的渠道向倉庫維護者報告。您的反饋將有助於改進模型並減輕潛在問題。
- 免責聲明變更:本倉庫的開發者保留隨時修改或更新本免責聲明的權利,無需事先通知。用戶有責任定期查看免責聲明,以瞭解任何變更。
使用本倉庫中提供的大語言模型即表示您同意接受並遵守本免責聲明中規定的條款和條件。如果您不同意本免責聲明的任何部分,則應避免使用該模型及其生成的任何內容。
📄 許可證
本項目採用Apache-2.0許可證。








