#Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama
Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama
一、Phi-4 模型概述
(一)模型参数与规模
Phi-4 是微软推出的一款小型语言模型,拥有 140 亿参数。虽然参数量相对较小,但它在性能上却展现出了惊人的实力,甚至在某些基准测试中超越了更大规模的模型。Phi-4 的模型架构基于 Transformer 的解码器架构,与 GPT 系列模型类似,这种架构利用自注意力机制,能够有效捕捉文本序列中的长期依赖关系,尤其擅长处理自然语言生成任务。
(二)推出背景与目标
在人工智能领域,语言模型的发展日新月异。微软作为行业的重要参与者,一直致力于推动语言模型技术的进步。Phi-4 的推出旨在挑战“模型越大越好”的传统观念,通过创新的训练方法和高质量的数据,实现高效的信息处理和复杂任务的执行,为人工智能在更多领域的应用提供新的可能性。
二、Phi-4 模型架构
(一)基于 Transformer 的解码器架构
Phi-4 采用了基于 Transformer 的解码器架构,这种架构利用自注意力机制,能够有效捕捉文本序列中的长期依赖关系。自注意力机制允许模型在处理一个词时,考虑到整个文本序列中的所有词,从而更好地理解上下文信息。
(二)参数规模与层数
Phi-4 的参数总量为 140 亿个参数,模型层数为 40 层。这样的参数规模和层数使得 Phi-4 在保持较小模型体积的同时,具备了强大的计算能力和推理能力。
(三)上下文长度
Phi-4 的初始上下文长度为 4,096 个 Token,在中期训练阶段扩展到了 16,000 个 Token(16K)。这种扩展使得 Phi-4 能够处理更长的文本,提高了模型在处理长文本任务时的表现。
三、Phi-4 的训练方法与数据策略
(一)数据质量优先的理念
Phi-4 在训练过程中非常重视数据质量。与其他模型不同,Phi-4 大幅度引入了合成数据。合成数据的使用包括借助多个代理共同生成数据、自我修正流程和指令反转等,极大地丰富了训练的多样性。此外,Phi-4 还从高质量的互联网内容、书籍以及学术论文中精心筛选和过滤数据,确保在降低噪声的同时提升模型的表现。
(二)合成数据的全面应用
Phi-4 的训练数据主要由高质量的合成数据组成。合成数据能够提供结构化、逐步的学习材料,使得模型能够更加高效地学习语言的逻辑与推理过程。例如,在数学问题的解答中,合成数据可以按照解题步骤逐步呈现,帮助模型更好地理解问题的结构与解题思路。此外,合成数据能够更好地与模型的推理上下文对齐,更接近于模型在实际应用中需要生成的输出格式。
四、Phi-4 的应用领域与表现
(一)问答能力
Phi-4 能理解和回答各种问题,尤其在 STEM(科学、技术、工程和数学)领域表现出色。它在美国数学竞赛 AMC 10/12 中得分超过 90,显示了强大的数学推理能力。
(二)数学问题解决
Phi-4 在数学等领域的复杂推理方面表现出色。它能够快速分析问题的逻辑结构,准确地运用相关知识进行推理和计算。
(三)编程任务
Phi-4 在编程任务上也表现出色,能理解和生成代码,解决编程问题。在 HumanEval 基准测试中,Phi-4 以 82.6% 的准确率领先其他开源模型。
(四)长文本处理
基于 midtraining 阶段,Phi-4 能处理长达 16K 的上下文,保持高召回率。
(五)复杂推理
Phi-4 在多个基准测试中展现处理复杂推理任务的能力,如 MMLU 和 GPQA。
(六)安全交互
Phi-4 在后训练中进行安全对齐,确保与用户的交互符合负责任 AI 原则。
ollama已更新phi4:14b
https://ollama.com/library/phi4
ollama run phi4:14b
六、总结
Phi-4 作为微软推出的最新小型语言模型,在仅有 140 亿参数的情况下,通过创新的训练方法和高质量的数据,展现出了媲美甚至超越一些更大规模模型的性能。它在数学推理、编程任务、长文本处理等多个领域都表现出色,为人工智能技术的发展提供了新的思路和可能性。Phi-4 的成功也证明了在模型设计中,数据质量的重要性不亚于模型规模。
相关文章:

#Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama
Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama 一、Phi-4 模型概述 (一)模型参数与规模 Phi-4 是微软推出的一款小型语言模型,拥有 140 亿参数。虽然参数量相对较小…...
JSON头文件调用
除了传统的读写操作,现在流行的json文件读取保存,还是非常方便的. 头文件放在源代码中,在调用处添加引用路径 #include “…/ConsoleApplication1/include/json.hpp” using json nlohmann::json; 数据结构例子: // 声明Person类 class Person { public: std::string name; i…...

Swagger学习⑭——@Contact注解
介绍 Contact 是 Swagger/OpenAPI 3.0 注解中的一个注解,用于定义 API 文档中的联系信息。通过 Contact 注解,你可以指定 API 维护者的联系方式,例如电子邮件、URL 或名称等。 源代码 package io.swagger.v3.oas.annotations.info;import …...
如何监听Vuex数据的变化?
使用watch方法监听Vuex state的变化: // 在 Vue 组件中 this.$store.watch((state) > state.someState,(newValue, oldValue) > {console.log(someState changed from, oldValue, to, newValue);} );使用subscribe方法监听mutation的变化: // 在…...

