把大模型装进手机,分几步?

news2024/10/5 13:11:43

点击关注

文 |  姚   悦

编 | 王一粟

大模型“跑”进手机,AI的战火已经从“云端”烧至“移动终端”。

“进入AI时代,华为盘古大模型将会来助力鸿蒙生态。”8月4日,华为常务董事、终端BG CEO、智能汽车解决方案BU CEO 余承东介绍,通过盘古大模型的底层技术,Harmony OS带来了下一代智能终端操作系统。

在手机上使用大模型早已不是新鲜事,此前ChatGPT、文心一言、妙鸭等APP、小程序都是通过调用云端算力,满足手机终端AI应用的需求。

下一步,则是让大模型直接运行在手机上。

从今年四、五月开始,美国科技三巨头——高通、微软、英伟达,最受瞩目的AI新星OpenAI,以及国内AI“头部战队”的腾讯、百度等,都已经纷纷加速推进在移动终端的轻量化部署AI大模型。高通甚至宣布,正在逐渐转型成一家智能边缘计算(在移动终端等数据源头提供计算服务)的公司。

巨头的群力强推下,大模型从云到端迈进的产业趋势已经十分明确。

大模型为什么要“跑”在手机上?

大模型的最大特点就是“大”,动辄百亿千亿甚至万亿参数,且为了更好运行大模型,算力集群都已经升级到“万卡”级别。如今,为什么又非要把大模型“塞”进巴掌大的小手机?

大模型确实会给手机用户带来一些体验上的提升。例如,华为终端智能助手小艺不仅可以根据语音提示推荐餐厅,还可以进行摘要总结、信息检索、多语种翻译等信息处理,数千字的英文长文,具备大模型能力的手机智能助手就可以生成摘要,还可以翻译成中文。尤其后一点,在信息爆炸时代,对于提高学习工作效率还是很有价值的。

华为终端BG AI与智能全场景业务部总裁贾永利解释,一方面,大语言模型具备泛化能力,能够帮助手机智能助手提升理解能力。另一方面,大模型Plug-in的插件能力,可以在手机内部打通各应用之间的壁垒,借助工具拓展能力。

此外,ChatGPT等AIGC应用一直以来都伴随着强烈的隐私安全争议,但如果完全在端侧运行,就能够完全避免这一问题。因为大模型在端侧运行,数据也不会离开端侧。而且,这样响应的速度还会更快。

另一边,大模型对于到手机等移动终端的需求也已经非常迫切。

大模型的汹涌之势让云端越来越无法独自承载算力的需求。高通高级副总裁Alex Katouzian近期就直言,“随着连接设备和数据流量加速增长,叠加数据中心成本攀升,(我们)不可能将所有内容都发送到云端。”

不算数据传输要消耗网络带宽、存储,以及硬件等大量资源,光是云端算力现在已经让相关厂商有些吃不消。ChatGPT仅在推理阶段,保守估计每个月算力成本在1000万美元左右。

最大的问题还不是“贵”,而是“缺”。

此前,就连OpenAI创始人Sam Altaman都自曝GPU很缺,甚至直言不希望太多人用ChatGPT。近期,也有业内人士推测,小型和大型云提供商的大规模H100集群容量即将耗尽,H100的需求趋势至少会持续到2024年底。当前英伟达H100的产能还严重受制于供应链。

所以,云端和终端形成配合,手机等终端闲置算力资源被利用起来,解决“集中式”算力与“分布式”需求的错配,已经成为大模型发展“降本增效”的确定趋势。更重要的是,相比数量有限的中心节点,众多的移动终端堪称触及万千场景的“毛细血管”,也就决定了这一入口会是大模型加速应用渗透的关键。

如何把大模型“装进口袋”?

“相比传统的PC或者服务器,移动终端最大的挑战就是如何平衡好体验和能耗,这是鸿蒙内核设计最重要的核心点之一。”华为终端业务软件部总裁龚体强调。

大模型需要大量的计算资源和存储资源,尤其是基于现有的手机硬件配置,这就需要软件系统做好协调,提升效率降低能耗。

