微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行

本文主要是介绍微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Phi-3系列

Phi-3是一系列先进的语言模型,专注于在保持足够紧凑以便在移动设备上部署的同时,实现高性能。Phi-3系列包括不同大小的模型:

  1. Phi-3-mini(38亿参数) - 该模型在3.3万亿个令牌上进行训练,设计得足够小,可以在现代智能手机上运行。尽管体积紧凑,它的性能却可与更大的模型如Mixtral 8x7B和GPT-3.5相媲美,例如在MMLU基准测试中达到69%,在MT-bench上得分为8.38。
  2. Phi-3-small(70亿参数)Phi-3-medium(140亿参数) - 这些是Phi-3系列中较大的版本,在相同类型的数据上训练,但令牌数更多(4.8万亿),表现更佳。例如,Phi-3-small和Phi-3-medium在相同基准测试中的得分高于Phi-3-mini。

Phi-3模型的开发涉及使用经过严格过滤的网络数据和合成数据训练模型,使它们能够执行通常预期的大型模型任务。这种策略使Phi-3系列能够利用更小、更高效的模型,而不牺牲功能,使其能够直接在智能手机上运行。

Phi-3模型的重要性在于它们能够将强大的AI能力带到移动设备上,允许运行完全本地的强大AI应用,无需持续的互联网连接。这种进步可能导致广泛的设备上应用,增强用户隐私并减少AI驱动任务的延迟。

Phi-3训练方法

Phi-3模型的训练方法,尤其是Phi-3-mini,详细记录在技术报告中,包括几个旨在优化性能同时保持适合移动设备部署的紧凑模型大小的策略步骤。以下是Phi-3训练方法的关键元素:

  1. 数据选择和策展:Phi-3模型使用精心策划的数据集,包括经过严格过滤的网络数据和由大型语言模型(LLMs)生成的合成数据。这个数据集是Phi-2使用的数据的扩展版本,注重质量和相关性,以提高小型模型的学习效率。
  2. 数据最优化方案:与可能优先考虑计算最优或过度训练的传统方法不同,Phi-3训练强调“数据最优”方案。这里的重点是训练数据的质量和校准,以确保它与模型的规模相匹配。选择的数据旨在增强模型的推理能力,而不仅仅是增加信息量。
  3. 模型架构:Phi-3-mini采用了优化的变压器解码器架构,适用于默认(4K上下文长度)和扩展上下文(通过Phi-3-mini-128K中的LongRope机制将上下文长度扩展到128K)。这种灵活性使模型能够处理从简单查询到需要更深上下文的复杂对话的各种任务。
  4. 训练效率:模型使用bfloat16浮点格式进行训练,平衡了计算效率和数值精度。这种方法有助于有效管理计算资源,尤其是对于计划在处理能力有限的设备上运行的模型,如手机。
  5. 阶段训练:Phi-3的训练涉及两个连续阶段,第一阶段主要包括从网络来源中获得的一般知识和语言理解,第二阶段结合更严格过滤的网络数据和合成数据,教授模型高级推理和细分技能。
  6. 训练后增强:在初步训练后,Phi-3模型进行了包括监督指导微调和偏好调整在内的后训练调整。这些步骤对于改进模型在聊天功能、安全性和稳健性方面的能力至关重要。

这些训练策略共同使Phi-3模型在较少的参数下实现了高性能,使其适合本地化的设备上应用,如智能手机上。这种方法代表了向创建更高效但功能强大的AI工具迈进的重大转变,这些工具利用了先进的数据策展和训练技术。

Phi-3性能基准

Phi-3系列,特别是Phi-3-mini,在各种基准测试中展示了与更大模型如GPT-3.5和Mixtral 8x7B相竞争的性能。在MMLU基准测试中,Phi-3-mini得分为68.8%,紧随GPT-3.5的71.4%之后,超过了Mixtral 8x7B的68.4%。在HellaSwag测试中,Phi-3-mini达到76.7%,几乎与GPT-3.5的78.8%持平,并超过了得分为70.4%的Mixtral 8x7B。在ANLI测试中,Phi-3-mini记录了52.8%,略低于GPT-3.5的58.1%和Mixtral 8x7B的55.2%。Phi-3-small和Phi-3-medium展示了更进一步的改进;例如,Phi-3-small在MMLU中达到了75.3%,超过了GPT-3.5和Mixtral 8x7B。同样,在HellaSwag中,Phi-3-medium的得分为83.0%,显著地超过了其他模型。这些基准测试强调了Phi-3模型能够提供的强大性能,与或超过了许多更大的模型,突显了它们的训练方法和使用策划数据集的有效性。这种能力使得Phi-3能够在移动设备上提供强大的AI功能,与行业领先的模型紧密对齐,同时保持更小、更高效的足迹。

在iPhone上运行

Phi-3-mini模型特别设计为足够紧凑和高效,可以在现代智能手机上运行,包括配备A16仿生芯片的iPhone 14。此模型针对移动设备的限制进行了优化,同时仍提供强大的AI能力。它能够以4位量化版本运行,大约占用1.8GB的内存,这有助于其在不显著影响设备存储容量的情况下在智能手机上部署。

考虑到新型iPhone模型通常配备更先进的处理器和更大的内存容量,可以合理预期Phi-3-mini在iPhone 15上的表现将同样好或更佳。这将可能利用任何CPU和GPU能力的提升,以及可能进一步优化AI应用性能的能源效率改进。

总结

Phi-3系列,尤其是Phi-3-mini模型,代表了语言模型领域的一大进步,证明了高级AI能力可以在移动设备上有效实施。这一系列模型,包括Phi-3-mini、Phi-3-small和Phi-3-medium,在一系列基准测试中展示了令人印象深刻的性能,与甚至有时超越了GPT-3.5和Mixtral 8x7B等较大的模型。其性能的关键在于使用经过精心策划的训练数据集的创新使用,该数据集结合了经过严格过滤的网络数据和合成数据,使这些较小的模型能够实现高效率和高效能。

Phi-3-mini在智能手机上的部署,例如iPhone 14,使用仅需约1.8GB内存的量化版本,展示了强大AI在高度便携格式中的实际应用。这种能力为设备上的AI应用开辟了新的可能性,增强了用户隐私和功能性,无需持续的互联网连接。总的来说,微软的Phi-3计划推动了移动设备上AI可能性的界限,使其成为AI技术普及的一个关键发展,确保了更广泛的访问和实用性。

目前,微软只发布了Phi-3的技术报告,尚未开放源代码和权重下载。源代码和权重将很快提供下载。

https://avoid.overfit.cn/post/993fe58451424742928c50999461ddf9

这篇关于微软Phi-3,3.8亿参数能与Mixtral 8x7B和GPT-3.5相媲美,量化后还可直接在IPhone中运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/931876

相关文章

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

基于@RequestParam注解之Spring MVC参数绑定的利器

《基于@RequestParam注解之SpringMVC参数绑定的利器》:本文主要介绍基于@RequestParam注解之SpringMVC参数绑定的利器,具有很好的参考价值,希望对大家有所帮助... 目录@RequestParam注解:Spring MVC参数绑定的利器什么是@RequestParam?@

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5