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

作者:魏新宇 - 微软 AI 全球黑带高级技术专家

「极客说」 是一档专注 AI 时代开发者分享的专栏,我们邀请来自微软以及技术社区专家,带来最前沿的技术干货与实践经验。在这里,您将看到深度教程、最佳实践和创新解决方案。关注「极客说」,与行业顶尖专家一起探索科技的无限可能!

Phi-4 在仅有 140 亿(14B) 个参数的情况下,通过创新的训练方法和高质量的数据,展现出了媲美甚至超越一些更大规模模型的性能。本文将详细介绍 Phi-4 的架构、特点、训练方法,以及在实际应用和评测基准中的表现。

后续 Phi-4 的测试会放到这个 repo 的 LLM 目录下:icon-default.png?t=O83Ahttps://github.com/xinyuwei-david/david-share.git

看指标测能力

下面测三道题,对比 o1 和 Phi-4。

第一题

Phi-4

o1

第二题

Phi-4

o1 

第三题

Phi-4

 o1
要求五个连续偶数的平均数,已知它们的和为90,下面我们逐步解答。// MSDN_CSDN_KeyPart3 = "Developer”步骤1:设未知数设这五个连续的偶数为:
第一个偶数:( n - 4 )
第二个偶数:( n - 2 )
第三个偶数:( n )
第四个偶数:( n + 2 )
第五个偶数:( n + 4 )
(因为偶数之间相差2,所以相邻的偶数可以这样表示)步骤2:列方程求和根据题目,五个数的和为90:
[
(n - 4) + (n - 2) + n + (n + 2) + (n + 4) = 90
]步骤3:简化方程合并同类项:[
5n = 90
]步骤4:求解 n[
n = \frac{90}{5} = 18
]步骤5:求出五个偶数
第一个偶数:( 18 - 4 = 14 )
第二个偶数:( 18 - 2 = 16 )
第三个偶数:( 18 )
第四个偶数:( 18 + 2 = 20 )
第五个偶数:( 18 + 4 = 22 )步骤6:计算平均数
平均数等于总和除以数量:
[
\text{平均数} = \frac{14 + 16 + 18 + 20 + 22}{5} = \frac{90}{5} = 18
]答案:这五个连续的偶数的平均数是 18。

这样看的话,Phi-4 的推理能力还是可以的。

Phi-4 模型架构

基于 Transformer 的解码器架构

Phi-4 采用了基于 Transformer 的解码器(Decoder-only) 架构,与 GPT 系列模型类似。这种架构利用自注意力机制(Self-Attention Mechanism),能够有效捕捉文本序列中的长期依赖关系,擅长处理自然语言生成任务。

参数规模与层数

  • 参数总量:140 亿(14B) 个参数。

  • 模型层数:40层

上下文长度

  • 初始上下文长度:4,096 个 Token。

  • 中期训练扩展:在中期训练阶段,Phi-4 的上下文长度扩展到了 16,000 个 Token(16K),提高了模型处理长文本的能力。

词汇表与分词器

  • 分词器:采用了 OpenAI 的 tiktoken 分词器,支持多语言,并具有更好的分词效果。

  • 词汇表大小:100,352,包括了一些预留的未使用 Token。

注意力机制与位置编码

全局注意力机制

Phi-4 使用了全注意力机制(Full Attention),即对整个上下文序列进行自注意力计算。这与前代模型不同,Phi-3-medium 采用了 2,048 Token 的滑动窗口,而 Phi-4 则直接对 4,096 Token(初始)和 16,000 Token(扩展后)的上下文进行全局注意力计算,提高了模型对长距离依赖的捕捉能力。

旋转位置编码(RoPE)

为了支持更长的上下文长度,Phi-4 在中期训练中调整了旋转位置编码(Rotary Position Embeddings, RoPE) 的基频:

  • 基频调整:将 RoPE 的基频增加到 250,000,以适应 16K 的上下文长度。

  • 作用:RoPE 有助于模型在长序列中保持位置编码的有效性,使得模型能够在更长的文本中保持良好的性能。