现在手机为了提高性能,至少是8个芯片内核,就需要手机系统做协同,这个过程就会消耗大量算力。如果采用异构资源调度,就可以高效协调CPU、GPU、NPU。龚体表示,这样调度效率可以提升60%以上。

手机系统能够进行运算,调度的最小单位叫做线程,传统的操作系统中往往上万线程同时运行,其中就会存在大量无效线程。针对这点,就可以通过更轻量的并发模型来处理并发操作,降低无效线程切换对算力的消耗。据龚体说,并发模型可以让任务切换开销节省50%。

另外,在操作系统的任务调度方面,这也是影响流畅体验的最基本要素,相比公平调度,动态优先级调度会很大程度降低能耗。动态优先级调度就类似于一个智能交通系统,可以根据道路状况和交通流量,动态调整交通信号灯亮起状态,如当某个方向的车流增加时,该方向的信号灯就提前变绿,就会减少拥堵和延迟。

不过,要想让大模型部署到手机上,还能运转起来,光是手机操作系统升级改进还远远不够。

随着大模型预测越来越准确,网络越来越深,神经网络消耗的内存容量已成为核心问题。同时,还涉及内存带宽的问题,网路运行时,内存、CPU和电池都会飞速消耗,这绝对是现在的手机难以承受之重。

因此,在部署到手机之前,就必须对大模型进行压缩,以降低对推理算力的需求。但是,一定要确保原有性能和精度基本不变。

量化就是一种常见且重要的压缩操作,可以减少模型占用的内存空间,提高推理性能。本质上就是将浮点运算模型转化为整数运算模型,因为整数运算比浮点运算精度更高,运算速度也更快。

当前,量化技术也已经在加速突破。服务器上训练的模型一般采用32位浮点运算(FP32),在手机端,高通已经将FP32模型量化压缩到INT4模型,实现64内存和计算能效提升。高通的实现数据表明,在借助高通的量化感知训练后,不少AIGC模型可以量化至INT4模型,与INT8相比,性能提升约90%,能效提升大约60%。

大模型压缩技术,无疑是AI巨头制胜移动终端战场的关键因素。这也在一定程度上,解释了英伟达在今年2月为什么“悄悄”收购了掌握压缩大模型技术的人工智能初创公司OmniML。

大模型倒逼终端硬件升级

“本年度我们将能够支持参数达100亿的生成式AI模型在手机上运行。”高通产品管理高级副总裁兼AI负责人Ziad Asghar近期则对外表示,100亿-150亿参数的模型可以覆盖绝大多数AIGC用例。如果终端已经可以支持这一参数级别,运算可全部在终端上进行,手机会成为真正的个人助理。

但是,当前新一代旗舰版手机芯片也就可以承载运行10亿参数级大模型,高通在今年6月计算机视觉学术顶会 CVPR 上,成功演示的跑在安卓系统上的大模型,也不过15亿参数。

参数跃升几乎十倍,奔赴移动终端的大模型已踩下“油门”,那手机也就不得不加速升级才能应对。

手机硬件亟需在AI加速器和内存进行革新。

首先,更大参数的大模型,需要更大的内存和存储空间来存储模型参数和中间结果。这就要求移动终端内存芯片容量,以及内存接口带宽都进行升级。

其次,更大的参数势必需要更强大的计算和推理能力,处理输入数据和输出结果。

虽然,目前手机芯片上的AI加速器(例如各种NPU IP)几乎已经是标配,但设计基本上是针对上一代卷积神经网络设计,并不完全针对大模型。

为了适配大模型,AI加速器必须能有更大的内存访问带宽,并减少内存访问延迟。这就需要AI加速器的接口上做出一些改变(例如分配更多的pin给内存接口),同时也需要片上数据互联做出相应的改变,来满足AI加速器访存的需求。

高通能喊出“年内100亿参数跑手机”的重要原因之一,就是其手握搭载了高通史上最快速、最先进的AI引擎的第二代骁龙8处理器,相比第一代骁龙8处理器,AI性能提升了4.35倍,能效提升60%。

