模型概述
模型特點
模型能力
使用案例
🚀 Phi-3.5-mini-instruct項目
Phi-3.5-mini-instruct是一款輕量級、先進的開源模型,基於Phi-3使用的數據集構建,專注於高質量、富含推理的數據。它屬於Phi-3模型家族,支持128K令牌上下文長度,經過嚴格的增強過程,確保精確遵循指令和強大的安全措施。
🚀 快速開始
本倉庫是對 https://huggingface.co/microsoft/Phi-3.5-mini-instruct 的復刻,用於修復 'DynamicCache' object has no attribute 'get_max_length'
問題。
相關鏈接
✨ 主要特性
模型概述
Phi-3.5-mini是基於Phi-3使用的數據集構建的輕量級、最先進的開放模型,數據集包括合成數據和經過篩選的公開網站數據,重點關注高質量、富含推理的數據。該模型屬於Phi-3模型家族,支持128K令牌上下文長度。模型經過了嚴格的增強過程,包括監督微調、近端策略優化和直接偏好優化,以確保精確遵循指令和強大的安全措施。
多語言能力
在多語言MMLU、MEGA和多語言MMLU-pro數據集上,Phi-3.5 Mini展現出了出色的多語言能力。即使只有3.8B的有效參數,該模型在多語言任務上也能與其他擁有更多有效參數的模型競爭。
長上下文處理能力
Phi-3.5-mini支持128K的上下文長度,能夠處理包括長文檔/會議摘要、長文檔問答、長文檔信息檢索等在內的多個長上下文任務。與僅支持8K上下文長度的Gemma-2系列相比,Phi-3.5-mini明顯更優,並且能與其他更大的開放權重模型(如Llama-3.1-8B-instruct、Mistral-7B-instruct-v0.3和Mistral-Nemo-12B-instruct-2407)競爭。
📦 安裝指南
環境要求
Phi-3系列已集成在 transformers
的 4.43.0
版本中。可以使用以下命令驗證當前 transformers
版本:
pip list | grep transformers
所需包示例
flash_attn==2.5.8
torch==2.3.1
accelerate==0.31.0
transformers==4.43.0
Phi-3.5-mini-instruct也可在 Azure AI Studio 中使用。
💻 使用示例
基礎用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
torch.random.manual_seed(0)
model = AutoModelForCausalLM.from_pretrained(
"microsoft/Phi-3.5-mini-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained("microsoft/Phi-3.5-mini-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'])
注意:如果要使用閃存注意力機制,請在調用 AutoModelForCausalLM.from_pretrained()
時添加參數 attn_implementation="flash_attention_2"
。
輸入格式
鑑於訓練數據的性質,Phi-3.5-mini-instruct模型最適合使用以下聊天格式的提示:
<|system|>
You are a helpful assistant.<|end|>
<|user|>
How to explain Internet for a medieval knight?<|end|>
<|assistant|>
📚 詳細文檔
預期用途
主要用例
該模型旨在用於多種語言的商業和研究用途。適用於通用人工智能系統和應用,特別是在以下場景中:
- 內存/計算資源受限的環境。
- 對延遲有要求的場景。
- 需要強大推理能力的場景(特別是代碼、數學和邏輯方面)。
使用案例考慮因素
我們的模型並非專門為所有下游用途設計或評估。開發者在選擇用例時應考慮語言模型的常見侷限性,並在特定下游用例中使用之前,評估和緩解準確性、安全性和公平性方面的問題,特別是在高風險場景中。開發者應瞭解並遵守與其用例相關的適用法律或法規(包括隱私、貿易合規法等)。
發佈說明
這是基於用戶寶貴反饋對2024年6月發佈的指令微調版Phi-3 Mini的更新。該模型使用了額外的訓練後數據,在多語言、多輪對話質量和推理能力方面取得了顯著提升。我們相信大多數用例將受益於此次發佈,但鼓勵用戶在其特定的人工智能應用中進行測試。我們感謝社區對Phi-3模型家族的熱情采用,並繼續歡迎所有反饋。
多語言能力
多語言基準測試結果
基準測試 | Phi-3.5 Mini-Ins | Phi-3.0-Mini-128k-Instruct (June2024) | Mistral-7B-Instruct-v0.3 | Mistral-Nemo-12B-Ins-2407 | Llama-3.1-8B-Ins | Gemma-2-9B-Ins | Gemini 1.5 Flash | GPT-4o-mini-2024-07-18 (Chat) |
---|---|---|---|---|---|---|---|---|
多語言MMLU | 55.4 | 51.08 | 47.4 | 58.9 | 56.2 | 63.8 | 77.2 | 72.9 |
多語言MMLU-Pro | 30.9 | 30.21 | 15.0 | 34.0 | 21.4 | 43.0 | 57.9 | 53.2 |
MGSM | 47.9 | 41.56 | 31.8 | 63.3 | 56.7 | 75.1 | 75.8 | 81.7 |
MEGA MLQA | 61.7 | 55.5 | 43.9 | 61.2 | 45.2 | 54.4 | 61.6 | 70.0 |
MEGA TyDi QA | 62.2 | 55.9 | 54.0 | 63.7 | 54.5 | 65.6 | 63.6 | 81.8 |
MEGA UDPOS | 46.5 | 48.1 | 57.2 | 58.2 | 54.1 | 56.6 | 62.4 | 66.0 |
MEGA XCOPA | 63.1 | 62.4 | 58.8 | 10.8 | 21.1 | 31.2 | 95.0 | 90.3 |
MEGA XStoryCloze | 73.5 | 73.6 | 75.5 | 92.3 | 71.0 | 87.0 | 20.7 | 96.6 |
平均 | 55.2 | 52.3 | 47.9 | 55.3 | 47.5 | 59.6 | 64.3 | 76.6 |
部分支持語言的多語言MMLU分數
基準測試 | Phi-3.5 Mini-Ins | Phi-3.0-Mini-128k-Instruct (June2024) | Mistral-7B-Instruct-v0.3 | Mistral-Nemo-12B-Ins-2407 | Llama-3.1-8B-Ins | Gemma-2-9B-Ins | Gemini 1.5 Flash | GPT-4o-mini-2024-07-18 (Chat) |
---|---|---|---|---|---|---|---|---|
阿拉伯語 | 44.2 | 35.4 | 33.7 | 45.3 | 49.1 | 56.3 | 73.6 | 67.1 |
中文 | 52.6 | 46.9 | 45.9 | 58.2 | 54.4 | 62.7 | 66.7 | 70.8 |
荷蘭語 | 57.7 | 48.0 | 51.3 | 60.1 | 55.9 | 66.7 | 80.6 | 74.2 |
法語 | 61.1 | 61.7 | 53.0 | 63.8 | 62.8 | 67.0 | 82.9 | 75.6 |
德語 | 62.4 | 61.3 | 50.1 | 64.5 | 59.9 | 65.7 | 79.5 | 74.3 |
意大利語 | 62.8 | 63.1 | 52.5 | 64.1 | 55.9 | 65.7 | 82.6 | 75.9 |
俄語 | 50.4 | 45.3 | 48.9 | 59.0 | 57.4 | 63.2 | 78.7 | 72.6 |
西班牙語 | 62.6 | 61.3 | 53.9 | 64.3 | 62.6 | 66.0 | 80.0 | 75.5 |
烏克蘭語 | 45.2 | 36.7 | 46.9 | 56.6 | 52.9 | 62.0 | 77.4 | 72.6 |
長上下文處理能力
長上下文基準測試結果
基準測試 | Phi-3.5-mini-instruct | Llama-3.1-8B-instruct | Mistral-7B-instruct-v0.3 | Mistral-Nemo-12B-instruct-2407 | Gemini-1.5-Flash | GPT-4o-mini-2024-07-18 (Chat) |
---|---|---|---|---|---|---|
GovReport | 25.9 | 25.1 | 26.0 | 25.6 | 27.8 | 24.8 |
QMSum | 21.3 | 21.6 | 21.3 | 22.1 | 24.0 | 21.7 |
Qasper | 41.9 | 37.2 | 31.4 | 30.7 | 43.5 | 39.8 |
SQuALITY | 25.3 | 26.2 | 25.9 | 25.8 | 23.5 | 23.8 |
SummScreenFD | 16.0 | 17.6 | 17.5 | 18.2 | 16.3 | 17.0 |
平均 | 26.1 | 25.5 | 24.4 | 24.5 | 27.0 | 25.4 |
RULER長上下文理解基準測試結果
模型 | 4K | 8K | 16K | 32K | 64K | 128K | 平均 |
---|---|---|---|---|---|---|---|
Phi-3.5-mini-instruct | 94.3 | 91.1 | 90.7 | 87.1 | 78.0 | 63.6 | 84.1 |
Llama-3.1-8B-instruct | 95.5 | 93.8 | 91.6 | 87.4 | 84.7 | 77.0 | 88.3 |
Mistral-Nemo-12B-instruct-2407 | 87.8 | 87.2 | 87.7 | 69.0 | 46.8 | 19.0 | 66.2 |
RepoQA長上下文代碼理解基準測試結果
模型 | Python | C++ | Rust | Java | TypeScript | 平均 |
---|---|---|---|---|---|---|
Phi-3.5-mini-instruct | 86 | 67 | 73 | 77 | 82 | 77 |
Llama-3.1-8B-instruct | 80 | 65 | 73 | 76 | 63 | 71 |
Mistral-7B-instruct-v0.3 | 61 | 57 | 51 | 61 | 80 | 62 |
分詞器
Phi-3.5-mini-Instruct支持最多 32064
個令牌的詞彙量。分詞器文件 已經提供了可用於下游微調的佔位符令牌,但也可以擴展到模型的詞彙量。
🔧 技術細節
模型信息
屬性 | 詳情 |
---|---|
模型類型 | 具有3.8B參數的密集解碼器Transformer模型 |
訓練數據 | 包括嚴格篩選的公開文檔、高質量教育數據、代碼、新創建的合成數據和高質量聊天格式監督數據,總計3.4萬億令牌 |
上下文長度 | 128K令牌 |
GPU數量 | 512個H100-80G |
訓練時間 | 10天 |
支持語言 | 阿拉伯語、中文、捷克語、丹麥語、荷蘭語、英語、芬蘭語、法語、德語、希伯來語、匈牙利語、意大利語、日語、韓語、挪威語、波蘭語、葡萄牙語、俄語、西班牙語、瑞典語、泰語、土耳其語、烏克蘭語 |
發佈日期 | 2024年8月 |
訓練數據集
我們的訓練數據包括多種來源,總計3.4萬億令牌,是以下數據的組合:
- 經過嚴格質量篩選的公開文檔、選定的高質量教育數據和代碼。
- 為教授數學、編碼、常識推理、世界常識(科學、日常活動、心理理論等)而新創建的合成的“教科書式”數據。
- 涵蓋各種主題的高質量聊天格式監督數據,以反映人類在遵循指令、真實性、誠實性和樂於助人等不同方面的偏好。
我們專注於可能提高模型推理能力的數據質量,並篩選公開文檔以包含適當水平的知識。例如,某一天英超聯賽的比賽結果可能是前沿模型的良好訓練數據,但我們需要去除此類信息,以便為小尺寸模型留出更多的推理能力。有關數據的更多詳細信息,請參閱 Phi-3技術報告。
微調
多GPU監督微調(SFT)與TRL和Accelerate模塊的基本示例可在 這裡 找到。
📄 許可證
本模型採用MIT許可證,詳情請見 許可證鏈接。
🔒 負責任的AI考慮因素
與其他語言模型一樣,Phi系列模型可能會表現出不公平、不可靠或冒犯性的行為。需要注意的一些限制行為包括:
- 服務質量:Phi模型主要在英語文本和一些額外的多語言文本上進行訓練。非英語語言的性能會較差,並且不同非英語語言之間的性能也會存在差異。訓練數據中代表性較少的英語變體的性能可能會比標準美式英語差。
- 多語言性能和安全差距:我們認為讓語言模型在不同語言中更廣泛可用很重要,但Phi 3模型在多語言發佈中仍然存在常見的挑戰。與任何大語言模型的部署一樣,開發者應更好地針對其語言和文化背景測試性能或安全差距,並通過額外的微調和適當的保障措施對模型進行定製。
- 傷害的表現和刻板印象的延續:這些模型可能會過度或不足地代表某些人群,抹去某些群體的代表性,或強化貶低性或負面的刻板印象。儘管進行了安全訓練後處理,但由於不同群體的代表性水平不同、文化背景不同或訓練數據中反映現實世界模式和社會偏見的負面刻板印象示例的普遍性,這些侷限性可能仍然存在。
- 不適當或冒犯性內容:這些模型可能會產生其他類型的不適當或冒犯性內容,在沒有針對具體情況進行額外緩解措施的情況下,可能不適合在敏感環境中部署。
- 信息可靠性:語言模型可能會生成無意義的內容或編造聽起來合理但不準確或過時的內容。
- 代碼範圍有限:Phi-3的大部分訓練數據基於Python,並使用常見的包(如“typing, math, random, collections, datetime, itertools”)。如果模型生成使用其他包的Python腳本或其他語言的腳本,我們強烈建議用戶手動驗證所有API的使用。
- 長對話問題:與其他模型一樣,Phi-3模型在某些情況下可能會在非常長的聊天會話(英語和非英語)中生成重複、無用或不一致的回覆。鼓勵開發者採取適當的緩解措施,例如限制對話輪數以解決可能的對話漂移問題。
開發者應應用負責任的AI最佳實踐,包括映射、測量和緩解與其特定用例以及文化、語言背景相關的風險。Phi-3系列模型是通用模型。當開發者計劃將這些模型用於特定用例時,鼓勵他們針對其用例對模型進行微調,並在具有特定語言保障措施的更廣泛AI系統中使用這些模型。需要考慮的重要領域包括:
- 資源分配:模型可能不適用於可能對法律地位、資源分配或生活機會產生重大影響的場景(例如住房、就業、信貸等),除非進行進一步評估和採用額外的去偏技術。
- 高風險場景:開發者應評估在高風險場景中使用模型的適用性,在這些場景中,不公平、不可靠或冒犯性的輸出可能會造成極大的代價或導致傷害。這包括在準確性和可靠性至關重要的敏感或專業領域提供建議(例如法律或健康建議)。應根據部署上下文在應用層面實施額外的保障措施。
- 錯誤信息:模型可能會產生不準確的信息。開發者應遵循透明度最佳實踐,並告知最終用戶他們正在與人工智能系統進行交互。在應用層面,開發者可以構建反饋機制和管道,以將回復與特定用例的上下文信息相結合,這種技術稱為檢索增強生成(RAG)。
- 有害內容生成:開發者應根據其上下文評估輸出,並使用適合其用例的可用安全分類器或自定義解決方案。
- 濫用:可能存在其他形式的濫用,如欺詐、垃圾郵件或惡意軟件生產,開發者應確保其應用不違反適用的法律法規。



