写点什么

极客说|Phi-4 模型的 4 位量化与 vLLM 高速推理

  • 2025-01-17
    北京
  • 本文字数:1819 字

    阅读完需:约 6 分钟

大小:931.23K时长:05:17
极客说|Phi-4 模型的 4 位量化与 vLLM 高速推理

Phi-4 的模型参数量是 14B,这使它在推理的时候比较耗费内存。因此如果我们想要在边缘端运行,需要对它进行量化。量化的手段很多,此前也介绍过,使用 Auto-Round GTPQ 格式的方法量化即可。


我们看一下量化到四位以后,推理时占用的显存以及效果。


针对量化版本,我写了一个 vLLM 推理的程序,推理速度很快,占用 11GB 显存,推理的结果也很准确。这样我们就可以在消费显卡上运行 Phi-4 了。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    推理代码见 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 性能强大,但仍存在一些局限性:

    • 指令遵循能力:在严格格式化输出方面表现不佳。

    • 冗长的回答:有时会对简单问题给出过于详细的答案。

    • 对话能力:优化于单轮查询,缺乏持续对话的能力。


    这些局限性主要源于模型的训练重点在于推理和问题解决,而非对话或指令遵循。


    更多精彩内容请点击下载

    《极客说|微软新模型:Phi-4 来了》

    《利用 AI 和 DevOps 重新定义开发人员体验》

    《SAP on Microsoft Cloud》

    《智能GitHub Copilot副驾驶®提示和技巧》

    2025-01-17 15:1211831

    评论

    发布
    暂无评论

    第9周作业

    猫。

    【无偿分享】史上最全Python学习大礼包 限24h删

    sum56

    Python Python基础 python入门 python学习 python资料

    [译文] 用故事点数评估开发工作真的好吗?

    LigaAI

    项目管理 程序人生 敏捷开发

    这可能是全网关于Camera慢动作录像(SlowMotion)介绍最全的文章了

    小驰笔记

    android 音视频 camera 引航计划

    已拿到6个Offer!主动分享成功秘籍:阿里巴巴Java面试参考指南(2021最新版)

    比伯

    Java 架构 面试 程序人生 技术宅

    产品训练营--第六期作业

    曦语

    产品训练营

    理解reflect elem和value的一段测试代码

    werbenhu

    Go 语言

    一个数组通过配置随机抽取组成小数组

    waitmoon

    Java

    推荐16款强大的Twitter视频下载器(2021精选)

    科技猫

    twitter 软件 网站 分享 视频下载

    已助我拿到8个Offer!阿里巴巴Java面试参考指南(泰山版)

    Java架构追梦

    Java 编程 架构 面试 阿里巴巴泰山版

    NetCore的缓存使用详例

    happlyfox

    缓存 学习 netcore 3月日更

    跟我学丨如何用鲲鹏服务器搭建Hadoop全分布式集群

    华为云开发者联盟

    hadoop 服务器 集群 鲲鹏 Hadoop全分布式集群

    在项目启动时(无request)获取Tomcat端口号

    waitmoon

    Java

    Android 高通Camx架构学习 - 第1章

    小驰笔记

    android 音视频 camera 引航计划

    NodeJs 介绍

    小风以北

    nodejs 新特性

    EGG NETWORK阿凡提公链全新一代算法稳定币之王EFTalk

    币圈那点事

    tensorflow实现两种图像风格融合 即神经风格迁移

    AI_robot

    优秀软件设计的特征

    这就是编程

    智慧派出所管理系统,派出所指挥调度平台搭建

    深入分析小程序运行环境框架原理

    小风以北

    小程序 编译原理 框架 工作原理

    三天研读《中兴电路设计规范》精华总结

    不脱发的程序猿

    28天写作 电路设计 3月日更 中兴 中兴电路设计规范

    UUID不失精度,长度改进

    waitmoon

    Java uuid

    【译】ECMAScript 2021: 最终功能集确定

    清秋

    JavaScript ecmascript 翻译 ES6 新闻

    看完这篇文章,你起码对分析视频卡顿有点思路了

    小驰笔记

    android 音视频 camera 引航计划

    Sentinel的注解支持 - @SentinelResource使用详解

    麦洛

    sentinel SpringCloud Alibaba

    未来直播 “神器”,像素级视频分割是如何实现的 | CVPR 冠军技术解读

    阿里云CloudImagine

    阿里云 算法 计算机视觉 音视频

    Spring Boot集成 Sentinel 实现接口流量控制

    麦洛

    微服务 sentinel spring cloud alibaba

    随机数环设想

    waitmoon

    Java

    用 Go + WebSocket 快速实现一个 chat 服务

    万俊峰Kevin

    websocket go-zero Go 语言

    如何在游戏中快速集成聊天功能

    LeanCloud

    游戏开发 即时通讯 聊天室 sdk

    Tensorflow实现Transformer模型将葡萄牙语翻译成英语

    AI_robot

    极客说|Phi-4 模型的 4 位量化与 vLLM 高速推理_微软_微软中国MSDN_InfoQ精选文章