把大模型装进手机,分几步?
点击关注
文 | 姚 悦
编 | 王一粟
大模型“跑”进手机,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+开启的新一轮创新周期中。
欢迎关注光锥智能,获取更多前沿科技知识!
相关文章:

把大模型装进手机,分几步?
点击关注 文 | 姚 悦 编 | 王一粟 大模型“跑”进手机,AI的战火已经从“云端”烧至“移动终端”。 “进入AI时代,华为盘古大模型将会来助力鸿蒙生态。”8月4日,华为常务董事、终端BG CEO、智能汽车解决方案BU CEO 余承东介绍,…...

c++游戏制作指南(三):c++剧情类文字游戏的制作
🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 🍟欢迎来到静渊隐者的csdn博文,本文是c游戏制作指南的一部🍟 🍕更多文章请点击下方链接🍕 🍨 c游戏制作指南dz…...

Flutter系列文章-实战项目
在本篇文章中,我们将通过一个实际的 Flutter 应用来综合运用最近学到的知识,包括保存到数据库、进行 HTTP 请求等。我们将开发一个简单的天气应用,可以根据用户输入的城市名获取该城市的天气信息,并将用户查询的城市列表保存到本地…...

HCIA---TCP/UDP协议
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一.UDP协议简介 UDP协议的特点: 二.TCP协议简介 TCP协议特点 三.TCP和UDP的区别 思维导图 一.UDP协议简介 UDP(User …...

数据库索引的使用
1、MySQL的基本架构 架构图 左边的client可以看成是客户端,客户端有很多,像我们经常你使用的CMD黑窗口,像我们经常用于学习的WorkBench,像企业经常使用的Navicat工具,它们都是一个客户端。右边的这一大堆都可以看成是…...

校验 GPT-4 真实性的三个经典问题:快速区分 GPT-3.5 与 GPT-4,并提供免费测试网站
现在已经有很多 ChatGPT 的套壳网站,以下分享验明 GPT-4 真身的三个经典问题,帮助你快速区分套壳网站背后到底用的是 GPT-3.5 还是 GPT-4。 大家可以在这个网站测试:https://ai.hxkj.vip,免登录可以问三条,登录之后无限…...

SpringBoot整合MongoDB连接池(含源码)
💡版本依赖 jdk 17 SpringBoot 3.1.0 Mongo 6.0.8 mybatis-plus 2.0.2 💡环境准备 🌵MongoDB安装 安装教程请查看:一文搞定(linuxwindowsdocker)安装MongoDB 🌵导入依赖 <parent><groupId>org.sp…...

[oeasy]python0082_[趣味拓展]控制序列_清屏_控制输出位置_2J
光标位置 回忆上次内容 上次了解了键盘演化的过程 ESC 从 组合键到 独立按键 ESC的作用 是 进入 控制序列配置 控制信息控制信息 \033[y;xH 设置光标位置\033[2J 清屏 这到底怎么控制???🤔谁来实现这些功能? 控制…...

Zookeeper+kafka
目录 1. Zookeeper定义 2. Zookeeper工作机制 3. Zookeeper特点 4. Zookeeper数据结构 5. Zookeeper应用场景 5.1 统一命名服务 5.2 统一配置管理 5.3 统一集群管理 5.4 服务器动态上下线 5.5 软负载均衡 6. Zookeeper 选举机制 6.1 第一次启动选举机制 6.2 非第一…...

Gpt微信小程序搭建的前后端流程 - 前端小程序部分-1.基础页面框架的静态设计(二)
Gpt微信小程序搭建的前后端流程 - 前端小程序部分-1.基础页面框架的静态设计(二) 在开始这个专栏,我们需要找一个小程序为参考,参考和仿照其界面,聊天交互模式。 这里参考小程序-小柠AI智能聊天,可自行先体验。 该小程序主要提供了…...

Flask进阶:构建RESTful API和数据库交互
在初级教程中,我们已经介绍了如何使用Flask构建基础的Web应用。在本篇中级教程中,我们将学习如何用Flask构建RESTful API,以及如何使用Flask-SQLAlchemy进行数据库操作。 一、构建RESTful API REST(Representational State Tran…...

6.9(Java)二叉搜索树
1.我的代码: public class BinarySearchTree {class TreeNode {public int key;public TreeNode left;public TreeNode right;public TreeNode(int key) {this.key key;}}public TreeNode root; // 根节点// 插入一个元素,注意,不能插入重复的值,如…...

洛谷P2256 一中校运会之百米跑
题目背景 在一大堆秀恩爱的 ** 之中,来不及秀恩爱的苏大学神踏着坚定(?)的步伐走向了 100 100 100 米跑的起点。这时苏大学神发现,百米赛跑的参赛同学实在是太多了,连体育老师也忙不过来。这时体育老师发…...

python-opencv对极几何 StereoRectify
OpenCV如何正确使用stereoRectify函数 函数介绍 用于双目相机的立体校正环节中,这里只谈谈这个函数怎么使用,参数具体指哪些函数参数 随便去网上一搜或者看官方手册就能得到参数信息,但是!!相对关系非常容易出错&…...

pom文件---maven
027-Maven 命令行-实验四-生成 Web 工程-执行生成_ev_哔哩哔哩_bilibili 27节.后续补充 一.maven下载安装及配置 1)maven下载 2) settings文件配置本地仓库 3)settings配置远程仓库地址 4)配置maven工程的基础JDK版本 5)确认JDK环境变量配置没问题,配置maven的环境变量 验证…...