当然,超大规模参数大模型的训练和推理,即便在云端也亟待突破五堵墙:内存墙+算力墙+通信墙+调优墙+部署墙,手机更得一层一层去突破。

不过,从“智能”到“人工智能”,对于手机来说,机遇大于挑战。

“创新周期对电子消费品的影响更为重要,甚至可以带领一个产业走出经济周期的影响。”荣耀终端CEO赵明判断,当前智能手机行业就处在一个AI、5G+开启的新一轮创新周期中。

欢迎关注光锥智能,获取更多前沿科技知识!

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

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

相关文章

【计算机网络】UDP服务器实现网络聊天室

前言 上一篇文章我们简单了解了一下什么是套接字编程,这篇文章我们利用UDP套接字来实现一个简单的网络聊天室。 编写UDP套接字服务器 成员变量 // 1. socket的id,相当于文件id int _sock; // 2. port uint16_t _port;// 3 一个线程负责收放消息&…

JUC并发、JVM相关

文章目录 JUC并发synchronized锁对象底层原理 synchronized锁升级reentrantlock公平锁和非公平锁可重入锁 / 递归锁 死锁死锁产生条件如何排查死锁?如果解决死锁? LockSupport与中断机制中断机制中断相关的三大API如何中断运行中的线程? LockSupportLoc…

【C++】C++11--- 线程库及详解lock_guard与unique_lock

目录 一、thread类的介绍二、线程函数参数三、 原子性操作库四、lock_guard与unique_lock4.1、mutex的种类4.2 lock_guard4.3 unique_lock 一、thread类的介绍 在C11之前,涉及到多线程问题,都是和平台相关的,比如**windows和linux下各有自己…

【css】属性选择器

有些场景中需要在相同元素中获取具有特定属性的元素&#xff0c;比如同为input&#xff0c;type属性有text、button&#xff0c;可以通过属性选择器设置text和button的不同样式。 代码&#xff1a; <style> input[typetext] {width: 150px;display: block;margin-bottom…

自动配置要点解读

目录 要点1&#xff1a;什么是自动配置&#xff1f; 要点2&#xff1a;配置文件与默认配置 要点3&#xff1a;自动配置设置思想来源 要点4&#xff1a;spring.factories文件作用 要点5&#xff1a;自动配置的核心 本文只对自动配置的思想进行基本的解读&#xff0c;不涉…

21、p6spy输出执行SQL日志

文章目录 1、背景2、简介3、接入3.1、 引入依赖3.2、修改database参数&#xff1a;3.3、 创建P6SpyLogger类&#xff0c;自定义日志格式3.4、添加spy.properties3.5、 输出样例 4、补充4.1、参数说明 1、背景 在开发的过程中&#xff0c;总希望方法执行完了可以看到完整是sql语…

通用人工智能操作系统

随着科技的飞速发展&#xff0c;人工智能已经成为了当今世界最热门的技术领域之一。从智能手机、自动驾驶汽车到智能家居系统&#xff0c;人工智能技术已经渗透到了我们生活的方方面面。然而&#xff0c;尽管人工智能在很多领域取得了显著的成果&#xff0c;但它仍然存在一些局…

matplotlib+tkinter实现一个简单的绘图系统

文章目录 封装成类布局实现绘图功能 绘图系统系列&#xff1a;将matplotlib嵌入到tkinter 封装成类 在理解matplotlib嵌入到tkinter中的原理之后&#xff0c;就已经具备了打造绘图系统的技术基础&#xff0c;接下来要做的&#xff0c;就是做一个较有可读性的绘图类&#xff0…

Java异常体系总结(下篇)

目录 1. 异常处理的三种方法 1.1 JVM 默认处理异常 1.2 通过 try...catch...自己处理异常 1.3 使用 throws和throw 抛出异常 1.3.1 使用 throws 抛出异常 1.3.2 使用 throw 抛出异常 2. try...catch.. 捕获到异常之后代码的执行顺序&#xff1f; 3. try...catch... 相关…

Mysql进阶(中) -- 索引

