🚀 Phi-2模型
Phi-2是一個擁有27億參數的Transformer模型。它使用與Phi-1.5相同的數據源進行訓練,並增加了一個新的數據源,該數據源包含各種NLP合成文本和經過篩選的網站(出於安全和教育價值考慮)。在常識、語言理解和邏輯推理的基準測試中,Phi-2在參數少於130億的模型中表現接近當前最優水平。
本開源模型旨在為研究社區提供一個無限制的小型模型,以探索重要的安全挑戰,如減少毒性、理解社會偏見、增強可控性等。
🚀 快速開始
安裝要求
Phi-2已集成在transformers
4.37.0版本中,請確保使用的是該版本或更高版本。
注意事項
Phi-2在FP16模式下存在注意力溢出問題。若遇到此問題,請在PhiAttention.forward()函數上啟用或禁用自動混合精度。
✨ 主要特性
- 適用多種格式:鑑於訓練數據的性質,Phi-2模型最適合使用問答格式、聊天格式和代碼格式的提示。
- 開源研究價值高:未通過人類反饋強化學習進行微調,為研究社區探索安全挑戰提供便利。
📦 安裝指南
確保你的transformers
庫版本為4.37.0或更高。
💻 使用示例
基礎用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
torch.set_default_device("cuda")
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", torch_dtype="auto", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2", trust_remote_code=True)
inputs = tokenizer('''def print_prime(n):
"""
Print all primes between 1 and n
"""''', return_tensors="pt", return_attention_mask=False)
outputs = model.generate(**inputs, max_length=200)
text = tokenizer.batch_decode(outputs)[0]
print(text)
高級用法
問答格式
你可以將提示作為獨立問題提供,如下所示:
Write a detailed analogy between mathematics and a lighthouse.
模型將在"."之後生成文本。
為了鼓勵模型寫出更簡潔的答案,你也可以嘗試使用以下問答格式 "Instruct: <提示>\nOutput:"
Instruct: Write a detailed analogy between mathematics and a lighthouse.
Output: Mathematics is like a lighthouse. Just as a lighthouse guides ships safely to shore, mathematics provides a guiding light in the world of numbers and logic. It helps us navigate through complex problems and find solutions. Just as a lighthouse emits a steady beam of light, mathematics provides a consistent framework for reasoning and problem-solving. It illuminates the path to understanding and helps us make sense of the world around us.
模型將在"Output:"之後生成文本。
聊天格式
Alice: I don't know why, I'm struggling to maintain focus while studying. Any suggestions?
Bob: Well, have you tried creating a study schedule and sticking to it?
Alice: Yes, I have, but it doesn't seem to help much.
Bob: Hmm, maybe you should try studying in a quiet environment, like the library.
Alice: ...
模型將在第一個"Bob:"之後生成文本。
代碼格式
def print_prime(n):
"""
Print all primes between 1 and n
"""
primes = []
for num in range(2, n+1):
is_prime = True
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
is_prime = False
break
if is_prime:
primes.append(num)
print(primes)
模型將在註釋之後生成文本。
📚 詳細文檔
使用注意事項
- Phi-2用於問答、聊天和代碼生成。模型生成的文本/代碼應被視為起點,而非確定的解決方案。用戶在應用中使用時應謹慎。
- 未經評估直接用於生產任務超出了本項目的範圍。Phi-2模型未經過測試以確保其在任何生產級應用中表現良好。
- 如果你使用的是
transformers<4.37.0
,請始終使用trust_remote_code=True
加載模型以防止副作用。
模型侷限性
- 代碼和事實不準確:模型可能會產生不正確的代碼片段和陳述。用戶應將這些輸出視為建議或起點,而非確定或準確的解決方案。
- 代碼範圍有限:Phi-2的大部分訓練數據基於Python,並使用常見的包,如"typing, math, random, collections, datetime, itertools"。如果模型生成使用其他包的Python腳本或其他語言的腳本,強烈建議用戶手動驗證所有API的使用。
- 指令響應不可靠:模型未經過指令微調,可能難以或無法遵循用戶提供的複雜或細微的指令。
- 語言限制:模型主要設計用於理解標準英語。非正式英語、俚語或其他語言可能會給其理解帶來挑戰,導致潛在的誤解或響應錯誤。
- 潛在社會偏見:儘管在確保訓練數據安全方面做出了努力,但Phi-2並非完全沒有社會偏見。它可能會生成反映這些社會偏見的內容,特別是在被明確提示或指示這樣做時。
- 毒性問題:儘管使用精心挑選的數據進行訓練,但如果明確提示或指示,模型仍可能產生有害內容。
- 冗長問題:Phi-2作為基礎模型,在單次回覆用戶提示時,通常會在第一個答案之後產生不相關或多餘的文本和響應。這是因為其訓練數據集主要是教科書,導致其響應類似教科書。
🔧 技術細節
模型
屬性 |
詳情 |
模型類型 |
基於Transformer架構,目標是進行下一個單詞預測 |
上下文長度 |
2048個標記 |
數據集大小 |
2500億個標記,由AOAI GPT - 3.5創建的NLP合成數據和經過AOAI GPT - 4評估的Falcon RefinedWeb和SlimPajama的過濾網絡數據組合而成 |
訓練標記 |
14萬億個標記 |
GPU |
96個A100 - 80G |
訓練時間 |
14天 |
軟件
📄 許可證
該模型根據MIT許可證授權。
商標說明
本項目可能包含項目、產品或服務的商標或標誌。對微軟商標或標誌的授權使用需遵守並必須遵循微軟商標和品牌指南。在本項目的修改版本中使用微軟商標或標誌不得造成混淆或暗示微軟的贊助。任何第三方商標或標誌的使用均需遵守這些第三方的政策。