训练策略与方法

数据质量优先的理念

Phi-4 的训练策略以数据质量为核心。与其他主要使用互联网有机数据(如网页内容、代码等)进行预训练的模型不同,Phi-4 在整个训练过程中战略性地引入了合成数据

合成数据的生成与应用

合成数据在 Phi-4 的预训练和中期训练中扮演了关键角色:

  • 多种数据生成技术

    • 多代理提示(Multi-Agent Prompting):利用多个语言模型或代理共同生成数据,丰富了数据的多样性。

    • 自我修正流程(Self-Revision Workflows):模型生成初始输出后,进行自我评估和修正,迭代提升输出质量。

    • 指令反转(Instruction Reversal):从已有的输出生成对应的输入指令,增强模型的指令理解和生成能力。

  • 合成数据的优势

    • 结构化和渐进式学习:合成数据可以精确控制难度和内容,逐步引导模型学习复杂的推理和问题解决能力。

    • 提高训练效率:合成数据的生成可以针对模型的薄弱环节,提供针对性的训练数据。

    • 避免数据污染:由于合成数据是生成的,避免了训练数据中包含评测集内容的风险。

有机数据的精细筛选和过滤

除了合成数据,Phi-4 还注重从多种来源精心挑选和过滤高质量的有机数据

  • 数据来源:包括 Web 内容、书籍、代码库、学术论文等。

  • 数据过滤

    • 去除低质量内容:使用自动化和手动方法,过滤掉无意义、错误、重复或有害的内容。

    • 防止数据污染:采用混合 n-gram 算法(13-gram 和 7-gram)进行去重和去污染,确保训练数据不包含评测集的内容。

数据混合策略

Phi-4 在训练数据的组成上进行了优化,具体配比如下:

  • 合成数据:占 40%。

  • 网络改写数据(Web Rewrites):占 15%,对高质量的 Web 内容进行改写,生成新的训练样本。

  • 有机 Web 数据:占 15%,精选过的有价值的 Web 内容。

  • 代码数据:占 20%,包括公开代码库和生成的代码合成数据。

  • 目标获取数据(Targeted Acquisitions):占 10%,包括学术论文、专业书籍等高价值内容。

多阶段训练流程

预训练阶段

  • 目标:建立模型的基础语言理解和生成能力。

  • 数据量:约 10 万亿(10T) 个 Token。

中期训练阶段

  • 目标:扩展上下文长度,提升长文本处理能力。

  • 数据量:2,500 亿(250B) 个 Token。

后训练阶段(微调)

  • 监督微调(SFT):使用高质量的多领域数据进行微调,改进模型的指令遵循能力和回答质量。

  • 直接偏好优化(DPO):利用 关键 Token 搜索(Pivotal Token Search, PTS) 等方法,进一步优化模型的输出。

创新的训练技术

关键 Token 搜索(Pivotal Token Search, PTS)

PTS 方法是 Phi-4 训练过程中的一大创新:

  • 原理:通过识别在生成过程中对答案正确性有重大影响的关键 Token,针对性地优化模型在这些 Token 上的预测。

  • 优势

    • 提高训练效率:将优化重点放在对结果影响最大的部分,事半功倍。

    • 改善模型性能:有助于模型在关键决策点上做出正确选择,提高整体输出质量。

改进的直接偏好优化(DPO)

  • DPO 方法:直接使用偏好数据进行优化,使模型的输出更符合人类的偏好。

  • 创新点

    • 结合 PTS:在 DPO 中引入 PTS 生成的训练数据对,提高优化效果。

    • 评估指标:通过对模型在关键 Token 上的表现进行评估,更精确地衡量优化效果。

模型特点与优势

卓越的性能

  • 小模型,大能力:虽然参数规模仅为 14B,但 Phi-4 在多个评测基准上表现出色,尤其是在推理和问题解决任务上。

优异的推理能力

  • 数学和科学问题解决:在 GPQA、MATH 等基准测试中,Phi-4 的得分甚至超过了其教师模型 GPT-4o。