索引上部分 -> Mysql进阶(上) -- 存储引擎&#xff0c;索引_千帐灯无此声的博客-CSDN博客 &#x1f442; 爸爸妈妈 - 王蓉 - 单曲 - 网易云音乐 &#x1f448;目录看左栏 目录 &#x1f33c;索引 &#x1f43b;性能分析 - show profiles &#x1f43b;性能分析 - exp…

Cocos 适配 HarmonyOS NEXT,亮相 HDC2023,携手华为共筑鸿蒙生态!

HDC 2023 8月4-6日&#xff0c;作为华为合作伙伴&#xff0c;Cocos 引擎应邀参加了华为开发者大会 2023 - HDC 2023 暨 HarmonyOS 4 发布会&#xff0c;并获得了【鸿蒙生态能力共创奖】。 8月5日&#xff0c;在华为开发者大会&#xff08;HDC.Together&#xff09;游戏服务论坛…

SpringBoot系列---【使用jasypt把配置文件密码加密】

使用jasypt把配置文件密码加密 1.引入pom坐标 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version> </dependency> 2.新增jasypt配置 2.1…

HCIP-linux知识

linux安装教程参考&#xff0c;https://blog.51cto.com/cloudcs/5245337 yum源配置 本地yum源配置&#xff1a; 8版本配置&#xff1a;将光盘iso挂载到某个目录&#xff0c;/dev/cdrom是/dev/sr0软链接&#xff0c;# mount /dev/cdrom /mnt&#xff0c;# ls /mnt AppStream B…

Elastic:linux设置elasticsearch、kibana开机自启

0. 引言 每次启动服务器都要手动启动es服务&#xff0c;相当之不方便&#xff0c;为此&#xff0c;书写一个脚本&#xff0c;实现es、kibana的开机自启 1. 原理 首先任何服务要实现开机自启&#xff0c;都可分为如下三步&#xff1a; 1、在/etc/init.d目录下创建启动、关闭服…

跳表与Redis

跳表原理 跳表是Redis有序集合ZSet底层的数据结构 首先有一个头结点 这个头结点里面的数据是null 就是他就是这个链表的最小值 就算是Math.Min也比它大 然后我们新建一个节点的时候是怎么操作的呢 先根据参数(假如说是5)创建一个节点 然后把它放在对应位置 就是找到小于他的最…

(JS逆向专栏十一)某融平台网站登入RSA

声明: 本文章中所有内容仅供学习交流&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 名称:点融 目标:登入参数 加密类型:RSA 目标网址:https://www.dianrong.com/accoun…

java: 无法访问org.springframework.web.bind.annotation.GetMapping(springboot构建时出现问题)

spring boot构建完成后出现以下问题 报错原因&#xff1a;SpringBoot 3.0以上版本要求JDK 17以上&#xff0c;jdk版本1.8 与 spring boot 3.0.1 版本不匹配 解决方法&#xff1a;

ORA-48913: Writing into trace file failed, file size limit [50000000] reached

检查某环境的alert_orcl1.log时&#xff0c;发现有很多的ORA-48913报错&#xff0c;细节如下 Sat Jul 22 19:34:04 2023 Non critical error ORA-48913 caught while writing to trace file "/u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_dw00_138010.trc" E…

Python 中的机器学习简介:多项式回归

一、说明 多项式回归可以识别自变量和因变量之间的非线性关系。本文是关于回归、梯度下降和 MSE 系列文章的第三篇。前面的文章介绍了简单线性回归、回归的正态方程和多元线性回归。 二、多项式回归 多项式回归用于最适合曲线拟合的复杂数据。它可以被视为多元线性回归的子集。…

BenchmarkSQL 支持 TiDB 驱动以及 tidb-loadbalance

作者&#xff1a; GangShen 原文来源&#xff1a; https://tidb.net/blog/3c274180 使用 BenchmarkSQL 对 TiDB 进行 TPC-C 测试 众所周知 TiDB 是一个兼容 MySQL 协议的分布式关系型数据库&#xff0c;用户可以使用 MySQL 的驱动以及连接方式连接 TiDB 进行使用&#xff0…