自己回自己的文,给想进入AI生活的人一点知识科普,顺便辟谣一下网络上漫天飞的错误
资讯。
===
个人装置跑‘大模型、小模型’,大小如何定义?
以下节录台大洪教授的脸书文字内容:
https://www.facebook.com/share/8EmqkoYmn8j9mstY/
在个人装置上跑大小型语言模型
驱动当今AI服务的核心引擎是大型语言模型(LLM),但这类名词就像大数据(Big Data
)一样,对于所谓的“大”,并没有明确的定义,因此往往被错误或浮滥使用。
这篇就来谈谈语言模型的大小,以及在现在的个人装置上能跑多大的语言模型。
话说,GPT2在2019年出现江湖时,是当时最大的LLM,不过它1.5B的参数量[1],还不到20
20年GPT3的175B参数的百分之一,当然就更不用跟现在的GPT4比大小了。
这些“比较小的大型语言模型”也是有用的,因为有成本低、速度快的优势。但“比较小
的大型语言模型”这样称呼实在蛮矛盾诡异的,所以最近有人开始使用“小型语言模型”
(SLM)这个名词来称呼之,但千万不要以为SLM真的小。
今年四月发布的Llama3,有三个训练好的开源版本:8B、70B、400B,不过其中400B的版
本说是敬请期待,还没有实际释出[2]。如果以此为参考基准,8B的版本可算是SLM,400B
是LLM,那介于其中的70B该算SLM还是LLM,或者称之为MLM?
先不管称呼的问题,虽然大小不同,这三款语言模型都使用15T tokens的资料集进行训练
,据说训练过程总共花了100,000 petaFLOPS-day的大算力[2]。训练8B的模型花了1,300,
000 GPU hours,排放了390吨的二氧化碳;训练70B的模型花了6,400,000 GPU hours,排
放了1900吨的二氧化碳[3]。Meta用的是最新的Nvidia H100 GPU ,每张耗电700瓦。
想从零开始训练模型的话,得先盘点一下,自己的手上有多少训练资料,再评估一下能否
负担这些算力的需求。不过我觉得Meta公开的算力需求有点少,应该没有把失败的过程算
进来,或许是不想让碳排放量看起来太高。
架构和源头相同的模型,才能这么比较。据说Llama3的8B模型的能力约略可与Llama2的70
B模型抗衡,因为Llama2的训练资料集“只”有2T tokens [3]。Meta在发表Llama3的时候
也跟其他公司的模型比较[4],但参考这种评比结果时要小心,因为厂商通常都只报喜不
报忧,开发者最好是拿自己应用的情境去实际测试。
这阵子厂商猛推的AI PC、Copilot Windows、On-Device AI,标榜在个人装置上跑AI,对
应用开发者和使用者来说,AI的能力越强越好,但这些装置上究竟跑得动多大的语言模型
呢?
首先要看的是内存的容量。
SLM的问题较小。以Llama3的8B开源模型为例,下载标准的16位元浮点数(FP16)版本,
每个参数需要2个bytes,如果要把8B的参数都放进内存的话,内存的容量大概要16GB
,因此目前的AI PC的最低规格16GB是勉强堪用的。若是内存不够用,计算的过程就可
能会变得很慢。
软件的解法是把模型压缩得更小一些,例如用FP8或INT8取代FP16,参数所需的内存空
间就减半,但这么一来会让模型变笨。但应用开发者可以将压缩变笨的模型再做一些特训
,让它在特定应用领域上表现称职,这就是之前讲过的专家模型。
不想让模型变笨,硬解的方法是增大内存容量。CPU的内存容量更大,能够放进更大
的模型。FP16的Llama3 70B模型概算需要140GB,大概会超出一般的个人电脑的内存容
量。工作站和服务器可以放进几个TB的内存,但是用CPU来跑这个规模的LLM实在太慢,
性价比也很低,通常会用NPU或GPU。
PC上加装的独立显卡上有GPU专用的内存,其容量决定了可执行的模型大小。高阶游戏
显卡配备16GB以上的内存,应该跑得动Llama3 8B,但Nvidia和AMD最高阶的游戏显卡不
约而同都只给到24GB,所以不要幻想在游戏显卡上能把原版的Llama3 70B跑好。
但即便是目前市场上最大专业显卡,Nvidia的H100,每张显卡上的内存也只有80GB,还
是放不进原版的Llama3 70B,又不想让模型变笨,那该怎么办?答案是把模型拆开来,用
多张显卡一起跑。两张80GB版本的A100或H100,内存合计160GB就够了,但所费不赀。
有人想用6张24GB的RTX4090显卡来做这件事,但这些卡需要透过PCIe接口交换资料的负担
会让速度降低不少。
其次是内存的频宽。
很多人使用GPU跑LLM,不只因为GPU算力高,而且也因为GPU用上了比CPU频宽高出一大截
的内存。RTX 4090的内存频宽是1TB/s,而Intel Core Ultra 7 165H的内存频宽只
有120GB/s,足足差了8倍。概算一下,要让Core Ultra 7读一遍140GB的模型参数,就要
超过一秒钟!这样要如何即时反应?如果每处理一个token都要再读一遍,那还得了。
当然软件上会做一些优化,尽可能利用已经从内存读进来的参数,不要让每个token进
来后都要重复再读同样的参数,因此优化的技术相当重要,但先天内存频宽的差异还是
会有显著的影响。
要知道GPU架构设计的理念和CPU先天上不同,非常重视高频宽,而CPU比GPU在存取内存
的时候更重视低延迟。很现实的问题是,如果高频宽和低延迟都要最好的话,那就会变得
很昂贵。
[1] B是Billion的缩写,10的9次方,也可以用G或Giga来代表。T是Trillion或Tera的缩
写,10的12次方。P是Peta的缩写,10的15次方。
[2] https://en.wikipedia.org/wiki/Llama_(language_model)
[3] https://github.com/meta-llama/llama3/blob/main/MODEL_CARD.md
[4] https://techcrunch.com/....../meta-releases-llama-3....../
===
Q:阿婆这次的3B模型是不是自己的?
A:是,有开源在网络上。
https://machinelearning.apple.com/research/openelm
苹果在四月的时候给自己发了个搞,说明自己开源的OpenELM是为一种开放式训练及推理
框架的高效率语言模型。里面有附上原始码页面在GitHub上面,以及在AI讨论区Hugging
Face上。
https://github.com/apple/corenet
https://huggingface.co/apple/OpenELM
===
Q:阿婆完全照搬OpenAI的GPT模型吗?
A:没有,这次提供的是本地自家模型以串接的方式连动GPT模型,也提供用户关闭此功能
的选项。
===
Q:除了本机端上的模型,发表会还有提到苹果自家的私有云端服务器?
A:是,相较于本机端的模型,阿婆保证自己的资料不会储存在云端上,也保证一定程度
的隐私,比较像是私有云端预训练一个模板,提供一定程度的格式回答,而空格填入使用
者隐私资讯的方式连动。
===
Q:干嘛不下放到A14以后的芯片使用?
A:除开NPU算力足够以外,对于AI自然语言模型的关键还是在于内存大小,去年发表会
只有iPhone 15 Pro有达到8GB内存门槛,其余以下设备未达的情况下,阿婆想保证这项
AI使用顺畅易用,就只有提高使用门槛,毕竟在此之前iPhone等终端设备也有一些AI应用
(非生成式模型推理),势必占用内存,我想阿婆有所考量。
===
Q:这次的AI相比他牌的AI有什么优势?
A:其实发表会反复提及到App Intents API,这个API直接决定了未来Siri能否达成非常
顺滑的使用体验,毕竟这种系统底层的权限,现在只有封闭环境的阿婆有办法大力整合推
行。
而且之后的开发者统一指标就是能否透过这个API让系统得以间接使用手机内既有的资讯
跳转。
阿婆在发表会后半段也有初步演示如何透过一段对话得知过往在终端内的资讯(飞机资讯
那段)。
===
Q:中文的AI应用还要等明年,何时也没说清楚,到时早就被超车?
A:虽说科技这门就是先上车占有先机就有优势,但算法每天每周每月也都会有新的改
进更新,是否被超车,我觉得阿婆在发表会里面已经先竖立自己对于这个苹果智能的目标
了,也就是那五大宗旨。而且阿婆很明显不会想跟进OpenAI的训练方式去对待自己的模型
,有违他们的愿景(不外乎就是资料来源跟隐私的问题)
===
现在WWDC也还没结束,何况英文版预计秋季才开放,还有很多消息等落地的。