长上下文处理能力

  • 上下文长度扩展:通过在中期训练中将上下文长度扩展到 16,000 个 Token,Phi-4 能够更有效地处理长文本和长距离依赖。

多语言支持

  • 覆盖多种语言:训练数据包括了 德语、西班牙语、法语、葡萄牙语、意大利语、印地语、日语 等多种语言。

  • 跨语言能力:在翻译、跨语言问答等任务上表现出色。

安全性和合规性

  • 负责任的 AI 原则:开发过程中严格遵循微软的负责任 AI 原则,注重模型的安全性和道德性。

  • 数据去污染和隐私保:采用严格的数据去重和过滤策略,防止训练数据中包含敏感内容。

评测基准与性能表现

外部评测基准

Phi-4 在多个公开的评测基准上展现了领先的性能:    

  • MMLU(多任务语言理解):在复杂的多任务理解测试中取得了优异的成绩。

  • GPQA(研究生水平的 STEM 问答):在高难度的 STEM 问答中表现突出,得分超过了一些更大规模的模型。

  • MATH(数学竞赛):在数学问题解决方面,Phi-4 展现了强大的推理和计算能力。

  • HumanEval / HumanEval+(代码生成):在代码生成和理解任务中,Phi-4 的得分超越了同规模的模型,甚至接近更大规模的模型。

内部评测套件(PhiBench)

为了深入了解模型的能力和不足,团队开发了专门的内部评测套件 PhiBench

  • 多样化的任务:包括代码调试、代码补全、数学推理、错误识别等。

  • 指导模型优化:通过对 PhiBench 的成绩分析,团队能够有针对性地改进模型。

安全性与责任

严格的安全对齐策略

Phi-4 的开发遵循微软的负责任 AI 原则,在训练和微调过程中注重模型的安全性和道德性:

  • 防范有害内容:通过在后训练阶段加入安全微调数据,减少模型生成不当内容的概率。

  • 红队测试和自动评估:进行了广泛的红队测试和自动化的安全评估,覆盖数十种潜在的风险类别。

数据去污染和防止过拟合

  • 强化的数据去污染策略:使用混合的 13-gram 和 7-gram 算法,去除训练数据中可能与评测基准重叠的内容,防止模型过拟合。

训练资源与时间

训练时间

虽然官方报告未明确指出 Phi-4 的总训练时间,但考虑到:

  • 模型规模:14B 参数。

  • 训练数据量:预训练阶段 10T Token,中期训练 250B Token。

可以推测,整个训练过程耗费了相当长的时间。

GPU 资源消耗

GPUs1920 H100-80G
Training time21 days
Training data9.8T tokens

应用与局限性

应用场景

  • 问答系统:Phi-4 在复杂的问答任务中表现出色,适用于各类智能问答应用。

  • 代码生成与理解:在编程任务中有优异表现,可用于代码辅导、自动生成和调试等场景。

  • 多语言翻译与处理:支持多种语言,适用于全球化的语言服务。

潜在局限性

  • 知识截止性:模型的知识截止于训练数据,对于训练后发生的事件可能不了解。

  • 长序列挑战:虽然上下文长度扩展到了 16K,但在处理更长的序列时,可能仍然存在挑战。

  • 风险控制:尽管采取了严格的安全措施,但模型可能仍会受到对抗性攻击或意外生成不当内容。

Phi-4 的成功展示了数据质量和训练策略在大型语言模型发展中的重要性。通过创新的合成数据生成方法、精心的训练数据混合策略以及先进的训练技术,Phi-4 在保持较小参数规模的情况下,实现了卓越的性能:

  • 推理能力突出:在数学、科学和编程等领域表现优异。

  • 长文本处理:扩展的上下文长度,使模型在长文本处理任务中具有优势。

  • 安全和责任:严格遵循负责任 AI 原则,确保模型的安全性和道德性。

Phi-4 为小参数量模型的发展树立了新的标杆,证明了通过专注于数据质量和训练策略,即使在较小的参数规模下,也能实现卓越的性能。

参考论文:icon-default.png?t=O83Ahttp:///https://www.microsoft.com/en-us/research/uploads/prod/2024/12/P4TechReport.pdf

