其实没有传统芯片的说法,按不同的方式芯片可以有不同的分类方法,我想题主说的传统芯片是指CPU、GPU这些。CPU、GPU与AI芯片他们的共同点是都可以进行AI的运算,不同点是
AI芯片是专门用来处理AI相关运算的芯片,这与CPU、GPU、DSP的“兼职”做AI运算不同,即便是最高效的GPU与AI芯片相比也是有差距的,AI芯片在时延、性能、功耗、能效比等方面全面的超过上面提到的各种处理器。以知名的谷歌的TPU为例,当时谷歌资深硬件工程师Norman Jouppi表示,谷歌的专用机器学习芯片TPU处理速度要比GPU和CPU快15-30倍(和TPU对比的是英特尔Haswell CPU以及Nvidia Tesla K80 GPU),而在能效上,TPU更是提升了30到80倍。
为什么AI芯片在时延、性能、功耗、能效比方面表现更好呢?其实主要是因为结构,现在的AI主要是指机器学习/深度学习,运算从本质来说是一些矩阵乘。下面这张图相信很多人都看到过,CPU更擅长逻辑控制,串行计算,只有一小部分是用来计算的,而GPU控制电路相对简单并且Cache的需求小,更多的晶体管用来进行运算,GPU的结构也使得他更适合做一些大运算量的重复工作,而且更容易组成大的集群,就是大家常见的GPU的核心数比CPU好堆。
AI的运算本质上都是一些矩阵乘、并不需要很多的存取和判断,所以GPU的架构比CPU更加适合AI,也更加的高效。GPU本来是作为图形图像处理器存在的,里面有很多图形流水线的东西,这些对于AI运算是没有用的,谷歌他们去掉后重新设计成了TPU,里面有一个庞大的8位矩阵乘法单元,更加的适合AI运算,这类有很多浮点处理单元的芯片比较适合训练。从GPU进行AI运算到专业的AI芯片是一个必然的趋势,也带来更高的性能、更好的功耗。
AI芯片一般分为两类,一类是上面提到的谷歌TPU这样的用来做训练的,通过海量的数据样本进行训练构建神经网络模型,一般部署在云端;另一类是做推理用的,通常用在手机、汽车、安防等领域,执行训练好的模型,现有的推理芯片有很多,比如寒武纪NPU、地平线BPU、阿里新发布的含光800(这个用在云端)等。与训练不一样,推理为了更高效,还会采用一些其它的操作,比如稀疏矩阵、降低精度等,实验证明做适当的剪枝可以明显的加速推理过程并且还能保证较高的准确率。这样的话推理用的AI芯片在能效比等方面会更加的突出,更加的优于GPU。
大家都知道做芯片不容易,这两年AI很火就冒出一堆的AI芯片,真的都能生存吗?芯片一方面是靠技术另一方面是靠商业,只有正常商业化应用的芯片才能走上正轨一步步发展壮大。去年 FPGA 厂商赛灵思收购中国 AI 芯片领域的明星创业公司——深鉴科技,究其根本是深鉴科技无法自己造血养活自己,AI芯片想要落地FPGA的路子也是走不通的。
手机领域是目前AI落地比较好的,手机上的智能语音,拍照AI识别和处理都可以应用上,还包括一些智能音箱产品,前几天我拆了一个小米小爱音箱PLAY,发现采用的是地平线 ESE 方案。其实不只是智能语音,机器学习在图像识别领域做的也很好,前不久网易邀请我去体验百度的无人驾驶,就是下面这辆车,相信很多人都见过图片,车顶的雷达和车身上的各种传感器采集数据然后交给后备箱中两台庞大的服务器进行处理。因为雷达是64位的,所以数据计算量还是很大的,精度要求也高。
当我见到后备箱中的两台服务器时,我就想,自动驾驶的基础是计算机视觉,这是AI所擅长的,如果有好的AI芯片那会就不用装这么大两个服务器了。我能想到,自然别人也能想到,百度也能想到,问题是能做到什么程度。有趣的是曾任职百度IDL常务副院长,百度研究院副院长的余凯从百度出来后成立了地平线从事的就是相关的工作,一个多月前地平线刚宣布量产中国首款车规级人工智能芯片——征程二代(Journey 2)。根据目前的报道征程二代(Journey 2)典型功耗2W下就可以提供4TOPS的性能,是同等级GPU的10倍以上,典型目标识别精度超过99%,延迟不超过100毫秒。最后的体积也许不会像下面显示的这么小但是绝对会大大缩小体积,减轻负重和耗电情况,还能释放出空间,这样才会有实用价值。
都在说5G说自动驾驶,事实上5G只是一个管道和桥梁,真正决定自动驾驶发展的是计算机视觉技术的发展,是AI芯片的落地。
有点扯远了,总结就是,CPU、GPU、AI芯片都能用于AI运算,如果用时延、性能、功耗、能效比等标准来衡量的话AI芯片最好,其次是GPU,最差的选择是CPU。
广义上,AI芯片是用于运行AI算法的专用处理器,与传统芯片(如CPU)的区别在于专用性或通用性的侧重上。下面的几类芯片,都可以执行AI算法。
某种程度上,GPU和FPGA也可以视为AI芯片,不过ASIC类的特点鲜明,因此最具有代表性。
AI芯片遵循一个硬件设计规律:
一个好理解的例子是比特币挖矿。
比特币的共识算法是SHA256算法,基于哈希运算,所以不存在反向计算公式,只能靠矿机去穷举海量的可能值。对于每个区块,最先尝试到正确值的矿工,将获得挖矿奖励。对于矿工来说,计算速度越快,获得奖励的期望就会越高。
在CPU作为主流挖矿方式的时期,一位论坛ID为Laszlo的程序员,发现GPU的挖矿效率远远高于CPU。于是他仅用一块9800显卡,就挖出了超过8万个比特币。
Laszlo:As far as I know I was the first to release a GPU miner.
Laszlo除了是最早用GPU挖矿的人外,还做过一件具有里程碑意义的行为艺术:用10000枚比特币买了2个披萨。
关于这段有趣的历史,参见我之前的文章:
接下来的一段时间里,GPU得益于算力和能效上的巨大优势,逐渐成为了主流的挖矿芯片。
不过到了现在,再用GPU挖比特币,已经几乎不可能了。例如RTX 3090显卡,在超频情况下,每秒能执行126.5M次SHA256计算,而比特币的全网总算力已经超过178.60EH/s,等价于14000亿块RTX 3090显卡的算力总和。
这些海量算力主要来自ASIC矿机,其计算芯片就是面向执行SHA256算法去进行架构设计。这使得ASIC矿机在挖矿效率上碾压显卡,甚至于单矿机就能胜过超算中心。
但是ASIC矿机在硬件上牺牲了通用性,导致无法执行其他计算任务,甚至于无法挖非SHA256算法的区块链货币,如以太坊。
在比特币挖矿的例子中,能看出专用芯片最为适合:算法(or算子)固定,且相对简单的应用场景,比如比特币的SHA256算法。
AI芯片跟矿机的特点一致,重视专用场景下的运算效率,但落地场景不同。
AI芯片的目的是高效率地执行AI算法,因此也会被称为AI加速器,并衍生出了一大堆名字,如NPU(神经网络处理器),TPU(谷歌·张量处理器),APU(AMD·加速处理器)。虽然名字上不一样,但性质上颇为类似。
下面用谷歌的初代TPU(2016年)举例。
图中对比了若干主流AI算法的推理表现,初代TPU相比同时代的CPU/GPU,效率可谓摧枯拉朽。TPU不仅是性能强悍,在能效上依然甩出CPU和GPU数十倍。
有意思的是,根据TPU项目的技术负责人(诺曼·乔皮)所说,在工程开始时,他们连团队都没组齐,还要手忙脚乱的去招聘RTL和验证工程师。
Norm Jouppi:We did a very fast chip design. It was really quite remarkable.
即便是仓促上阵,但初代TPU的设计,验证,流片,加上部署,整体流程只耗费了15个月时间。
这体现了AI芯片的一个特点,架构相比通用芯片(CPU/GPU)要简单得多,使得TPU团队能够在如此短的时间内,快速打造出一款全新的AI芯片。
下图是TPU的模块面积图,其中黄色是计算相关,蓝色是数据相关,绿色是读写相关,而红色则是控制相关的电路,仅占了芯片面积(die)的2%。
TPU只需面向卷积神经网络的运行,因此可以减少控制逻辑,且各项延时相对固定,运行的稳定性高。
CPU和GPU因为要面临复杂多样的计算任务,控制逻辑复杂的多,造成控制电路的面积大,也更难设计。
AI算法通常是基于卷积神经网络,最基本且最主要的操作是『卷积』。
注意,此处『卷积』定义不同于信号处理中的卷积。以最常见的3x3卷积为例,计算过程如下图所示:
举个更具体的例子,在1080P分辨率下,1个4层输入4层输出的卷积层:
当层数较大时,参数量会激增。对于一个512层输入和512层输出的卷积层:
上述介绍的仅仅是一个卷积层,而真正的卷积神经网络通常由多个卷积层和其他算层蹭相互连接构成[3]。
为了更好地实现模型的推理加速,需要总结实际模型的特点,分析出性能瓶颈,进而做出针对性的优化。
TPU团队在2016年时,统计过6个谷歌产品和工具中的若干类常见神经网络,详见下表:
模型类型 | 网络层数 | 参数数量 | 部署比例 |
---|---|---|---|
MLP0 | 5 | 20M | 61% |
MLP1 | 4 | 5M | |
LSTM0 | 58 | 52M | 29% |
LSTM1 | 56 | 34M | |
CNN0 | 16 | 8M | 5% |
CNN1 | 89 | 100M |
常见模型的参数数量从500万到1亿个之间,可见:
面对卷积神经网络的庞大计算量,CPU在单时钟周期内可执行的运算数有限,极易出现计算瓶颈。GPU则是提升了并行计算性能,将卷积运算等价变换成矩阵的乘加运算,成为了神经网络训练的主流硬件。
模型加速的核心是提升并行化水平,在同一个时钟周期内,进行尽可能多次的运算。TPU重新设计了专用的硬件架构:脉动阵列(systolic array)。
单个时钟周期可执行的运算数 | |
---|---|
CPU | 一两个 |
CPU(vector extension) | 数十个 |
GPU | 数千个 |
TPUv1 | 256 * 256 = 65536个 |
TPU的脉动阵列参见下图[1],计算结果并非直接输出,而是在脉动阵列中按规律“流动”,等完全计算好后才输出保存。不仅增加了并行度,还实现了参数的复用,避免了反复载入。脉动阵列结构精妙,后续有机会可以单独写回答来介绍。
TPU的脉动阵列在每个时钟周期能执行65536次8位整型数的乘加运算。在700MHz的主频下,实现了65536 * 700,000,000 * 2 =92Tops@INT8的惊人算力。
上文提到,谷歌部署的神经网络中,参数数量从500万到1亿个不等,且中间结果也有很大数据量。
如果卷积运算单元(如脉动阵列)从DDR(内存)上,频繁进行:
类似木桶效应,决定盛水量的是最短的那块木板,即性能瓶颈。上述密集的DDR读写操作,使得IO速度容易成为模型推理的性能瓶颈。
于是,初代TPU搭载了28M字节的片上存储器(On-chip memory, OCM),虽然成本较高,但读写速度远胜DDR内存。而第二代TPU更是不惜成本,十分奢侈地搭载了16GB的HBM存储单元,其IO速度达到了600GB每秒。
有了高速缓存(OCM or HBM)后,运行时就可以将频繁使用的参数,提前载入到高速缓存中,然后卷积核便可以快速读取所需数据,无需反复从内存上载入。不仅如此,片上存储器还可以保存网络运作的中间结果,避免在内存上中转(写入+读回),从而显著降低内存的IO压力。
这里高速缓存的作用类似于传统CPU中的L3缓存,目的是有效缓解内存的带宽压力,让卷积核的强大算力得到充分发挥,避免出现空等数据载入的情况。
下图出自论文[2],第一作者TPU项目的技术负责人(诺曼·乔皮)。论文实验并统计了若干主流模型在TPU/GPU/CPU上的运行表现。
横轴为所需算力除以需从内存载入的数据量,代表单位内存数据载入对应的计算密度,而纵轴为实际发挥的算力。因此,斜线部分代表算力表现被内存IO带宽制约,而水平部分代表性能已充分发挥,即被算力制约。
如图所示,TPU(蓝线)在高计算密度时,效果明显优于CPU(黄线)和GPU(红线)。可见在高计算密度情况下,TPU能发挥更大优势。而28MB的片上存储能够提前缓存参数和中间结果,避免卷积核频繁进行内存对鞋,从而提升计算密度,让TPU运行更加高效。
在硬件设计之外,为了让AI芯片更高效的运行模型,需要对AI算法做轻量化处理。
一个常见且直观的方法是进行『模型量化』,可以显著降低参数大小和计算量。
当前的神经网络训练基本都基于浮点运算,在GPU上训练和推理时,通常使用32比特或64比特来表示一个浮点数。
如果使用更低的比特数,比如改用8个比特来表示数字,会极大降低参数大小和计算量。
谷歌:如果外面在下雨,你可能不需要指导每秒有多少雨滴落下,而只是想知道,下的大雨还是小雨[1]。
如下图[1]是使用8比特整型数去近似32位浮点数。
量化等于带来了一定的量化噪声,而好的神经网络会具备一定的抗噪能力,因此量化后算法的精度损失会是有限且可控的。
量化的另一个好处是,如果将模型的输入和参数均量化成整型数(如int8/uint8),没有了浮点计算,能让硬件设计更加简化。如上文介绍到,初代TPU仅支持整型运算,不仅是因为整型数运算在硬件上更加高效,且电路会简单很多。
目前主流的量化方法有两大类:
量化方法 | 简称 | 量化能力 | 优势 | 劣势 |
---|---|---|---|---|
量化训练 | QAT | 低于8bit | 极致的精度和效率 | 需要训练数据 训练时间长学习门槛高 |
训练后量化 | PTQ | 可达8bit | 不需要训练数据 转换速度快使用门槛低 | 存在精度/效率损失 |
QAT在训练模型时就使用量化算子,可以最大地避免精度损失,但不能使用现有的浮点模型,需要从头开始去重训模型。
PTQ则是对现有的浮点模型做量化,虽然量化后的模型精度和效率不通常如QAT,但由于不需要重新训练模型,使用门槛更低更稳定,还是有很大的使用需求。而如何减少精度损失,是PTQ方案在不停探索的目标,也衍生出了多种思路,例线性数量化和对数量化。
除必不可少的3x3卷积外,常见的神经网络算子多达数十种(如ONNX包含80+算子)。
出于芯片成本,设计难度和运行效率的考虑,现有的AI芯片都只能原生支持部分算子。
因此,在模型训练时就需要了解和考虑硬件能力,尽量使用AI芯片能高效支持的算子,以提升部署后的运行效率。反过来,AI芯片的硬件设计时,同样需要考虑算法设计的需要,尽量支持更多的常用算子,以提高模型设计的自由度。
如果厂商具备软硬件之间的协同开发能力,就可以在模型精度,芯片成本,推理速度之间,达到非常好的兼顾,实现1+1>2的效果。
这也是越来越多终端厂商选择自研AI芯片的原因,而AI芯片厂商也经常会打包算法出售。
AI芯片除了硬件外,软件栈(工具链)的设计也是非常重要且有难度的,不仅是模型量化,还包括编译器设计。
在编译环境,为追求更高的硬件效率,需要研究非常复杂的调度问题,这是我目前的主要工作内容。日后有精力会单独写回答分享。
[1] 重点参考:An in-depth look at Google’s first Tensor Processing Unit (TPU)
[2] https://arxiv.org/ftp/arxiv/papers/1704/1704.04760.pdf
[3] Convolutional Neural Network (CNN)
[4] 【国产自研芯片】为了测试AI暗光相机,工程师竟去密室拍NPC和小姐姐?_哔哩哔哩_bilibili
[5] 下书(一直在看):
首先这是Fed一月 memo
先说结论:
FOMC 维持利率在 0-0.25% 不变。且确定 3 月完全停止 QE,同时 3 月加息也是箭在弦上,基本会后声明皆符合市场预期,没有太多的意外。
Powell 记者会确实是偏一点点的小鹰派,但我也认为,Powell 的说法不至于拉升市场加息预期至 5次 、并拉升缩表预期至上半年,反而比较像是在强化加息 4 次之预期。
另外我个人觉得,一些中文媒体似乎误读了Powell 记者会的部分片段,下面 Allen 再进一步说明。
1. 3 月加息停止 QE 早已定价
本次会议 Fed 再次确认 3 月将准备第一次加息,并同时停止 QE。
Fed 也再次重申,货币政策是要支持美国经济达到充分就业、与通膨长期均值维持 2.0% 的两大目标。
这部分我想市场早已定价,这裡完全不会是问题,所以我们不讨论太多。
2.未来加息在每次会议都可能发生 (?)
Powell 的原文说法是:Won't Rule Out Hike Every Meeting.
但我有看到部分中文媒体写:不排除每次会议都加息的可能性。
上述我想或许是误读了 (还是其实是我自己误会中文的意思 ?)
我的理解是:Powell 是说加息在未来每场会议都可能发生,指的是“不会在特定月份才加息”,不是说每场都要加息。
Powell 说得很合理,经济本来就是动态的,加息本就不会侷限在什麽月份才启动,端看当时的经济状况而定。
我认为Powell 上述说法,并未延展今年加息预期至五次或更多,若有这种想法,那绝对是误读了。
3.更大规模的缩表?
Powell 在记者会上提到,Fed 需要更大规模的缩表,但请大家不要恐慌,因为我又觉得部份中文媒体过度解读了。
我认为Powell 说到的“更大规模缩表”,在思维上指的是:
因为当前 Fed 资产负债表高达 8.9 万美元,这是新冠疫情爆发之前的两倍大,显然在绝对规模上是非常巨大的。
而上一轮 2017-2019 年 Fed 缩减资产负债表,是自 4.4 万亿美元缩到 3.7 万亿美元停止,缩表的幅度大概是 15.9%,共缩减了约 7000 亿美元。
确实每次缩表的经济背景绝对是不一样的,所以幅度也绝对不会相同,但我们随便抓,假设本轮缩表将缩减 10% 资产负债表规模,那麽这也要降低 8900 亿美元,规模当然很大。
但我认为,不需要过度恐慌在“更大规模缩表”这几个字上。更重要的,我认为是“Fed 缩表的速率是多少?”
我相信缩表没问题,缩表太快才是问题,因为缩表速度若太快,将直接影响的会是美债殖利率升速、以及殖利率曲线的斜率。
这点Powell 也非常清楚,Powell 在记者会上也不断强调,联准会内部尚未具体讨论到一切缩表的进度,要等到 3 月再说。
4.缩表比较可能落在下半年
Powell 在记者会上说明,希望在加息至少一次之后,再来开会讨论缩表的事情,且委员会至少将讨论一次,才会做最终拍板。
更重要的,Powell 希望缩表的进程是有秩序的、是可被预见的过程。
从上述Powell 丢出的时间表看,我个人认为缩表将落在 2022 下半年,最快可能是 6 月份,因为在 3 月加息后,Fed 才会来讨论缩表。
我个人相信 Fed 现在内部早已在讨论缩表,但委员会显然尚未准备好来与市场沟通缩表的前瞻指引。
而缩表这麽大的事情,我个人认为 Fed 需要起次跟市场沟通 2 次,并把缩表规划说得非常清楚之后,才会开始进行,所以比较合理的缩表时间,估计将会落在下半年。
5.最大风险:高通膨
Powell 在记者会上,大概提到了 800 万次的“高通膨压力”,并认为目前美国通膨风险仍在上升阶段,但预计 2022 通膨还是会回落。
Powell 说明,目前美国通膨居高不下,主要仍是供应链所致,白话来说就是供需仍然失衡,且供给侧 (Supply Side) 改善的速度是低于预期。
Powell 强调,目前美国高通膨持续存在,而美国经济要的是长期扩张,所以若要长期扩张,物价势必需要保持稳定。
这边开始进入正题了,我认为这是本次会议的最重要核心,是让我体感上,觉得 Fed 鹰派的地方。我认为 Fed 承认自己落后给菲利浦曲线 (Behind the curve),简单而言,Fed 这次的加息速度大幅落后给通膨。
由于 Fed 在 2021 年对于通膨的误判,先前 Fed 在 2021 年认为通膨在年底就可望自然回落,但也就是因为这件事没有发生,反而通膨还更为严重,所以目前才有使用加息来追赶通膨的压力。但当前宏观环境看,通膨的压力是来自于缺工、供应链紧俏等问题,再加上拜登政府的大力推行财政刺激在那边推波助澜~
所以这一次的通膨是来自于实体经济上的供需失衡问题,并不是金融市场过度投机、企业超额投资等问题,我认为 Fed 在这次的通膨问题上,能做得空间非常有限。
这裡将产生一个不确定性的较大风险,就是 Fed 只能靠货币紧缩去压通膨预期,但实体经济的根本性通膨问题,还是没有获得解决。变成最终 Fed 只能再用更剧烈的紧缩政策,去引导通膨预期走低后,尝试来压低实际通膨率,所以这裡将让 Fed 的紧缩路径,存在著较大不确定性。
比较好的处理方式,应该是直接去解决实体经济上的缺工和供应链/例如我之前提到的塞港问题,让实际通膨率自己走低、而不是靠 Fed 挤压通膨预期之后去引导。
谁可以去把坐在白宫裡疑似患有阿兹海默的白髮老头一巴掌打醒...还我特~
结论:我个人认为 Fed 今年将加息四次,不至于加息五次,而加息四次之预期,相信市场应该已经定价;至于缩表,相信市场尚未定价,估计将落在 2022 下半年,最快可能是 6 月。
如果 Fed 今年加息五次,我会感到非常意外,因为这意味著 Fed 很可能在 2023 年底、2024 年初,就因为美国经济放缓太快而需要降息,Fed 这波操作就会变得非常韭。
最后说说股市的想法目前 Nasdaq 已经插水一段时日,抑制通胀是当务之急,而股市所谓修正才多久已出现V转。对通胀而言意义不大,修正数月才可能有帮助~所以我之前一直描述为“恐慌”。因此对白髮老头而言,怎麽做才有利于中期选举就很清晰了。
最好还是坚持认为市场或已定价加息四次之预期,但缩表预期则是尚未定价的观点。
配置上美股我倾向持有科技权值股,一些 Megacap 的估值我认为合理、前景确定性较高,而这样也可以让你的收益贴著 QQQ 走。
考虑到一堆成长股腰斩,我也愿意加仓接刀成长股,但建议佔据投资组合的比例,或许不要超过 15%,如果选股功力不错,这裡就会开始让你的收益拉开与 QQQ 之类的差距。
最后,我相信人人都会想在市场下跌的环境裡接刀,接刀不是不行,但若接刀失败,斩缆我建议速度要快,我个人不考虑价投的话一次斩缆的比例都是 50% 以上。
对不起,对于大多数中高端手机而言,高通骁龙888不仅不香而且还恶臭。
现在“卖手机=卖SoC”的路线已经走不通了,在SoC之外的参数配置同样重要。高通888芯片过高的售价,以及散热约束,对于中高端手机而言,进退两难。如果用了888,那么其他地方的体验就要大打折扣,如果不用888,因为高通的8系和7系的定位差距一直很大,只能用天玑1000+ 高通765G,那么又会在宣传中被人诟病。
现在高通把865重新马甲包装一下,用来填充原来7-8系的定位没什么不好,865的能耗比放到2021年仍然领先,性能也并不落伍。 不需要额外研发一个芯片,不需要再流片,就能抵御Exynos 和 MTK的进攻,有啥不好的。