Redis 优化秒杀(异步秒杀)
目录 为什么需要异步秒杀 异步优化的核心逻辑是什么? 阻塞队列的特点是什么? Lua脚本在这里的作用是什么? 异步调用创建订单的具体逻辑是什么? 为什么要用代理对象proxy调用createVoucherOrder方法? 对于代码的详细…...
前端中常用的单位度量(px,rpx,rem,em,vw,vh)+图片自适应
文章目录 前端中常用的单位度量vw/vh 的场景应用px/rem/em 之间的转换关系项目中的rem 应用根元素 font-size 设置为16px 的应用惯例自适应之图片应用1. 使用 max-width 和 max-height2. 使用 object-fit 属性3. 使用 background-image 模拟图片展示 前端中常用的单位度量 px&…...

STM32之一种双通路CAN总线消息备份冗余处理方法(十三)
STM32F407 系列文章 - Dual-CANBus-ProMethod(十三) 目录 前言 一、现状分析 二、解决思路 1.应用场景网络结构图 2.数据发送流程 3.数据接收流程 4.用到的模块 1.CAN网络速率及时间片分配 2.CAN网络消息ID组成 3.设备节点定义 4.数据格式说明…...

从零开始:使用VSCode搭建Python数据科学开发环境
引言 在数据科学领域,一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南,您将学会: 安装和配置VSCode,包括基本设置和快捷键配置设置Python开…...
C#语言的字符串处理
C#语言的字符串处理 引言 在现代编程中,字符串处理是一项重要的技能,几乎在所有编程语言中都有应用。C#语言作为一种强类型的、面向对象的编程语言,提供了丰富的字符串处理功能。这使得开发人员能够方便地进行文本操作,比如字符…...

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1Tzr9Y3EQ7/ 《安富莱嵌入式周报》第348期:开源低功…...
npm发布流程说明
一、进入要发布的项目根目录,初始化为npm包 npm initname:最重要的字段之一,项目名称(少于214个字节)。没有name和version不能进行安装; version:最重要的字段之一,项目版本。没有n…...
缓存-文章目录
关于缓存系列文章: 缓存学习总结1(缓存分类) 缓存学习总结2(服务器本地缓存) 缓存学习总结3(服务器内存缓存)推荐使用 缓存学习总结4(分布式缓存) 关于redis系列文章…...
LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
【LetMeFly】3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口 力扣题目链接:https://leetcode.cn/problems/count-substrings-that-can-be-rearranged-to-contain-a-string-i/ 给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新…...
如何在 Ubuntu 24.04 上安装 Memcached 服务器教程
简介 Memcached 是一个高性能、分布式的内存缓存系统,旨在通过减少数据库负载来加速动态 Web 应用程序。它通过将数据和对象缓存在 RAM 中来实现这一点,从而最大限度地减少了从数据库或其他慢速存储层重复获取数据的需要。 本教程的目标是手把手教你如…...
《深度学习模型在鸿蒙分布式框架下的跨设备高效之旅》
在人工智能领域,深度学习模型的训练与推理通常需要强大的计算资源和大量的数据支持。而鸿蒙系统的分布式框架为解决这一问题提供了新的思路和方法,使得深度学习模型能够在多个设备之间实现高效的训练与推理。 鸿蒙分布式框架概述 鸿蒙系统是一款面向万…...
[python3]Excel解析库-xlutils
xlutils 是一组用于处理 Excel 文件的 Python 库,它实际上是 xlrd 和 xlwt 的扩展,提供了额外的功能来操作 Excel 文件。xlutils 主要由三个部分组成:xlutils.copy、xlutils.filter 和 xlutils.view,它们分别用于复制和修改现有 E…...
Springboot Bean创建流程、三种Bean注入方式(构造器注入、字段注入、setter注入)、循坏依赖问题
文章目录 1 Bean 创建流程1.1 Bean的扫描注册1.2 创建Bean的顺序 2 三种Bean注入方式2.1 构造器注入 | Constructor Injection(推荐)2.2 字段注入 | Field Injection(常用)2.3 方法注入 | Setter Injection2.4 三种方式注入顺序 3…...

mybatisX插件的使用,以及打包成配置
装mybatisX插件; idea连接数据库; 点击mybatisx-generator,设置自己装mybatisX插件; idea连接数据库; 点击mybatisx-generator,设置自己要的包和类; 如果要把自己的配置设置成一个自定义模板&a…...

【初阶数据结构】线性表之单链表
文章目录 前言 一、单链表的概念与结构 1.概念 2.结点 3.性质 二、实现单链表 1.结构的定义 2.链表的打印和结点的申请 3.单链表的尾插和头插 4.单链表的尾删和头删 5.单链表的查找 6.指定位置之前插入数据和指定位置之后插入数据 7.删除pos结点和删除pos之后的结…...

CentOS7通过yum安装JDK
CentOS7通过yum安装JDK 1、卸载自带的JDK 查看已安装的JDK rpm -qa | grep java删除已安装的JDK yum -y remove java-1.8.0-openjdk*验证是否删除成功 查不到版本信息则已删除成功 java -version2、安装JDK sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-deve…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...