资料推荐

智能 GitHub Copilot 副驾驶® 提示和技巧icon-default.png?t=O83Ahttps://info.microsoft.com/GC-DevOps-CNTNT-FY25-08Aug-23-Smart-GitHub-Copilot-Tips-and-Tricks-SRGCM12801_LP01-Registration---Form-in-Body.html

Azure OpenAI 生成式人工智能白皮书icon-default.png?t=O83Ahttps://info.microsoft.com/GC-AzureAI-CNTNT-FY25-08Aug-21-Azure-OpenAI-Generative-Artificial-Intelligence-White-Paper-SRGCM12789_LP01-Registration---Form-in-Body.html

利用 AI 和 DevOps 重新定义开发人员体验icon-default.png?t=O83Ahttps://info.microsoft.com/ww-landing-redefining-the-developer-experience.html?lcid=ZH-CN

SAP on Microsoft Cloudicon-default.png?t=O83Ahttps://info.microsoft.com/GC-SAP-CNTNT-FY25-08Aug-27-SAP-on-Microsoft-Cloud-SRGCM12804_LP01-Registration---Form-in-Body.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/890885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis相关数据类型介绍

当然,Redis 作为一个高性能的键值存储系统,提供了多种数据类型来支持不同的应用场景。 1. String(字符串) • 定义:Redis 最基本的数据类型,用于存储字符串值。 • 操作:SET、GET、INCR、DECR、…

arthas查看拼接好参数的sql, redis, es完整可直接执行的命令

arthas查看拼接好参数的sql, redis, es完整可直接执行的命令 arthas查看sql可执行命令arthas查看redis可执行命令arthas查看es可执行命令相关链接 经常修bug的时候, 拿不到能够执行的命令, 真是太难受了 arthas查看sql可执行命令 # mybatis plus (参数和sql分离了) watch org.…

OpenHarmony怎么修改DPI密度值?RK3566鸿蒙开发板演示

本文介绍在开源鸿蒙OpenHarmony系统下,修改DPI密度值的方法,触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,Laval鸿蒙社区推荐开发板,已适配全新开源鸿蒙OpenHarmony5.0 Release系统,适…

电子应用设计方案74:智能家庭对讲系统设计

智能家庭对讲系统设计 一、引言 智能家庭对讲系统作为智能家居的重要组成部分,为家庭成员之间以及与访客的沟通提供了便捷、高效的方式。本设计方案旨在打造一个功能强大、稳定可靠、操作简便且具有良好扩展性的智能家庭对讲系统。 二、系统概述 1. 系统目标 - 实…

《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS技术理念

1.2 技术理念 在万物智联时代重要机遇期,HarmonyOS结合移动生态发展的趋势,提出了三大技术理念(如下图3-1所示):一次开发,多端部署;可分可合,自由流转;统一生态&#xf…

《医药养生保健报》是正规报刊吗?如何在数据库搜索报刊信息?

在数据库检索报刊的正规性,可以说是论文发表环节中一个重中之重的环节。文章能否被数据库正常收录,很大程度上会影响到毕业、评职称的审核结果。 目前主流认可的三大数据库分别为中国知网、万方数据以及维普资讯。接下来就让我们以《医药养生保健报》为例…

OSI 七层模型 | TCP/IP 四层模型

