🚀 語言模型Phi-1
Phi-1是一個擁有13億參數的Transformer語言模型,專門用於基礎Python編碼。它使用了多種數據源進行訓練,在簡單Python編碼基準測試HumanEval上,展現出了超過50%的準確率。
🚀 快速開始
Phi-1已集成在transformers
4.37.0版本中,請確保使用的是該版本或更高版本。
✨ 主要特性
📦 安裝指南
確保你使用的transformers
版本為4.37.0或更高。
💻 使用示例
基礎用法
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
torch.set_default_device("cuda")
model = AutoModelForCausalLM.from_pretrained("microsoft/phi-1", torch_dtype="auto")
tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-1")
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)
高級用法
由於文檔未提供高級用法示例,暫不展示。
📚 詳細文檔
預期用途
鑑於訓練數據的性質,Phi-1最適合使用代碼格式的提示:
代碼格式
def print_prime(n):
"""
Print all primes between 1 and n
"""
for num in range(2, n+1):
for i in range(2, num):
if num % i == 0:
break
else:
print(num)
模型會在註釋後生成代碼。(注意:這是Python循環中else語句的合法正確用法。)
注意事項:
- Phi-1旨在用於代碼相關任務。模型生成的代碼應被視為起點,而非潛在用例的最終解決方案。用戶在應用中使用該模型時應謹慎。
- 直接用於生產編碼任務超出了本研究項目的範圍。因此,Phi-1未經過測試以確保其在生產級代碼中的充分性能。請參考本文檔的限制部分以獲取更多詳細信息。
侷限性
- 範圍有限:微調數據集中99.8%的Python腳本僅使用了"typing, math, random, collections, datetime, itertools"這些包。如果模型生成使用其他包的Python腳本,強烈建議用戶手動驗證所有API的使用。
- 複製在線腳本:由於模型是在在線Python腳本上訓練的,有很小的可能性會複製這些腳本,尤其是在不同在線來源中反覆出現的腳本。
- 生成不準確代碼:模型經常生成不正確的代碼。建議用戶將這些輸出視為靈感來源,而非最終解決方案。
- 對其他格式響應不可靠:儘管模型似乎能理解問答或聊天等格式的指令,但通常會給出不準確的答案,即使看起來很自信。其在非代碼格式方面的能力明顯更有限。
- 自然語言理解有限:作為一個編碼機器人,Phi-1的主要重點是幫助解決與編碼相關的問題。雖然它可能有一些自然語言理解能力,但其主要功能不是進行一般對話或像通用AI助手那樣展示常識。其優勢在於在編程和軟件開發方面提供幫助和指導。
- 潛在偏差:與其他AI模型一樣,Phi-1是在網絡和合成數據上訓練的。這些數據可能包含影響AI性能的偏差和錯誤。偏差可能來自各種來源,如不平衡的表示、刻板印象或訓練數據中存在的有爭議的觀點。因此,模型有時可能會生成反映這些偏差或錯誤的響應。
安全風險警告
使用Phi-1時,務必保持警惕。儘管該模型功能強大,但可能會在生成的代碼中無意中引入安全漏洞,例如:
- 目錄遍歷:代碼可能未對目錄遍歷攻擊實施安全檢查,可能允許未經授權訪問系統上的敏感文件。
- 注入攻擊:可能在正確轉義字符串方面存在疏漏,使應用程序容易受到SQL、操作系統命令或其他注入攻擊。
- 誤解需求:模型有時可能誤解或簡化用戶需求,導致不完整或不安全的解決方案。
- 缺乏輸入驗證:在某些情況下,模型可能會忽略輸入驗證或清理用戶輸入,從而引發跨站腳本攻擊(XSS)等攻擊。
- 不安全的默認設置:模型可能會推薦或生成具有不安全默認設置的代碼,如弱密碼要求或未加密的數據傳輸。
- 錯誤處理不當:錯誤處理不當可能會無意中洩露系統或應用程序內部工作的敏感信息。
鑑於這些潛在風險以及其他未明確提及的風險,在將生成的代碼部署到任何應用程序(尤其是對安全敏感的應用程序)之前,務必徹底審查、測試和驗證代碼。如有疑問,請諮詢安全專家或進行嚴格的滲透測試。
訓練
模型信息
屬性 |
詳情 |
模型類型 |
基於Transformer架構,目標是進行下一個單詞預測 |
訓練數據 |
540億個標記(70億個唯一標記) |
精度 |
fp16 |
GPU |
8個A100 |
訓練時間 |
6天 |
軟件依賴
許可證
該模型遵循MIT許可證。
引用
@article{gunasekar2023textbooks,
title={Textbooks Are All You Need},
author={Gunasekar, Suriya and Zhang, Yi and Aneja, Jyoti and Mendes, Caio C{\'e}sar Teodoro and Del Giorno, Allie and Gopi, Sivakanth and Javaheripi, Mojan and Kauffmann, Piero and de Rosa, Gustavo and Saarikivi, Olli and others},
journal={arXiv preprint arXiv:2306.11644},
year={2023}
}
商標
本項目可能包含項目、產品或服務的商標或標誌。對微軟商標或標誌的授權使用需遵循微軟商標和品牌指南。在本項目的修改版本中使用微軟商標或標誌不得造成混淆或暗示微軟的贊助。任何第三方商標或標誌的使用均需遵循這些第三方的政策。