模型概述
模型特點
模型能力
使用案例
🚀 Phi-3.5
Phi-3.5是一系列強大的模型,涵蓋了多種不同的版本,可滿足不同場景下的需求。它基於高質量的數據集進行訓練,在文本和視覺處理方面展現出卓越的性能。
🎉 Phi-3.5:[mini-instruct];[MoE-instruct] ;[vision-instruct]
✨ 主要特性
- 輕量級與先進架構:Phi-3-Vision-128K-Instruct 是一個輕量級的、最先進的開放多模態模型,基於包含合成數據和經過篩選的公開網站數據進行構建,專注於高質量、富含推理的文本和視覺數據。
- 長上下文支持:屬於 Phi-3 模型家族,多模態版本支持 128K 上下文長度(以標記為單位)。
- 嚴格優化:經過嚴格的增強過程,結合了監督微調(Supervised Fine-Tuning)和直接偏好優化(Direct Preference Optimization),以確保精確的指令遵循和強大的安全措施。
📚 詳細文檔
資源與技術文檔
模型版本對比
短上下文 | 長上下文 | |
---|---|---|
Mini | 4K [HF] ; [ONNX] ; [GGUF] | 128K [HF] ; [ONNX] |
Small | 8K [HF] ; [ONNX] | 128K [HF] ; [ONNX] |
Medium | 4K [HF] ; [ONNX] | 128K [HF] ; [ONNX] |
Vision | 128K [HF] ; [ONNX] |
預期用途
主要用例
該模型旨在廣泛用於英語的商業和研究。適用於具有視覺和文本輸入能力的通用人工智能系統和應用,特別是在以下場景中:
- 內存/計算受限的環境;
- 低延遲要求的場景;
- 通用圖像理解;
- 光學字符識別(OCR);
- 圖表和表格理解。
該模型旨在加速高效語言和多模態模型的研究,可作為生成式人工智能功能的構建塊。
用例考慮
我們的模型並非專門為所有下游用途而設計或評估。開發者在選擇用例時應考慮語言模型的常見侷限性,並在特定下游用例中使用之前,評估並減輕準確性、安全性和公平性方面的問題,特別是在高風險場景中。
開發者應瞭解並遵守與其用例相關的適用法律或法規(包括隱私、貿易合規法等)。
本模型卡片中的任何內容均不應被解釋為或視為對模型發佈所依據的許可證的限制或修改。
📦 安裝指南
Phi-3-Vision-128K-Instruct 已集成到 transformers
的開發版本(4.40.2)中。在通過 pip
發佈正式版本之前,請確保執行以下操作之一:
- 加載模型時,確保在
from_pretrained()
函數的參數中傳遞trust_remote_code=True
。 - 將本地的
transformers
更新到開發版本:pip uninstall -y transformers && pip install git+https://github.com/huggingface/transformers
。此命令是從源代碼克隆和安裝的替代方法。
可以使用以下命令驗證當前的 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.40.2
Phi-3-Vision-128K-Instruct 也可在 Azure AI Studio 中使用。
💻 使用示例
聊天格式
鑑於訓練數據的性質,Phi-3-Vision-128K-Instruct 模型最適合使用以下聊天格式的單圖像輸入提示。
可以使用以下通用模板將提示作為單圖像提供:
<|user|>\n<|image_1|>\n{prompt}<|end|>\n<|assistant|>\n
其中,模型在 <|assistant|>
之後生成文本。在多輪對話的情況下,提示可以按以下格式進行格式化:
<|user|>\n<|image_1|>\n{prompt_1}<|end|>\n<|assistant|>\n{response_1}<|end|>\n<|user|>\n{prompt_2}<|end|>\n<|assistant|>\n
示例推理代碼
以下代碼片段展示瞭如何在 GPU 上快速運行該模型:
from PIL import Image
import requests
from transformers import AutoModelForCausalLM
from transformers import AutoProcessor
model_id = "microsoft/Phi-3-vision-128k-instruct"
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="cuda", trust_remote_code=True, torch_dtype="auto", _attn_implementation='flash_attention_2') # use _attn_implementation='eager' to disable flash attention
processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
messages = [
{"role": "user", "content": "<|image_1|>\nWhat is shown in this image?"},
{"role": "assistant", "content": "The chart displays the percentage of respondents who agree with various statements about their preparedness for meetings. It shows five categories: 'Having clear and pre-defined goals for meetings', 'Knowing where to find the information I need for a meeting', 'Understanding my exact role and responsibilities when I'm invited', 'Having tools to manage admin tasks like note-taking or summarization', and 'Having more focus time to sufficiently prepare for meetings'. Each category has an associated bar indicating the level of agreement, measured on a scale from 0% to 100%."},
{"role": "user", "content": "Provide insightful questions to spark discussion."}
]
url = "https://assets-c4akfrf5b4d3f4b7.z01.azurefd.net/assets/2024/04/BMDataViz_661fb89f3845e.png"
image = Image.open(requests.get(url, stream=True).raw)
prompt = processor.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(prompt, [image], return_tensors="pt").to("cuda:0")
generation_args = {
"max_new_tokens": 500,
"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)
更多基本示例請參考 此處。
如何微調?
我們建議用戶參考 Phi-3 CookBook 視覺微調配方。
🔧 技術細節
負責任的人工智能考慮
與其他模型一樣,Phi 系列模型可能會以不公平、不可靠或冒犯性的方式運行。需要注意的一些限制行為包括:
- 服務質量:Phi 模型主要在英語文本上進行訓練。非英語語言的性能會較差。訓練數據中代表性較少的英語變體的性能可能比標準美式英語差。
- 傷害的呈現與刻板印象的延續:這些模型可能會過度或不足地呈現某些人群,抹去某些群體的代表性,或強化貶低性或負面的刻板印象。儘管進行了安全後訓練,但由於不同群體的代表性水平不同,或者訓練數據中反映現實世界模式和社會偏見的負面刻板印象示例普遍存在,這些限制可能仍然存在。
- 不適當或冒犯性內容:這些模型可能會產生其他類型的不適當或冒犯性內容,在沒有針對特定用例的額外緩解措施的情況下,可能不適合在敏感環境中部署。
- 信息可靠性:語言模型可能會生成無意義的內容或編造聽起來合理但不準確或過時的內容。
- 代碼範圍有限:Phi-3 的大部分訓練數據基於 Python,並使用常見的包,如 “typing, math, random, collections, datetime, itertools”。如果模型生成的 Python 腳本使用其他包或其他語言的腳本,我們強烈建議用戶手動驗證所有 API 的使用。
開發者應應用負責任的人工智能最佳實踐,並負責確保特定用例符合相關法律法規(如隱私、貿易等)。需要考慮的重要領域包括:
- 分配:在沒有進一步評估和額外去偏技術的情況下,模型可能不適用於對法律地位、資源分配或生活機會(如住房、就業、信貸等)有重大影響的場景。
- 高風險場景:開發者應評估在高風險場景中使用模型的適用性,在這些場景中,不公平、不可靠或冒犯性的輸出可能會造成極大的代價或導致傷害。這包括在準確性和可靠性至關重要的敏感或專家領域提供建議(如法律或健康建議)。應根據部署上下文在應用層面實施額外的保障措施。
- 錯誤信息:模型可能會產生不準確的信息。開發者應遵循透明度最佳實踐,並告知最終用戶他們正在與人工智能系統進行交互。在應用層面,開發者可以構建反饋機制和管道,將響應基於特定用例的上下文信息,這種技術稱為檢索增強生成(Retrieval Augmented Generation,RAG)。
- 有害內容的生成:開發者應根據上下文評估輸出,並使用適用於其用例的可用安全分類器或自定義解決方案。
- 濫用:可能存在其他形式的濫用,如欺詐、垃圾郵件或惡意軟件生產,開發者應確保其應用不違反適用的法律法規。
- 個人識別:具有視覺功能的模型可能有能力在圖像中唯一識別個人。安全後訓練會引導模型拒絕此類請求,但開發者應根據各自司法管轄區的要求,酌情考慮並實施額外的緩解措施或用戶同意流程(例如,在處理圖像輸入之前採取措施模糊面部)。
訓練
模型
- 架構:Phi-3-Vision-128K-Instruct 有 42 億個參數,包含圖像編碼器、連接器、投影儀和 Phi-3 Mini 語言模型。
- 輸入:文本和圖像。最適合使用聊天格式的提示。
- 上下文長度:128K 標記
- GPU:512 個 H100-80G
- 訓練時間:1.5 天
- 訓練數據:5000 億個視覺和文本標記
- 輸出:對輸入做出響應的生成文本
- 日期:我們的模型於 2024 年 2 月至 4 月之間進行訓練。
- 狀態:這是一個基於截止日期為 2024 年 3 月 15 日的離線文本數據集訓練的靜態模型。隨著我們對模型的改進,未來可能會發布調優模型的新版本。
- 發佈類型:開放權重發布
- 發佈日期:模型權重於 2024 年 5 月 21 日發佈。
數據集
我們的訓練數據包括多種來源,是以下數據的組合:
- 經過嚴格質量篩選的公開可用文檔、精選的高質量教育數據和代碼;
- 精選的高質量圖像 - 文本交織數據;
- 為教授數學、編碼、常識推理、世界常識(科學、日常活動、心智理論等)而新創建的合成 “教科書式” 數據,以及新創建的圖像數據,如圖表/表格/圖表/幻燈片;
- 涵蓋各種主題的高質量聊天格式監督數據,以反映人類在指令遵循、真實性、誠實性和有用性等不同方面的偏好。
數據收集過程涉及從公開可用文檔中獲取信息,並採取嚴謹的方法過濾掉不良文檔和圖像。為了保護隱私,我們仔細過濾了各種圖像和文本數據源,以從訓練數據中刪除或清理任何潛在的個人數據。
更多詳細信息可在 Phi-3 技術報告 中找到。
基準測試
為了瞭解其能力,我們使用內部基準測試平臺,在各種零樣本基準測試中,將 Phi-3-Vision-128K-Instruct 與一組模型進行了比較。
基準測試 | Phi-3 Vision-128K-In | LlaVA-1.6 Vicuna-7B | QWEN-VL Chat | Llama3-Llava-Next-8B | Claude-3 Haiku | Gemini 1.0 Pro V | GPT-4V-Turbo |
---|---|---|---|---|---|---|---|
MMMU | 40.4 | 34.2 | 39.0 | 36.4 | 40.7 | 42.0 | 55.5 |
MMBench | 80.5 | 76.3 | 75.8 | 79.4 | 62.4 | 80.0 | 86.1 |
ScienceQA | 90.8 | 70.6 | 67.2 | 73.7 | 72.0 | 79.7 | 75.7 |
MathVista | 44.5 | 31.5 | 29.4 | 34.8 | 33.2 | 35.0 | 47.5 |
InterGPS | 38.1 | 20.5 | 22.3 | 24.6 | 32.1 | 28.6 | 41.0 |
AI2D | 76.7 | 63.1 | 59.8 | 66.9 | 60.3 | 62.8 | 74.7 |
ChartQA | 81.4 | 55.0 | 50.9 | 65.8 | 59.3 | 58.0 | 62.3 |
TextVQA | 70.9 | 64.6 | 59.4 | 55.7 | 62.7 | 64.7 | 68.1 |
POPE | 85.8 | 87.2 | 82.6 | 87.0 | 74.4 | 84.2 | 83.7 |
📄 許可證
該模型根據 MIT 許可證 發佈。
商標
本項目可能包含項目、產品或服務的商標或標識。對微軟商標或標識的授權使用需遵循並必須遵守 微軟商標和品牌指南。在本項目的修改版本中使用微軟商標或標識不得造成混淆或暗示微軟的贊助。任何第三方商標或標識的使用需遵循這些第三方的政策。








