模型概述
模型特點
模型能力
使用案例
🚀 Phi-3.5 Mini-4K-Instruct模型
Phi-3.5 Mini-4K-Instruct是一款輕量級的開源模型,具有38億參數。它基於Phi-3數據集訓練,涵蓋合成數據和高質量公開網站數據,在常識、語言理解、數學、代碼、長上下文和邏輯推理等基準測試中表現出色,適用於內存/計算受限、低延遲場景以及強推理需求的通用AI系統和應用。
🚀 快速開始
Phi-3 Mini-4K-Instruct已集成在transformers
的4.41.2
版本中。可使用以下命令驗證當前transformers
版本:
pip list | grep transformers
所需依賴包示例
flash_attn==2.5.8
torch==2.3.1
accelerate==0.31.0
transformers==4.41.2
你也可以在Azure AI Studio中使用該模型。
示例推理代碼
以下代碼片段展示瞭如何在GPU上快速運行該模型:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3-mini-4k-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3-mini-4k-instruct")
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
{"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
{"role": "user", "content": "What about solving an 2x + 3 = 7 equation?"},
]
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
generation_args = {
"max_new_tokens": 500,
"return_full_text": False,
"temperature": 0.0,
"do_sample": False,
}
output = pipe(messages, **generation_args)
print(output[0]['generated_text'])
注意:如果你想使用快速注意力機制(flash attention),可以在調用AutoModelForCausalLM.from_pretrained()
時添加attn_implementation="flash_attention_2"
參數。
✨ 主要特性
- 輕量級高性能:僅38億參數,在多種基準測試中,與參數更多的模型表現相當。
- 多場景適用:適用於內存/計算受限環境、低延遲場景以及需要強推理能力(特別是數學和邏輯推理)的通用AI系統和應用。
- 持續優化:基於用戶反饋更新,在指令遵循、結構化輸出和推理能力上有顯著提升。
📦 安裝指南
Phi-3 Mini-4K-Instruct已集成在transformers
的4.41.2
版本中。你可以使用以下命令驗證當前transformers
版本:
pip list | grep transformers
依賴安裝
確保安裝以下依賴包:
flash_attn==2.5.8
torch==2.3.1
accelerate==0.31.0
transformers==4.41.2
💻 使用示例
基礎用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3-mini-4k-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3-mini-4k-instruct")
messages = [
{"role": "system", "content": "You are a helpful AI assistant."},
{"role": "user", "content": "Can you provide ways to eat combinations of bananas and dragonfruits?"},
{"role": "assistant", "content": "Sure! Here are some ways to eat bananas and dragonfruits together: 1. Banana and dragonfruit smoothie: Blend bananas and dragonfruits together with some milk and honey. 2. Banana and dragonfruit salad: Mix sliced bananas and dragonfruits together with some lemon juice and honey."},
{"role": "user", "content": "What about solving an 2x + 3 = 7 equation?"},
]
pipe = pipeline(
"text-generation",
model=model,
tokenizer=tokenizer,
)
generation_args = {
"max_new_tokens": 500,
"return_full_text": False,
"temperature": 0.0,
"do_sample": False,
}
output = pipe(messages, **generation_args)
print(output[0]['generated_text'])
高級用法
如果你想使用快速注意力機制(flash attention),可以在調用AutoModelForCausalLM.from_pretrained()
時添加attn_implementation="flash_attention_2"
參數:
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3-mini-4k-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
attn_implementation="flash_attention_2"
)
📚 詳細文檔
預期用途
主要用例
該模型主要用於英文的商業和研究。適用於以下通用AI系統和應用場景:
- 內存/計算資源受限的環境;
- 對延遲有要求的場景;
- 需要強推理能力(特別是數學和邏輯推理)的場景。
該模型旨在加速語言和多模態模型的研究,可作為生成式AI功能的構建模塊。
非預期用例
該模型並非針對所有下游用途進行設計和評估。開發者在選擇用例時,應考慮語言模型的常見侷限性,並在特定下游用例中使用之前,評估和緩解準確性、安全性和公平性問題,特別是在高風險場景中。
開發者應遵守與用例相關的適用法律法規(包括隱私、貿易合規等法律)。
發佈說明
本次更新基於有價值的客戶反饋,在原始指令微調的Phi-3-mini版本上進行改進。模型使用了額外的訓練後數據,在指令遵循和結構化輸出方面有顯著提升。同時,還提高了多輪對話質量,明確支持<|system|>
標籤,並顯著增強了推理能力。
以下表格展示了新版本在公開和內部基準數據集上,在指令遵循、結構化輸出和推理方面的改進:
基準測試 | 原始版本 | 2024年6月更新版本 |
---|---|---|
Instruction Extra Hard | 5.7 | 6.0 |
Instruction Hard | 4.9 | 5.1 |
Instructions Challenge | 24.6 | 42.3 |
JSON Structure Output | 11.5 | 52.3 |
XML Structure Output | 14.4 | 49.8 |
GPQA | 23.7 | 30.6 |
MMLU | 68.8 | 70.9 |
平均 | 21.9 | 36.7 |
負責任的AI考慮
與其他語言模型一樣,Phi系列模型可能存在不公平、不可靠或冒犯性的行為。需要注意的一些侷限性包括:
- 服務質量:Phi模型主要基於英文文本訓練,非英文語言的性能會較差。訓練數據中代表性較少的英語變體,其性能可能不如標準美式英語。
- 傷害表示與刻板印象延續:這些模型可能過度或不足地表示某些人群,抹去某些群體的代表性,或強化貶低性或負面的刻板印象。儘管進行了安全訓練後處理,但由於不同群體的表示水平不同,或訓練數據中反映現實世界模式和社會偏見的負面刻板印象示例普遍存在,這些侷限性可能仍然存在。
- 不適當或冒犯性內容:這些模型可能產生其他類型的不適當或冒犯性內容,在沒有針對特定用例進行額外緩解措施的情況下,可能不適合在敏感環境中部署。
- 信息可靠性:語言模型可能生成無意義的內容,或編造聽起來合理但不準確或過時的內容。
- 代碼範圍有限:Phi-3的大部分訓練數據基於Python,並使用常見的包,如"typing, math, random, collections, datetime, itertools"。如果模型生成的Python腳本使用其他包或其他語言的腳本,強烈建議用戶手動驗證所有API的使用。
開發者應應用負責任的AI最佳實踐,並確保特定用例符合相關法律法規(如隱私、貿易等法律)。需要考慮的重要方面包括:
- 分配:在沒有進一步評估和額外去偏技術的情況下,模型可能不適用於對法律地位、資源分配或生活機會有重大影響的場景(如住房、就業、信貸等)。
- 高風險場景:開發者應評估在高風險場景中使用模型的適用性,在這些場景中,不公平、不可靠或冒犯性的輸出可能代價高昂或導致傷害。這包括在敏感或專業領域提供建議,其中準確性和可靠性至關重要(如法律或健康建議)。應根據部署環境在應用層面實施額外的保障措施。
- 錯誤信息:模型可能產生不準確的信息。開發者應遵循透明度最佳實踐,並告知最終用戶他們正在與AI系統交互。在應用層面,開發者可以構建反饋機制和管道,將響應基於特定用例的上下文信息,即檢索增強生成(RAG)技術。
- 有害內容生成:開發者應根據上下文評估輸出,並使用適用於其用例的可用安全分類器或自定義解決方案。
- 濫用:可能存在其他形式的濫用,如欺詐、垃圾郵件或惡意軟件生產,開發者應確保其應用不違反適用的法律法規。
跨平臺支持
ONNX runtime現在支持跨平臺和硬件運行Phi-3 mini模型。
優化後的phi-3模型也以ONNX格式發佈,可在CPU和GPU上跨設備運行,包括服務器平臺、Windows、Linux和Mac桌面以及移動CPU,具有適合每個目標的精度。Windows桌面GPU(AMD、Intel和NVIDIA)支持DirectML GPU加速。
以下是添加的一些優化配置:
- 用於int4 DML的ONNX模型:通過AWQ量化為int4
- 用於fp16 CUDA的ONNX模型
- 用於int4 CUDA的ONNX模型:通過RTN量化為int4
- 用於int4 CPU和移動設備的ONNX模型:通過R量化為int4
軟件依賴
硬件要求
默認情況下,Phi-3 Mini-4K-Instruct模型使用快速注意力機制(flash attention),需要特定類型的GPU硬件才能運行。已在以下GPU類型上進行測試:
- NVIDIA A100
- NVIDIA A6000
- NVIDIA H100
如果你想在以下設備上運行模型:
- NVIDIA V100或更早一代的GPU:調用
AutoModelForCausalLM.from_pretrained()
時添加attn_implementation="eager"
參數。 - CPU:使用4K的GGUF量化模型。
- 在GPU、CPU和移動設備上進行優化推理:使用4K的ONNX模型。
🔧 技術細節
模型
- 架構:Phi-3 Mini-4K-Instruct是一個具有38億參數的密集解碼器Transformer模型。該模型通過監督微調(SFT)和直接偏好優化(DPO)進行微調,以確保與人類偏好和安全準則保持一致。
- 輸入:文本,最適合使用聊天格式的提示。
- 上下文長度:4K個標記。
- GPU:512個H100-80G。
- 訓練時間:10天。
- 訓練數據:4.9萬億個標記。
- 輸出:對輸入的生成文本響應。
- 日期:模型於2024年5月至6月期間訓練。
- 狀態:這是一個基於截止到2023年10月的離線數據集訓練的靜態模型。隨著模型的改進,可能會發布微調模型的未來版本。
- 發佈日期:2024年6月。
數據集
訓練數據包括多種來源,總計4.9萬億個標記,由以下部分組成:
- 經過嚴格質量過濾的公開文檔、精選的高質量教育數據和代碼;
- 為教授數學、編碼、常識推理、世界常識(科學、日常活動、心智理論等)而新創建的合成“教科書式”數據;
- 涵蓋各種主題的高質量聊天格式監督數據,以反映人類在指令遵循、真實性、誠實性和幫助性等不同方面的偏好。
我們專注於可能提高模型推理能力的數據質量,並過濾公開文檔,以包含適當水平的知識。例如,某一天英超聯賽的比賽結果可能是前沿模型的良好訓練數據,但對於小尺寸模型,我們需要去除此類信息,以便為推理留出更多模型容量。有關數據的更多詳細信息,請參閱Phi-3技術報告。
微調
此處提供了一個使用TRL和Accelerate模塊進行多GPU監督微調(SFT)的基本示例。
基準測試
我們報告了Phi-3-Mini-4K-Instruct在標準開源基準測試中,以完成格式衡量的模型推理能力(包括常識推理和邏輯推理)的結果。並與Mistral-7b-v0.1、Mixtral-8x7b、Gemma 7B、Llama-3-8B-Instruct和GPT3.5-Turbo-1106進行了比較。
所有報告的數字都是使用完全相同的管道生成的,以確保數字具有可比性。由於評估中的細微差異,這些數字可能與其他發佈的數字不同。
按照現在的標準,我們使用少樣本提示在溫度為0的情況下評估模型。提示和樣本數量是Microsoft內部評估語言模型工具的一部分,特別是我們沒有對Phi-3的管道進行優化。具體來說,我們不更改提示、選擇不同的少樣本示例、更改提示格式或對模型進行任何其他形式的優化。
每個基準測試的少樣本示例數量如下表所示:
類別 | 基準測試 | Phi-3-Mini-4K-Ins | Gemma-7B | Mistral-7b | Mixtral-8x7b | Llama-3-8B-Ins | GPT3.5-Turbo-1106 |
---|---|---|---|---|---|---|---|
流行聚合基準測試 | AGI Eval 5-shot |
39.0 | 42.1 | 35.1 | 45.2 | 42 | 48.4 |
MMLU 5-shot |
70.9 | 63.6 | 61.7 | 70.5 | 66.5 | 71.4 | |
BigBench Hard CoT 3-shot |
73.5 | 59.6 | 57.3 | 69.7 | 51.5 | 68.3 | |
語言理解 | ANLI 7-shot |
53.6 | 48.7 | 47.1 | 55.2 | 57.3 | 58.1 |
HellaSwag 5-shot |
75.3 | 49.8 | 58.5 | 70.4 | 71.1 | 78.8 | |
推理 | ARC Challenge 10-shot |
86.3 | 78.3 | 78.6 | 87.3 | 82.8 | 87.4 |
BoolQ 0-shot |
78.1 | 66 | 72.2 | 76.6 | 80.9 | 79.1 | |
MedQA 2-shot |
56.5 | 49.6 | 50 | 62.2 | 60.5 | 63.4 | |
OpenBookQA 10-shot |
82.2 | 78.6 | 79.8 | 85.8 | 82.6 | 86 | |
PIQA 5-shot |
83.5 | 78.1 | 77.7 | 86 | 75.7 | 86.6 | |
GPQA 0-shot |
30.6 | 2.9 | 15 | 6.9 | 32.4 | 30.8 | |
Social IQA 5-shot |
77.6 | 65.5 | 74.6 | 75.9 | 73.9 | 68.3 | |
TruthfulQA (MC2) 10-shot |
64.7 | 52.1 | 53 | 60.1 | 63.2 | 67.7 | |
WinoGrande 5-shot |
71.6 | 55.6 | 54.2 | 62 | 65 | 68.8 | |
事實知識 | TriviaQA 5-shot |
61.4 | 72.3 | 75.2 | 82.2 | 67.7 | 85.8 |
數學 | GSM8K CoT 8-shot |
85.7 | 59.8 | 46.4 | 64.7 | 77.4 | 78.1 |
代碼生成 | HumanEval 0-shot |
57.3 | 34.1 | 28.0 | 37.8 | 60.4 | 62.2 |
MBPP 3-shot |
69.8 | 51.5 | 50.8 | 60.2 | 67.7 | 77.8 | |
平均 | 67.6 | 56.0 | 56.4 | 64.4 | 65.5 | 70.4 |
我們在下表中更詳細地查看了100個公開基準數據集的不同類別:
類別 | Phi-3-Mini-4K-Instruct | Gemma-7B | Mistral-7B | Mixtral 8x7B | Llama-3-8B-Instruct | GPT-3.5-Turbo |
---|---|---|---|---|---|---|
流行聚合基準測試 | 61.1 | 59.4 | 56.5 | 66.2 | 59.9 | 67.0 |
推理 | 70.8 | 60.3 | 62.8 | 68.1 | 69.6 | 71.8 |
語言理解 | 60.5 | 57.6 | 52.5 | 66.1 | 63.2 | 67.7 |
代碼生成 | 60.7 | 45.6 | 42.9 | 52.7 | 56.4 | 70.4 |
數學 | 50.6 | 35.8 | 25.4 | 40.3 | 41.1 | 52.8 |
事實知識 | 38.4 | 46.7 | 49.8 | 58.6 | 43.1 | 63.4 |
多語言 | 56.7 | 66.5 | 57.4 | 66.7 | 66.6 | 71.0 |
魯棒性 | 61.1 | 38.4 | 40.6 | 51.0 | 64.5 | 69.3 |
總體而言,僅38億參數的模型在語言理解和推理能力方面達到了與更大模型相似的水平。然而,由於模型大小的限制,在某些任務上仍然存在侷限性。例如,該模型在TriviaQA上的表現較低,因為它沒有足夠的容量來存儲過多的世界知識。我們相信可以通過為Phi-3-Mini添加搜索引擎來解決這一弱點。
📄 許可證
該模型遵循MIT許可證。
商標說明
本項目可能包含項目、產品或服務的商標或徽標。經授權使用Microsoft商標或徽標需遵循Microsoft商標和品牌指南。在本項目的修改版本中使用Microsoft商標或徽標不得造成混淆或暗示Microsoft的贊助。任何第三方商標或徽標的使用需遵循這些第三方的政策。



