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