Phi-4 的模型参数量是 14B,这使它在推理的时候比较耗费内存。因此如果我们想要在边缘端运行,需要对它进行量化。量化的手段很多,此前也介绍过,使用 Auto-Round GTPQ 格式的方法量化即可。
我们看一下量化到四位以后,推理时占用的显存以及效果。
针对量化版本,我写了一个 vLLM 推理的程序,推理速度很快,占用 11GB 显存,推理的结果也很准确。这样我们就可以在消费显卡上运行 Phi-4 了。
- 3.0x
- 2.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
推理代码见 repo:
https://github.com/xinyuwei-david/david-share.git 下的
DeepLearning/Phi4
接下来,我将介绍 Phi-4 整体的架构。
近期,微软推出了最新的大型语言模型 Phi-4,它在保持相对较小参数规模的情况下,展示了令人瞩目的性能。Phi-4 通过创新的训练方法和高质量的数据,在多个自然语言处理任务中取得了优异的成绩。本文将详细介绍 Phi-4 的模型架构、训练策略、性能表现,以及如何在本地计算机上对其进行微调。
Phi-4 简介
Phi-4 是微软 Phi 系列模型的最新成员,参数量为 140 亿。这一规模在大型语言模型中属于中等,但 Phi-4 通过精心设计的训练流程和数据,展现出了与更大参数量模型相媲美的性能。
模型架构与特点
基于 Transformer 的架构
Phi-4 采用了经典的 Transformer 解码器架构,共有 40 层网络结构。这种架构在自然语言处理任务中被证明是高效且有效的,能够捕捉文本序列中的长期依赖关系。
上下文长度的扩展
初始的 Phi-4 支持 4,096 个 Token 的上下文长度。在中期训练阶段,微软将上下文长度扩展到了 16,000 个 Token,使得模型能够处理更长的文本输入,适应更多样化的任务需求。
分词器与词汇表
Phi-4 使用了 OpenAI 的 tiktoken 分词器,词汇表大小为 100,352。这一选择兼顾了多语言支持和分词效果的优化。
注意力机制与位置编码
Phi-4 在模型中使用了全局注意力机制(Full Attention),对整个上下文序列进行自注意力计算。此外,模型采用了旋转位置编码(RoPE)并在中期训练中调整了基频,以适应更长的上下文长度。
创新的训练策略
合成数据的广泛应用
与传统模型主要依赖互联网抓取的数据不同,Phi-4 大量使用了合成数据进行训练。微软通过多种技术生成了大约 4,000 亿个 Token 的高质量合成数据,包括:
多代理提示:利用多个语言模型生成多样化的数据。
自我修正流程:模型生成初始输出后,进行自我评估和修正。
指令反转:从已有的输出生成对应的输入指令,增强模型的指令理解能力。
合成数据具有结构化、渐进式的特点,能够引导模型逐步学习复杂的推理和问题解决能力。
精选的有机数据
除了合成数据,Phi-4 还从多种来源精心挑选了高质量的有机数据,如网页内容、书籍、代码库和问答集合。通过严格的过滤和去重,确保了数据的高质量和多样性。
多阶段训练流程
Phi-4 的训练分为多个阶段:
预训练阶段:建立模型的基础语言理解能力,使用了约 10 万亿个 Token 的数据。
中期训练阶段:扩展上下文长度至 16,000 个 Token,进一步提升模型的性能。
后训练阶段(微调):通过监督微调(SFT)和直接偏好优化(DPO)等方法,优化模型的输出,使其更符合人类的偏好。
先进的训练技术
关键 Token 搜索(PTS)
PTS 是一种创新的训练方法,通过识别对模型输出影响最大的关键 Token,针对性地优化模型在这些位置的预测。这种方法提高了训练效率,增强了模型在关键决策点上的表现。
改进的直接偏好优化(DPO)
在 DPO 过程中,Phi-4 结合了 PTS 方法,使用高质量的偏好数据优化模型的输出。通过评估模型在关键 Token 上的表现,进一步提升了优化效果。
性能评估
外部评测基准
Phi-4 在多个公开的评测基准上表现出色:
MMLU:在多任务语言理解测试中取得了优异成绩。
GPQA:在研究生水平的 STEM 问答中表现突出。
MATH:在数学问题解决方面展现了强大的能力。
HumanEval:在代码生成和理解任务中超越了同等规模的模型。
内部评测套件(PhiBench)
微软开发了内部评测套件 PhiBench,涵盖了代码调试、代码补全、数学推理等任务,帮助团队深入了解模型的能力和不足,并有针对性地进行改进。
模型的局限性
尽管 Phi-4 性能强大,但仍存在一些局限性:
指令遵循能力:在严格格式化输出方面表现不佳。
冗长的回答:有时会对简单问题给出过于详细的答案。
对话能力:优化于单轮查询,缺乏持续对话的能力。
这些局限性主要源于模型的训练重点在于推理和问题解决,而非对话或指令遵循。
更多精彩内容请点击下载
评论