界面控件DevExpress.Drawing图形库早期增强功能分享
众所周知,DevExpress在v22.2发布周期中引入了全新的DevExpress.Drawing图形库(并且已经在随后的小更新中引入了一系列增强功能)。 在这篇博文中,我们将总结在DevExpress v23.1中解决的一些问题,以及在EAP构建中为以下…...

Semantic Kernel 入门系列:Connector连接器
当我们使用Native Function的时候,除了处理一些基本的逻辑操作之外,更多的还是需要进行外部数据源和服务的对接,要么是获取相关的数据,要么是保存输出结果。这一过程在Semantic Kernel中可以被归类为Connector。 Connector更像是…...

Maven介绍-下载-安装-使用-基础知识
Maven介绍-下载-安装-使用-基础知识 Maven的进阶高级用法可查看这篇文章: Maven分模块-继承-聚合-私服的高级用法 文章目录 Maven介绍-下载-安装-使用-基础知识01. Maven1.1 初识Maven1.1.1 什么是Maven1.1.2 Maven的作用 02. Maven概述2.1 Maven介绍2.2 Maven模型…...

Ansible环境搭建,CentOS 系列操作系统搭建Ansible集群环境
Ansible是一种自动化工具,基于Python写的,原理什么的就不过多再说了,详情参考:https://www.itwk.cc/post/403.html https://blog.csdn.net/qq_34185638/article/details/131079320?spm1001.2014.3001.5502 环境准备 HOSTNAMEIP…...

Django基础
1.Django基础 路由系统视图模板静态文件和媒体文件中间件ORM(时间) 2.路由系统 本质上:URL和函数的对应关系。 2.1 传统的路由 from django.contrib import admin from django.urls import path from apps.web import viewsurlpatterns …...

HTML,url,unicode编码
目录标题 HTML实体编码urlcode编码unicode编码小结基础例题高级例题 HTML实体编码 实体表示: 以&符号开始,后面跟着一个预定义的实体的名称,或是一个#符号以及字符的十进制数字。 例: <p>hello</p> <!-- 等同…...

Hbase-热点问题(数据存储倾斜问题)
1. 危害 某一台regionserver消耗过多,承受过多的并发量,时间长机器性能下降,甚至宕机 2. 解决 可以通过设计rowkey预分区的方法解决 比如可以预分区120个,1月的数据存到1-10分区,每个月的数据存到10个分区ÿ…...

一个基于Java线程池管理的开源框架Hippo4j实践
线程池痛点 线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。在高并发以及大批量的任务处理场景,线程池的使用是必不可少的。线程池常见痛点: 线程池随便定义&…...

源码解析Flink源节点数据读取是如何与checkpoint串行执行
文章目录 源码解析Flink源节点数据读取是如何与checkpoint串行执行Checkpoint阶段StreamTask类变量actionExecutor的实现和初始化小结 数据读取阶段小结 总结 源码解析Flink源节点数据读取是如何与checkpoint串行执行 Flink版本:1.13.6 前置知识:源节点…...

进阶:Docker容器管理工具——Docker-Compose使用
文章目录 前言Compose大杀器编排服务 1、docker-compose安装curl方式安装增加可执行权限查看版本 2、Docker-compose.yaml命令3、 docker-compose实战4、Docker网络路由docker的跨主机网络路由**问题由来**:方案两台机分别配置路由表ip_forward配置 总结 前言 容器的管理工具&…...

策略模式(Strategy)
策略模式是一种行为设计模式,就是定义一系列算法,然后将每一个算法封装起来,并使它们可相互替换。本模式通过定义一组可相互替换的算法,实现将算法独立于使用它的用户而变化。 Strategy is a behavioral design pattern that def…...

webpack基础知识十:与webpack类似的工具还有哪些?区别?
一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割,组织和打包应用。每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体(bundle) 在前端领域中,并非只有webpack这一款…...

分享kubernetes部署:基于Ansible自动安装kubernetes
基于Ansible自动安装kubernetes 环境准备 我们以如下机器环境为例: 开放端口: 控制平面节点 工作节点 请按如上中规定的开放端口,或关闭防火墙: systemctlstopfirewalld&&\ systemctldisablefirewalld 安装常用工具 sudo…...

【Kubernetes部署篇】基于Ubuntu20.04操作系统搭建K8S1.23版本集群
文章目录 一、集群架构规划信息二、系统初始化准备(所有节点同步操作)三、安装kubeadm(所有节点同步操作)四、初始化K8S集群(master节点操作)五、添加Node节点到K8S集群中六、安装Calico网络插件七、测试CoreDNS可用性 一、集群架构规划信息 pod网段:10.244.0.0/16…...

c++--二叉树应用
1.根据二叉树创建字符串 力扣 给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符…...