Phi 2 GGUF
模型概述
phi-2 是一個高效的文本生成模型,通過超低比特量化技術優化內存使用,適用於內存受限的部署環境。
模型特點
超低比特量化
採用 IQ-DynamicGate 技術,支持 1-2 比特量化,顯著減少內存佔用。
精度自適應量化
動態精度分配策略,在保持內存效率的同時提升準確性。
關鍵組件保護
嵌入層和輸出層使用 Q5_K 量化,減少錯誤傳播。
模型能力
文本生成
自然語言處理
代碼生成
使用案例
內存受限的部署環境
CPU 和邊緣設備推理
在內存受限的設備上運行高效的文本生成任務。
可容忍 1-2 比特誤差,保持較高推理速度。
超低比特量化研究
量化技術研究
探索 1-2 比特量化在模型性能上的影響。
困惑度顯著降低,內存佔用優化。
🚀 phi-2 GGUF模型
phi-2 GGUF模型提供了超低比特量化的解決方案,通過創新的量化方法在保證模型精度的同時,極大地提升了內存使用效率。該模型適用於多種硬件環境,用戶可根據自身的硬件能力和內存限制選擇合適的模型格式。
🚀 快速開始
環境準備
Phi-2已集成在transformers
4.37.0版本中,請確保使用該版本或更高版本。若使用transformers<4.37.0
,請始終使用trust_remote_code=True
加載模型,以防止副作用。
示例代碼
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)
✨ 主要特性
超低比特量化
- 引入了針對超低比特模型(1 - 2比特)的精度自適應量化方法,在Llama - 3 - 8B上經基準測試證明有顯著改進。
- 採用層特定策略,在保持極高內存效率的同時保留精度。
多種模型格式選擇
- 提供BF16、F16、量化模型(Q4_K、Q6_K、Q8等)以及極低比特量化模型(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)等多種格式,滿足不同硬件和內存需求。
多用途支持
適用於問答、聊天和代碼生成等場景,可處理常見的網絡監控任務,如自動化Nmap掃描、量子就緒檢查和Metasploit集成等。
📦 安裝指南
暫未提供相關安裝步驟。
💻 使用示例
基礎用法
問答格式
Write a detailed analogy between mathematics and a lighthouse.
模型將在 "." 後生成文本。
聊天格式
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)
模型將在註釋後生成文本。
高級用法
在網絡監控場景中使用:
# 假設以下代碼用於調用模型進行網絡監控相關任務
# 這裡只是示例,實際代碼可能需要根據具體需求進行調整
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)
# 構造網絡監控相關的提示
prompt = "Run a quick Nmap vulnerability test"
inputs = tokenizer(prompt, return_tensors="pt", return_attention_mask=False)
outputs = model.generate(**inputs, max_length=200)
text = tokenizer.batch_decode(outputs)[0]
print(text)
📚 詳細文檔
量化方法
基準測試背景
所有測試均在Llama - 3 - 8B - Instruct上進行,使用標準困惑度評估管道、2048令牌上下文窗口,並在所有量化中使用相同的提示集。
方法
- 動態精度分配:
- 前/後25%的層 → IQ4_XS(選定層)
- 中間50% → IQ2_XXS/IQ3_S(提高效率)
- 關鍵組件保護:
- 嵌入/輸出層使用Q5_K
- 與標準1 - 2比特量化相比,誤差傳播降低38%
量化性能比較(Llama - 3 - 8B)
量化方式 | 標準困惑度 | DynamicGate困惑度 | 困惑度變化 | 標準大小 | DG大小 | 大小變化 | 標準速度 | DG速度 |
---|---|---|---|---|---|---|---|---|
IQ2_XXS | 11.30 | 9.84 | -12.9% | 2.5G | 2.6G | +0.1G | 234s | 246s |
IQ2_XS | 11.72 | 11.63 | -0.8% | 2.7G | 2.8G | +0.1G | 242s | 246s |
IQ2_S | 14.31 | 9.02 | -36.9% | 2.7G | 2.9G | +0.2G | 238s | 244s |
IQ1_M | 27.46 | 15.41 | -43.9% | 2.2G | 2.5G | +0.3G | 206s | 212s |
IQ1_S | 53.07 | 32.00 | -39.7% | 2.1G | 2.4G | +0.3G | 184s | 209s |
選擇合適的模型格式
BF16(Brain Float 16)
- 適用於支持BF16加速的硬件,提供更快的計算速度和良好的精度。
- 具有與FP32相似的動態範圍,但內存使用更低。
F16(Float 16)
- 比BF16更廣泛支持,適用於大多數支持FP16加速的設備。
- 數值精度略低於BF16,但通常足以進行推理。
量化模型(Q4_K、Q6_K、Q8等)
- 適用於CPU和低VRAM推理,可在保持一定精度的同時減小模型大小和內存使用。
極低比特量化模型(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)
- 針對極端內存效率進行優化,適用於低功耗設備或大規模部署。
模型文件詳情
文件名 | 說明 |
---|---|
phi-2-bf16.gguf |
模型權重保存為BF16格式,適用於需要重新量化模型的場景。 |
phi-2-f16.gguf |
模型權重保存為F16格式,適用於支持FP16的設備。 |
phi-2-bf16-q8_0.gguf |
輸出和嵌入層保持為BF16,其他層量化為Q8_0。 |
phi-2-f16-q8_0.gguf |
輸出和嵌入層保持為F16,其他層量化為Q8_0。 |
phi-2-q4_k.gguf |
輸出和嵌入層量化為Q8_0,其他層量化為Q4_K,適用於內存有限的CPU推理。 |
phi-2-q4_k_s.gguf |
最小的Q4_K變體,以犧牲一定精度為代價減少內存使用。 |
phi-2-q6_k.gguf |
輸出和嵌入層量化為Q8_0,其他層量化為Q6_K。 |
phi-2-q8_0.gguf |
完全Q8量化的模型,提供更高的精度,但需要更多內存。 |
phi-2-iq3_xs.gguf |
IQ3_XS量化,針對極端內存效率進行優化。 |
phi-2-iq3_m.gguf |
IQ3_M量化,提供中等塊大小以提高精度。 |
phi-2-q4_0.gguf |
純Q4_0量化,針對ARM設備進行優化。 |
模型測試
測試方法
- 點擊任意頁面右下角的聊天圖標。
- 選擇AI助手類型:
TurboLLM
(GPT - 4 - mini)FreeLLM
(開源)TestLLM
(僅實驗性CPU)
測試內容
- 測試小型開源模型在AI網絡監控中的極限,包括函數調用、自動化Nmap掃描、量子就緒檢查和Metasploit集成等。
各助手特點
- TurboLLM:使用gpt - 4 - mini進行即時網絡診斷和自動化滲透測試。
- HugLLM:使用開源模型(約8B參數),提供更多令牌和AI日誌分析功能。
- TestLLM:當前實驗性模型,零配置設置,加載時間30秒,推理速度慢但無API成本。
🔧 技術細節
模型架構
Phi - 2是一個基於Transformer的模型,具有27億個參數,目標是進行下一個單詞預測。
訓練數據
- 數據集大小:250B令牌,由AOAI GPT - 3.5創建的NLP合成數據和經過AOAI GPT - 4評估的Falcon RefinedWeb和SlimPajama過濾網絡數據組合而成。
- 訓練令牌:1.4T令牌
訓練硬件
- GPUs:96xA100 - 80G
- 訓練時間:14天
軟件依賴
📄 許可證
該模型遵循MIT許可證。
⚠️ 重要提示
- Phi - 2旨在用於問答、聊天和代碼生成等目的。模型生成的文本/代碼應僅作為起點,而非潛在用例的最終解決方案。用戶在應用中使用這些模型時應謹慎。
- 未經評估直接用於生產任務不在本項目範圍內。因此,Phi - 2模型尚未經過測試以確保其在任何生產級應用中表現良好。請參考本文檔的限制部分以獲取更多詳細信息。
- 若使用
transformers<4.37.0
,請始終使用trust_remote_code=True
加載模型,以防止副作用。
💡 使用建議
- 若硬件支持BF16加速,建議使用
phi-2-bf16.gguf
模型,以獲得更快的計算速度和良好的精度。 - 若硬件支持FP16但不支持BF16,可選擇
phi-2-f16.gguf
模型。 - 對於內存有限的設備,可根據具體需求選擇合適的量化模型,如
phi-2-q4_k.gguf
或phi-2-iq3_xs.gguf
。 - 在使用模型進行網絡監控任務時,可根據實際情況選擇不同的AI助手類型,如需要即時診斷和自動化測試可選擇
TurboLLM
,若追求開源和更多令牌可選擇HugLLM
。
模型侷限性
- 生成不準確的代碼和事實:模型可能會產生不正確的代碼片段和陳述。用戶應將這些輸出視為建議或起點,而非確定或準確的解決方案。
- 代碼範圍有限:Phi - 2的大部分訓練數據基於Python,並使用常見的包,如"typing, math, random, collections, datetime, itertools"。如果模型生成的Python腳本使用其他包或其他語言的腳本,強烈建議用戶手動驗證所有API使用。
- 對指令的響應不可靠:模型未經過指令微調,可能難以或無法遵循用戶提供的複雜或細微指令。
- 語言限制:模型主要設計用於理解標準英語。非正式英語、俚語或其他語言可能會給其理解帶來挑戰,導致潛在的誤解或響應錯誤。
- 潛在的社會偏見:儘管在確保訓練數據安全方面做出了努力,但Phi - 2仍可能存在社會偏見。它可能會生成反映這些社會偏見的內容,特別是在受到提示或指令時。建議用戶注意這一點,並在解釋模型輸出時保持謹慎和批判性思維。
- 毒性:儘管使用精心選擇的數據進行訓練,但如果明確提示或指令,模型仍可能產生有害內容。發佈該模型是為了幫助開源社區開發在預訓練後直接降低模型毒性的最有效方法。
- 冗長性:作為基礎模型,Phi - 2通常會在對用戶提示的第一個答案之後產生無關或額外的文本和響應。這是因為其訓練數據集主要是教科書,導致產生類似教科書的響應。
商標說明
本項目可能包含項目、產品或服務的商標或標誌。授權使用微軟商標或標誌需遵循微軟商標和品牌指南。在本項目的修改版本中使用微軟商標或標誌不得造成混淆或暗示微軟的贊助。任何使用第三方商標或標誌都需遵循這些第三方的政策。
Phi 2 GGUF
其他
Phi-2是微軟開發的一個小型但強大的語言模型,具有27億參數,專注於高效推理和高質量文本生成。
大型語言模型 支持多種語言
P
TheBloke
41.5M
205
Roberta Large
MIT
基於掩碼語言建模目標預訓練的大型英語語言模型,採用改進的BERT訓練方法
大型語言模型 英語
R
FacebookAI
19.4M
212
Distilbert Base Uncased
Apache-2.0
DistilBERT是BERT基礎模型的蒸餾版本,在保持相近性能的同時更輕量高效,適用於序列分類、標記分類等自然語言處理任務。
大型語言模型 英語
D
distilbert
11.1M
669
Llama 3.1 8B Instruct GGUF
Meta Llama 3.1 8B Instruct 是一個多語言大語言模型,針對多語言對話用例進行了優化,在常見的行業基準測試中表現優異。
大型語言模型 英語
L
modularai
9.7M
4
Xlm Roberta Base
MIT
XLM-RoBERTa是基於100種語言的2.5TB過濾CommonCrawl數據預訓練的多語言模型,採用掩碼語言建模目標進行訓練。
大型語言模型 支持多種語言
X
FacebookAI
9.6M
664
Roberta Base
MIT
基於Transformer架構的英語預訓練模型,通過掩碼語言建模目標在海量文本上訓練,支持文本特徵提取和下游任務微調
大型語言模型 英語
R
FacebookAI
9.3M
488
Opt 125m
其他
OPT是由Meta AI發佈的開放預訓練Transformer語言模型套件,參數量從1.25億到1750億,旨在對標GPT-3系列性能,同時促進大規模語言模型的開放研究。
大型語言模型 英語
O
facebook
6.3M
198
1
基於transformers庫的預訓練模型,適用於多種NLP任務
大型語言模型
Transformers

1
unslothai
6.2M
1
Llama 3.1 8B Instruct
Llama 3.1是Meta推出的多語言大語言模型系列,包含8B、70B和405B參數規模,支持8種語言和代碼生成,優化了多語言對話場景。
大型語言模型
Transformers 支持多種語言

L
meta-llama
5.7M
3,898
T5 Base
Apache-2.0
T5基礎版是由Google開發的文本到文本轉換Transformer模型,參數規模2.2億,支持多語言NLP任務。
大型語言模型 支持多種語言
T
google-t5
5.4M
702
精選推薦AI模型
Llama 3 Typhoon V1.5x 8b Instruct
專為泰語設計的80億參數指令模型,性能媲美GPT-3.5-turbo,優化了應用場景、檢索增強生成、受限生成和推理任務
大型語言模型
Transformers 支持多種語言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一個基於SODA數據集訓練的超小型對話模型,專為邊緣設備推理設計,體積僅為Cosmo-3B模型的2%左右。
對話系統
Transformers 英語

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基於RoBERTa架構的中文抽取式問答模型,適用於從給定文本中提取答案的任務。
問答系統 中文
R
uer
2,694
98