Model Overview
Model Features
Model Capabilities
Use Cases
🚀 Phi-3.5小模型128K指令模型
Phi-3-Small-128K-Instruct是一款參數為70億的輕量級、最先進的開源模型。它使用Phi-3數據集進行訓練,該數據集包含合成數據和經過篩選的公開網站數據,注重高質量和強推理能力。此模型屬於Phi-3家族的小版本,有8K和128K兩種上下文長度(以標記為單位)的變體。
🎉 Phi-3.5相關模型鏈接
✨ 主要特性
- 輕量級設計:70億參數,適用於內存和計算資源受限的環境。
- 強大推理能力:在代碼、數學和邏輯推理方面表現出色。
- 多語言支持:支持多種語言,不過在英語上表現最佳。
- 長上下文處理:支持高達128K的上下文長度。
📦 安裝指南
Phi-3-Small-128K-Instruct已集成到transformers
的開發版本(4.40.2)中。在通過pip
發佈官方版本之前,請確保執行以下操作之一:
- 安裝
tiktoken (0.6.0)
和triton (2.3.0)
。 - 加載模型時,確保在
from_pretrained()
函數中傳入trust_remote_code=True
參數。 - 將本地的
transformers
更新到開發版本:
pip uninstall -y transformers && pip install git+https://github.com/huggingface/transformers
可以使用以下命令驗證當前transformers
的版本:
pip list | grep transformers
💻 使用示例
基礎用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model_id = "microsoft/Phi-3-small-128k-instruct"
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype="auto",
trust_remote_code=True,
)
assert torch.cuda.is_available(), "This model needs a GPU to run ..."
device = torch.cuda.current_device()
model = model.to(device)
tokenizer = AutoTokenizer.from_pretrained(model_id)
messages = [
{"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,
device=device
)
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'])
注意事項
⚠️ 重要提示
某些應用程序或框架可能不會在對話開始時包含BOS標記 (
<|endoftext|>
),請確保包含該標記,因為這會提供更可靠的結果。
聊天格式
鑑於訓練數據的性質,Phi-3-Small-128K-Instruct模型最適合使用以下聊天格式的提示。可以按照以下通用模板以問題的形式提供提示:
<|endoftext|><|user|>\nQuestion <|end|>\n<|assistant|>
例如:
<|endoftext|><|user|>
How to explain Internet for a medieval knight?<|end|>
<|assistant|>
在少樣本提示的情況下,提示可以格式化為以下形式:
<|endoftext|><|user|>
I am going to Paris, what should I see?<|end|>
<|assistant|>
Paris, the capital of France, is known for its stunning architecture, art museums, historical landmarks, and romantic atmosphere. Here are some of the top attractions to see in Paris:\n\n1. The Eiffel Tower: The iconic Eiffel Tower is one of the most recognizable landmarks in the world and offers breathtaking views of the city.\n2. The Louvre Museum: The Louvre is one of the world's largest and most famous museums, housing an impressive collection of art and artifacts, including the Mona Lisa.\n3. Notre-Dame Cathedral: This beautiful cathedral is one of the most famous landmarks in Paris and is known for its Gothic architecture and stunning stained glass windows.\n\nThese are just a few of the many attractions that Paris has to offer. With so much to see and do, it's no wonder that Paris is one of the most popular tourist destinations in the world."<|end|>
<|user|>
What is so great about #1?<|end|>
<|assistant|>
📚 詳細文檔
預期用途
主要用例
該模型旨在廣泛用於英語的商業和研究。適用於以下通用人工智能系統和應用:
- 內存/計算資源受限的環境。
- 對延遲有要求的場景。
- 需要強大推理能力(特別是代碼、數學和邏輯推理)的場景。
使用案例考慮
我們的模型並非專門為所有下游用途而設計或評估。開發者在選擇使用案例時應考慮語言模型的常見侷限性,並在特定下游用例中使用之前評估和緩解準確性、安全性和公平性問題,特別是在高風險場景中。開發者應瞭解並遵守與其用例相關的適用法律或法規(包括隱私、貿易合規法等)。
負責任的AI考慮
與其他語言模型一樣,Phi系列模型可能會出現不公平、不可靠或冒犯性的行為。需要注意的一些侷限性包括:
- 服務質量:Phi模型主要在英語文本上進行訓練,非英語語言的性能會較差。訓練數據中代表性較少的英語變體的性能可能比標準美式英語差。
- 傷害表示和刻板印象延續:這些模型可能會過度或不足地表示某些人群,抹去某些群體的代表性,或強化貶低性或負面的刻板印象。儘管進行了安全後訓練,但由於不同群體的表示水平不同或訓練數據中反映現實世界模式和社會偏見的負面刻板印象示例普遍存在,這些侷限性可能仍然存在。
- 不適當或冒犯性內容:這些模型可能會產生其他類型的不適當或冒犯性內容,在沒有針對特定用例進行額外緩解措施的情況下,可能不適合在敏感環境中部署。
- 信息可靠性:語言模型可能會生成無意義的內容或編造聽起來合理但不準確或過時的內容。
- 代碼範圍有限:Phi-3的大部分訓練數據基於Python,並使用常見的包,如“typing, math, random, collections, datetime, itertools”。如果模型生成使用其他包或其他語言的Python腳本,我們強烈建議用戶手動驗證所有API的使用。
開發者應應用負責任的AI最佳實踐,並負責確保特定用例符合相關法律和法規。需要考慮的重要領域包括:
- 分配:在沒有進一步評估和額外去偏技術的情況下,模型可能不適用於對法律地位、資源分配或生活機會有重大影響的場景(如住房、就業、信貸等)。
- 高風險場景:開發者應評估在高風險場景中使用模型的適用性,在這些場景中,不公平、不可靠或冒犯性的輸出可能會造成極大的代價或傷害。這包括在準確性和可靠性至關重要的敏感或專業領域提供建議(如法律或健康建議)。應根據部署上下文在應用層面實施額外的保障措施。
- 錯誤信息:模型可能會產生不準確的信息。開發者應遵循透明度最佳實踐,並告知最終用戶他們正在與AI系統進行交互。在應用層面,開發者可以構建反饋機制和管道,將響應基於特定用例的上下文信息,這種技術稱為檢索增強生成(RAG)。
- 有害內容生成:開發者應根據上下文評估輸出,並使用適用於其用例的可用安全分類器或自定義解決方案。
- 濫用:可能存在其他形式的濫用,如欺詐、垃圾郵件或惡意軟件生產,開發者應確保其應用不違反適用的法律和法規。
訓練
模型
- 架構:Phi-3 Small-128K-Instruct有70億參數,是一個密集的僅解碼器Transformer模型,具有交替的密集和塊稀疏注意力。該模型通過監督微調(SFT)和直接偏好優化(DPO)進行微調,以確保與人類偏好和安全準則保持一致。
- 輸入:文本。最適合使用聊天格式的提示。
- 上下文長度:128K標記
- GPU:1024個H100 - 80G
- 訓練時間:18天
- 訓練數據:4.8T標記
- 輸出:對輸入的生成文本響應
- 日期:我們的模型在2024年2月至4月之間進行訓練。
- 狀態:這是一個基於截止日期為2023年10月的離線數據集訓練的靜態模型。隨著我們對模型的改進,未來可能會發布調優模型的新版本。
- 發佈日期:模型權重於2024年5月21日發佈。
數據集
我們的訓練數據包括各種來源,總計4.8萬億標記(包括10%的多語言數據),是以下數據的組合:
- 經過嚴格質量篩選的公開可用文檔、選定的高質量教育數據和代碼。
- 為教授數學、編碼、常識推理、世界常識(科學、日常活動、心智理論等)而新創建的合成“教科書式”數據。
- 涵蓋各種主題的高質量聊天格式監督數據,以反映人類在指令遵循、真實性、誠實性和有用性等不同方面的偏好。
我們專注於可能提高模型推理能力的數據質量,並過濾公開可用文檔以包含正確的知識水平。例如,某一天英超聯賽的比賽結果可能是前沿模型的良好訓練數據,但對於小尺寸模型,我們需要去除此類信息,以便為推理留出更多的模型容量。有關數據的更多詳細信息,請參閱Phi-3技術報告。
基準測試
我們報告了Phi-3-Small-128K-Instruct在標準開源基準測試中的結果,這些測試衡量了模型的推理能力(包括常識推理和邏輯推理)。我們將其與Mixtral-8x7b、Gemini-Pro、Gemma 7B、Llama-3-8B-Instruct、GPT-3.5-Turbo-1106和GPT-4-Turbo-1106進行了比較。
所有報告的數字都是使用完全相同的管道生成的,以確保數字具有可比性。由於評估中的細微差異,這些數字可能與其他發佈的數字不同。
按照慣例,我們使用少樣本提示在溫度為0的情況下評估模型。提示和少樣本示例的數量是Microsoft內部評估語言模型工具的一部分,特別是我們沒有對Phi-3的管道進行任何優化。具體來說,我們沒有更改提示、選擇不同的少樣本示例、更改提示格式或對模型進行任何其他形式的優化。
每個基準測試的少樣本示例數量如下表所示:
基準測試 | Phi-3-Small-128K-Instruct 7b |
Gemma 7B |
Mixtral 8x7B |
Llama-3-Instruct 8b |
GPT-3.5-Turbo version 1106 |
Gemini Pro |
GPT-4-Turbo version 1106 (Chat) |
---|---|---|---|---|---|---|---|
AGI Eval 5-shot |
43.9 | 42.1 | 45.2 | 42.0 | 48.4 | 49.0 | 59.6 |
MMLU 5-shot |
75.5 | 63.6 | 70.5 | 66.5 | 71.4 | 66.7 | 84.0 |
BigBench Hard 3-shot |
77.6 | 59.6 | 69.7 | 51.5 | 68.3 | 75.6 | 87.7 |
ANLI 7-shot |
55.8 | 48.7 | 55.2 | 57.3 | 58.1 | 64.2 | 71.7 |
HellaSwag 5-shot |
79.6 | 49.8 | 70.4 | 71.1 | 78.8 | 76.2 | 88.3 |
ARC Challenge 10-shot |
90.8 | 78.3 | 87.3 | 82.8 | 87.4 | 88.3 | 95.6 |
ARC Easy 10-shot |
97.3 | 91.4 | 95.6 | 93.4 | 96.3 | 96.1 | 98.8 |
BoolQ 2-shot |
83.7 | 66.0 | 76.6 | 80.9 | 79.1 | 86.4 | 91.3 |
CommonsenseQA 10-shot |
80.8 | 76.2 | 78.1 | 79.0 | 79.6 | 81.8 | 86.7 |
MedQA 2-shot |
46.3 | 49.6 | 62.2 | 60.5 | 63.4 | 58.2 | 83.7 |
OpenBookQA 10-shot |
87.8 | 78.6 | 85.8 | 82.6 | 86.0 | 86.4 | 93.4 |
PIQA 5-shot |
88.1 | 78.1 | 86.0 | 75.7 | 86.6 | 86.2 | 90.1 |
Social IQA 5-shot |
78.7 | 65.5 | 75.9 | 73.9 | 68.3 | 75.4 | 81.7 |
TruthfulQA (MC2) 10-shot |
69.6 | 52.1 | 60.1 | 63.2 | 67.7 | 72.6 | 85.2 |
WinoGrande 5-shot |
80.1 | 55.6 | 62.0 | 65.0 | 68.8 | 72.2 | 86.7 |
TriviaQA 5-shot |
66.0 | 72.3 | 82.2 | 67.7 | 85.8 | 80.2 | 73.3 |
GSM8K Chain of Thought 8-shot |
87.3 | 59.8 | 64.7 | 77.4 | 78.1 | 80.4 | 94.2 |
HumanEval 0-shot |
59.1 | 34.1 | 37.8 | 60.4 | 62.2 | 64.4 | 79.9 |
MBPP 3-shot |
70.3 | 51.5 | 60.2 | 67.7 | 77.8 | 73.2 | 86.7 |
平均 | 74.6 | 61.8 | 69.8 | 69.4 | 74.3 | 75.4 | 85.2 |
我們在下表中更詳細地查看了80個公共基準測試數據集的不同類別:
基準測試 | Phi-3-Small-128K-Instruct 7b |
Gemma 7B |
Mixtral 8x7B |
Llama-3-Instruct 8b |
GPT-3.5-Turbo version 1106 |
Gemini Pro |
GPT-4-Turbo version 1106 (Chat) |
---|---|---|---|---|---|---|---|
流行聚合基準測試 | 70.6 | 59.4 | 66.2 | 59.9 | 67.0 | 67.5 | 80.5 |
推理 | 80.3 | 69.1 | 77.0 | 75.7 | 78.3 | 80.4 | 89.3 |
語言理解 | 67.4 | 58.4 | 64.9 | 65.4 | 70.4 | 75.3 | 81.6 |
代碼生成 | 60.0 | 45.6 | 52.7 | 56.4 | 70.4 | 66.7 | 76.1 |
數學 | 48.1 | 35.8 | 40.3 | 41.1 | 52.8 | 50.9 | 67.1 |
事實知識 | 41.7 | 46.7 | 58.6 | 43.1 | 63.4 | 54.6 | 45.9 |
多語言 | 62.6 | 63.2 | 63.4 | 65.0 | 69.1 | 76.5 | 82.0 |
魯棒性 | 68.7 | 38.4 | 51.0 | 64.5 | 69.3 | 69.7 | 84.6 |
🔧 技術細節
軟件
硬件
默認情況下,Phi-3-Small模型使用Flash Attention 2和Triton塊稀疏注意力,這需要特定類型的GPU硬件才能運行。我們在以下GPU類型上進行了測試:
- NVIDIA A100
- NVIDIA A6000
- NVIDIA H100
如果要在以下設備上運行模型:
- 在GPU、CPU和移動設備上進行優化推理:使用ONNX模型。
跨平臺支持
ONNX運行時生態系統現在支持Phi3小模型跨平臺和硬件運行。優化後的phi-3模型也以ONNX格式發佈,可在CPU和GPU上跨設備運行,包括服務器平臺、Windows、Linux和Mac桌面以及移動CPU,具有適合每個目標的精度。Windows桌面GPU(AMD、Intel和NVIDIA)支持DirectML GPU加速。
除了DML,ONNX運行時還為Phi3 Small提供跨CPU、GPU和移動設備的跨平臺支持。以下是我們添加的一些優化配置:
- 適用於int4 DML的ONNX模型:通過AWQ量化為int4。
- 適用於fp16 CUDA的ONNX模型。
- 適用於int4 CUDA的ONNX模型:通過RTN量化為int4。
- 適用於int4 CPU和移動設備的ONNX模型:通過RTN量化為int4。
📄 許可證
該模型根據MIT許可證發佈。
商標
本項目可能包含項目、產品或服務的商標或徽標。對Microsoft商標或徽標的授權使用需遵循Microsoft商標和品牌指南。在本項目的修改版本中使用Microsoft商標或徽標不得造成混淆或暗示Microsoft的贊助。任何第三方商標或徽標的使用均需遵循這些第三方的政策。



