模型概述
模型特點
模型能力
使用案例
🚀 Phi-3.5-vision
Phi-3.5-vision是一款輕量級、先進的開源多模態模型。它基於包含合成數據和公開網站數據的數據集進行訓練,專注於高質量、富含推理的文本和視覺數據。該模型屬於Phi-3模型家族,多模態版本支持128K上下文長度(以令牌為單位)。
🚀 快速開始
Phi-3.5-vision模型適用於廣泛的商業和研究用途,尤其在英文場景下表現出色。它可用於具有視覺和文本輸入功能的通用AI系統和應用,能在內存/計算受限環境、低延遲場景中發揮作用,還可用於一般圖像理解、光學字符識別、圖表和表格理解、多圖像比較以及多圖像或視頻片段總結等任務。
✨ 主要特性
- 輕量級與高性能:基於高質量數據集訓練,在多模態任務中表現出色。
- 廣泛的應用場景:適用於多種商業和研究用途,支持多種視覺和文本相關任務。
- 長上下文支持:多模態版本支持128K上下文長度,能處理更復雜的輸入。
📦 安裝指南
環境要求
當前transformers
版本可通過以下命令驗證:pip list | grep transformers
。
所需的包示例如下:
flash_attn==2.5.8
numpy==1.24.4
Pillow==10.3.0
Requests==2.31.0
torch==2.3.0
torchvision==0.18.0
transformers==4.43.0
accelerate==0.30.0
Phi-3.5-vision-Instruct也可在Azure AI Studio中使用。
💻 使用示例
基礎用法
from PIL import Image
import requests
from transformers import AutoModelForCausalLM
from transformers import AutoProcessor
model_id = "microsoft/Phi-3.5-vision-instruct"
# Note: set _attn_implementation='eager' if you don't have flash_attn installed
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
trust_remote_code=True,
torch_dtype="auto",
_attn_implementation='flash_attention_2'
)
# for best performance, use num_crops=4 for multi-frame, num_crops=16 for single-frame.
processor = AutoProcessor.from_pretrained(model_id,
trust_remote_code=True,
num_crops=4
)
images = []
placeholder = ""
# Note: if OOM, you might consider reduce number of frames in this example.
for i in range(1,20):
url = f"https://image.slidesharecdn.com/azureintroduction-191206101932/75/Introduction-to-Microsoft-Azure-Cloud-{i}-2048.jpg"
images.append(Image.open(requests.get(url, stream=True).raw))
placeholder += f"<|image_{i}|>\n"
messages = [
{"role": "user", "content": placeholder+"Summarize the deck of slides."},
]
prompt = processor.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = processor(prompt, images, return_tensors="pt").to("cuda:0")
generation_args = {
"max_new_tokens": 1000,
"temperature": 0.0,
"do_sample": False,
}
generate_ids = model.generate(**inputs,
eos_token_id=processor.tokenizer.eos_token_id,
**generation_args
)
# remove input tokens
generate_ids = generate_ids[:, inputs['input_ids'].shape[1]:]
response = processor.batch_decode(generate_ids,
skip_special_tokens=True,
clean_up_tokenization_spaces=False)[0]
print(response)
高級用法
# 若要實現最佳性能,多幀處理建議設置 num_crops=4,單幀處理建議設置 num_crops=16。
# 若要關閉 flash_attention,可設置 _attn_implementation='eager'。
📚 詳細文檔
輸入格式
鑑於訓練數據的性質,Phi-3.5-vision模型最適合使用以下聊天格式的提示:
- 單圖像:
<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n
- 多輪對話:
<|user|>\n<|image_1|>\n{prompt_1}<|end|>\n<|assistant|>\n{response_1}<|end|>\n<|user|>\n{prompt_2}<|end|>\n<|assistant|>\n
對於多圖像使用場景,在提示前面添加多個圖像佔位符。<|image_{}|>
索引應從1開始。示例提示如下:
<|user|>\n<|image_1|>\n<|image_2|>\n<|image_3|>\n<|image_4|>\n{prompt}<|end|>\n<|assistant|>\n
本地加載模型
獲取Phi-3.5-vision-instruct模型檢查點後,用戶可使用上述示例代碼進行推理。
模型信息
屬性 | 詳情 |
---|---|
模型類型 | Phi-3.5-vision具有42億個參數,包含圖像編碼器、連接器、投影器和Phi-3 Mini語言模型。 |
輸入 | 文本和圖像,最適合使用聊天格式的提示。 |
上下文長度 | 128K令牌 |
GPU | 256個A100 - 80G |
訓練時間 | 6天 |
訓練數據 | 5000億個令牌(視覺令牌 + 文本令牌) |
輸出 | 針對輸入生成的文本 |
訓練日期 | 2024年7月至8月 |
狀態 | 這是一個基於截止日期為2024年3月15日的離線文本數據集訓練的靜態模型。隨著模型的改進,未來可能會發布調優後的版本。 |
發佈日期 | 2024年8月 |
數據概述
訓練數據來源廣泛,包括:
- 經過嚴格質量篩選的公開文檔、精選的高質量教育數據和代碼。
- 精選的高質量圖像 - 文本交錯數據。
- 新創建的合成“教科書式”數據,用於教授數學、編碼、常識推理、世界常識(科學、日常活動、心理理論等),以及新創建的圖像數據(如圖表、表格、圖表、幻燈片)、多圖像和視頻數據(如短視頻片段、相似圖像對)。
- 涵蓋各種主題的高質量聊天格式監督數據,以反映人類在指令遵循、真實性、誠實性和有用性等不同方面的偏好。 數據收集過程中,從公開文檔中獲取信息,並精心過濾掉不良文檔和圖像。為保護隱私,對各種圖像和文本數據源進行了仔細過濾,以去除訓練數據中任何潛在的個人數據。有關數據的更多詳細信息,請參閱Phi-3技術報告。
微調方法
建議用戶查看Phi-3 CookBook視覺微調配方。
基準測試
為了解模型能力,使用內部基準測試平臺在多種零樣本基準測試中對Phi-3.5-vision與一組模型進行了比較。以下是在代表性基準測試上的模型質量概述:
類別 | 基準測試 | Phi-3.5-vision-instruct | Intern-VL-2-4B | Intern-VL-2-8B | Gemini-1.5-Flash | GPT-4o-mini 2024-7-18 | Claude-3.5-Sonnet | Gemini-1.5-Pro | GPT-4o 2024-5-13 |
---|---|---|---|---|---|---|---|---|---|
流行聚合基準測試 | MMMU (val) | 43.0 | 44.22 | 46.33 | 49.33 | 52.1 | 52.67 | 54.11 | 61.78 |
MMBench (dev-en) | 81.9 | 83.4 | 87.0 | 85.7 | 83.8 | 82.3 | 87.9 | 88.4 | |
視覺科學知識推理 | ScienceQA (img-test) | 91.3 | 94.9 | 95.9 | 84.5 | 84.0 | 73.8 | 86.0 | 88.5 |
視覺數學推理 | MathVista (testmini) | 43.9 | 53.7 | 51.1 | 55.3 | 38.8 | 54.0 | 57.4 | 54.4 |
InterGPS (test) | 36.3 | 45.6 | 53.2 | 39.4 | 39.9 | 45.6 | 58.2 | 46.9 | |
圖表推理 | AI2D (test) | 78.1 | 77.3 | 81.4 | 78.4 | 75.2 | 68.9 | 75.6 | 82.8 |
ChartQA (test) | 81.8 | 78.8 | 80.4 | 57.6 | 54.5 | 73.2 | 68.2 | 64.0 | |
文檔智能 | TextVQA (val) | 72.0 | 66.2 | 68.8 | 67.4 | 70.9 | 70.5 | 64.5 | 75.6 |
對象視覺存在驗證 | POPE (test) | 86.1 | 83.3 | 84.2 | 86.1 | 83.6 | 76.6 | 89.3 | 87.0 |
安全評估和紅隊測試
方法
Phi-3系列模型採用了強大的安全後訓練方法。該方法利用了各種開源和內部生成的數據集。安全對齊採用的總體技術是監督微調(SFT)和基於人類反饋的強化學習(RLHF)方法的結合,利用人類標註和合成的英語數據集,包括專注於有用性和無害性的公開數據集以及針對多個安全類別的各種問答。
安全評估
利用各種評估技術,包括紅隊測試、對抗性對話模擬和安全評估基準數據集,評估Phi-3.5模型在多個風險類別中產生不良輸出的傾向。採用多種方法來彌補單一方法的侷限性。有關安全對齊的更多詳細信息,請參閱技術報告。
🔧 技術細節
安全評估和紅隊測試
Phi-3家族模型採用了強大的安全後訓練方法,結合了SFT和RLHF技術,利用多種開源和內部生成的數據集進行安全對齊。通過紅隊測試、對抗性對話模擬和安全評估基準數據集等多種評估技術,評估模型在多個風險類別中產生不良輸出的傾向。
📄 許可證
該模型遵循MIT許可證。
商標說明
本項目可能包含項目、產品或服務的商標或標識。對微軟商標或標識的授權使用需遵循微軟商標和品牌指南。在本項目的修改版本中使用微軟商標或標識不得造成混淆或暗示微軟的贊助。任何第三方商標或標識的使用需遵循這些第三方的政策。
負責任的AI考慮
與其他模型一樣,Phi系列模型可能存在不公平、不可靠或冒犯性的行為。開發者在使用模型時,應考慮以下潛在問題,並遵循負責任的AI最佳實踐,確保特定用例符合相關法律法規:
⚠️ 重要提示
- 服務質量:Phi模型主要基於英文文本訓練,非英文語言的性能可能較差。訓練數據中代表性較低的英語變體的性能可能不如標準美式英語。
- 傷害表徵和刻板印象延續:這些模型可能過度或不足表徵某些人群,抹去某些群體的代表性,或強化貶低性或負面刻板印象。儘管進行了安全後訓練,但由於不同群體的表徵水平不同或訓練數據中反映現實世界模式和社會偏見的負面刻板印象示例普遍存在,這些侷限性可能仍然存在。
- 不適當或冒犯性內容:這些模型可能產生其他類型的不適當或冒犯性內容,在敏感環境中部署時,若無針對特定用例的額外緩解措施,可能不適合。
- 信息可靠性:語言模型可能生成無意義的內容或編造聽起來合理但不準確或過時的內容。
- 代碼範圍有限:Phi-3的大部分訓練數據基於Python,並使用常見包(如“typing, math, random, collections, datetime, itertools”)。如果模型生成使用其他包或其他語言腳本的Python腳本,強烈建議用戶手動驗證所有API使用情況。
💡 使用建議
- 分配問題:在沒有進一步評估和額外去偏技術的情況下,模型可能不適用於對法律地位、資源分配或生活機會(如住房、就業、信貸等)有重大影響的場景。
- 高風險場景:開發者應評估在高風險場景中使用模型的適用性,在這些場景中,不公平、不可靠或冒犯性的輸出可能代價極高或導致傷害。這包括在敏感或專業領域提供建議(如法律或健康建議),在應用層面應根據部署上下文實施額外的保障措施。
- 錯誤信息:模型可能產生不準確的信息。開發者應遵循透明度最佳實踐,並告知最終用戶他們正在與AI系統交互。在應用層面,開發者可以構建反饋機制和管道,將響應基於特定用例的上下文信息,即檢索增強生成(RAG)技術。
- 有害內容生成:開發者應根據上下文評估輸出,並使用適用於其用例的可用安全分類器或自定義解決方案。
- 濫用問題:可能存在其他形式的濫用,如欺詐、垃圾郵件或惡意軟件生產,開發者應確保其應用不違反適用的法律法規。
- 個人識別:具有視覺功能的模型可能有能力在圖像中唯一識別個人。安全後訓練會引導模型拒絕此類請求,但開發者應根據各自司法管轄區的要求,酌情考慮並實施額外的緩解措施或用戶同意流程(例如,在處理圖像輸入之前採取措施模糊面部)。