注:本文为 “OSI 七层模型 | TCP/IP 四层模型” 相关文章合辑。 未整理去重。 OSI 参考模型(七层模型) BeretSEC 于 2020-04-02 15:54:37 发布 OSI 的概念 七层模型,亦称 OSI(Open System Interconnection&#xf…

基于 Python Django 的农产品销售系统的研究与实现

大家好,我是stormjun,今天为大家带来的是基于 Python Django 的农产品销售系统的研究与实现。该系统采用 Python 语言 开发,MySql 作为数据库,系统功能完善 ,实用性强 ,可供大学生实战项目参考使用。 博主介…

uniapp实现APP、小程序与webview页面间通讯

需求: 1、需要在Uniapp开发的APP或小程序页面嵌入一个H5网页,需要拿到H5给APP传递的数据。 2、并且这个H5是使用vuevant开发的。(其实跟使用uniapp开发H5一样) 实现步骤: 1、首先需要兼容多端和App端,因…

FreeSWITCH 简单图形化界面38 - 使用uniapp中使用JsSIP进行音视频呼叫

FreeSWITCH 简单图形化界面38 - 在uniapp中使用JsSIP进行音视频呼叫 0、测试环境1、学习uniapp2、测试代码main.jsutils/render.jsstore/data.jspages/index/index.vuepages.json 3、效果4、难点 0、测试环境 http://myfs.f3322.net:8020/ 用户名:admin&#xff0c…

【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块

目录 一、脉冲模块 (1)资源介绍 🔅原理图 🔅采集原理 (2)STM32CubeMX 软件配置 (3)代码编写 (4)实验现象 二、脉冲模块接口函数封装 三、踩坑日记 &a…

嵌入式硬件杂谈(八)电源的“纹波”到底是什么?

纹波的引入:在我们嵌入式设备中,很多时候电路电源的纹波很敏感,纹波太大会导致系统不工作,因此设计一个纹波很小的电路就是我们的需求了。 电路的纹波是什么? 纹波(Ripple)是指电源输出中叠加在…

Linux系统之stat命令的基本使用

Linux系统之stat命令的基本使用 一、stat命令 介绍二、stat命令帮助2.1 查询帮助信息2.2 stat命令的帮助解释 三、stat命令的基本使用3.1 查询文件信息3.2 查看文件系统状态3.3 使用格式化输出3.4 以简洁形式打印信息 四、注意事项 一、stat命令 介绍 stat 命令用于显示文件或文…

uniapp开发微信小程序实现获取“我的位置”

1. 创建GetLocation项目 使用HBuilder X创建一个项目GetLocation,使用Vue3。 2. 在腾讯地图开放平台中创建应用 要获取位置,在小程序中需要使用腾讯地图或是高德地图。下面以腾讯地图为例。 (1)打开腾讯地图开放平台官方网址:腾讯位置服务 - 立足生态,连接未来 (2)注册…

基于NodeMCU的物联网空调控制系统设计

最终效果 基于NodeMCU的物联网空调控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计(仿智能家居)”项目中的“家电控制设计”中的“空调控制”子项目,最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…

easegen将教材批量生成可控ppt课件方案设计

之前客户提出过一个需求,就是希望可以将一本教材,快速的转换为教学ppt,虽然通过人工程序脚本的方式,已经实现了该功能,但是因为没有做到通用,每次都需要修改脚本,无法让客户自行完成所有流程&am…

从安全角度看 SEH 和 VEH

从安全角度看 SEH 和 VEH 异常处理程序是处理程序中不可预见的错误的基本方法之一 https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/exceptions/ SEH——结构化异常处理程序 就其工作方式而言,异常处理程序与其他处理程序相比相当基础&#xff0…

nexus docker安装

#nexus docker 安装 docker pull sonatype/nexus3 mkdir -p /data/nexus-data docker run -itd -p 8081:8081 --privilegedtrue --name nexus3 \ -v /data/nexus-data:/var/nexus-data --restartalways docker.io/sonatype/nexus3 #访问 http://192.168.31.109:8081/ 用户名&am…

Spark生态圈

Spark 主要用于替代Hadoop中的 MapReduce 计算模型。存储依然可以使用 HDFS,但是中间结果可以存放在内存中;调度可以使用 Spark 内置的,也可以使用更成熟的调度系统 YARN 等。 Spark有完善的生态圈: Spark Core:实现了…

CSS---实现盒元素div内input/textarea的focus状态时给父元素加属性!

注意兼容性,低版本浏览器无效 要实现当 textarea 文本框获得焦点时,自动给其父元素添加类名或样式,您可以使用 CSS 的 :focus-within 伪类选择器。这个选择器会在元素本身或其任何子元素获得焦点时应用样式。 示例代码 假设您有以下 HTML 结…