文章目录
怎么理解transformer中的attention?
Transformer中的attention机制是其最核心和创新之处。它通过使用attention来实现序列到序列的建模,取代了RNN和CNN中的循环或卷积操作。
Transformer中的attention通常包含以下几个要点:
- 输入序列经过线性变换生成Query,Key和Value。Query通常对应当前输入,Key和Value对应整个输入序列。
- 计算Query与Key的点积相似度,通过Softmax归一化得到权重矩阵。这表示Query与Key中的每个位置匹配的程度。
- 将权重矩阵与Value矩阵相乘,对Value中的每个位置进行加权求和,就得到了Query对应的注意力表示。
- 对输入序列每一个位置分别计算Query,重复上述操作,就能得到整个序列的注意力表示。
- 将注意力表示与输入序列拼接后输入到FFN中,然后输出。
- Transformer一般会使用Multi-Head Attention,即进行多次注意力计算,得到多个注意力子空间表示,然后拼接在一起输入到FFN中。
- Transformer的Encoder通过计算序列内部的注意力;Decoder则同时计算 Encoder-Decoder 注意力和解码序列自身注意力。
总的来说,Transformer使用attention机制建模序列之间的全局依赖关系,取代了RNN和CNN中的局部建模,使其对长程依赖更为敏感,能够有效学习语义信息。这是它相比于传统模型更加强大的原因之一。
LLM中的zero shot, one shot, few shot分别什么含义
LLM(Large Language Model)中的零样本(zero shot)、一样本(one shot)和少样本(few shot)指的是针对下游任务进行微调时使用的训练样本数量不同:
- 零样本(Zero-shot):不使用任何针对下游任务的训练样本,完全通过预训练的参数来进行推理,利用预训练的知识迁移来完成新任务。
- 一样本(One-shot):只使用一个或极少量的样本来微调,比如一个示例,快速让模型适应新任务。
- 少样本(Few-shot):使用的针对新任务的训练样本较少,通常在5到100个样本,来快速适应新任务。
与全量数据集 Fine-tuning 不同,零样本、一样本和少样本学习更依赖于预训练模型本身学到的知识,通过很少甚至零样本来触发模型完成新任务。
这些技术使得LLM无需大量标注新样本就可以快速适配到新任务上,减少训练成本和人力标注量,是LLM强大推理和迁移能力的关键。它们在问答、对话、文本生成等任务中应用广泛。
硬件篇
AI时代如何衡量算力?
在AI时代,衡量算力有以下几个重要的指标:
- FLOPS
浮点运算每秒数(FLoating point Operations Per Second),反映处理器的浮点计算速度,是传统衡量算力的指标。但仅关注计算量,不完整。 - TOPS
每秒AI算力(Trillions of Operations Per Second),专门衡量AI算法运算量的指标, focal point是运算量而非速度。 - Watt
算力功耗,反映计算效率。同等算力下,功耗越低越好。 - FPS
每秒处理帧数(Frames Per Second),反映处理连续数据的能力。如处理视频等需要持续高吞吐量的任务。 - Latency
延迟,执行任务从输入到输出的耗时,反应实时响应能力。如自动驾驶需要低延迟。 - Throughput
总体吞吐量,反映系统整体执行复杂任务的能力。吞吐量越高越好。 - 成本效率
算力产出与成本支出的比值,最经济的算力解决方案。 - 软硬兼斟
算力来源方面,要注意软件和硬件的协同,如AI芯片、框架等。
总体而言,要从多角度综合考量,挑选能够最好支撑AI项目需求的算力指标和方案。
MAC和FMAC的数学公式?以及对比?
MAC(Multiply-Accumulate Operation) 和 FMAC(Fused Multiply-Add Operation)的数学公式如下:
MAC:
y += x * w
其中x和w是两个乘数,y是累加器。这个公式表示将x和w的乘积累加到y中。
FMAC:
z = x * y + z
其中x,y,z都是浮点数。这个公式将一个乘法运算和一个加法运算进行了融合。
相比MAC,FMAC的优势在于:
-
减少了读取内存的次数。MAC需要读取x,w,y这3个操作数,而FMAC只需要读取x,y,z这3个操作数。
-
减少了存储中间结果的需要。MAC计算得到x*w后的结果需要暂存,而FMAC直接利用了这个中间结果。
-
减少了对浮点单位的轮换次数。
-
可以并行执行乘法和加法,提高指令流水线的效率。
-
计算更加精确,避免了暂存中间结果时的数值损失。
-
指令数减少,降低了指令缓存的压力。
-
寄存器操作次数减少,降低了寄存器堆积的压力。
综上,FMAC通过合并两个基本运算提高了计算效率,是评价GPU算力的重要指标。
FMAC(Fused Multiply-Add)和MAC(Multiply-Accumulate)都是用于评估GPU浮点运算性能的重要指标,其主要区别如下:
- 计算操作不同
- MAC:进行乘法运算和加法运算的分开计算。通常表示为y += x * w。
- FMAC:将乘法和加法计算融合为一个操作。通常表示为z = x * y + z。
- 计算效率不同
- MAC:分开执行乘法和加法,需要独立调用这两个指令,计算效率较低。
- FMAC:合并为一个指令,减少指令数,提高计算效率。
- 内存访问不同
- MAC:需要读取3个操作数x、w、y,写入中间结果,内存访问频繁。
- FMAC:只访问3个操作数x、y、z,内存访问次数减少。
- 中间结果不同
-
MAC:需要暂存x*w的中间结果,存在精度损失。
-
FMAC:直接利用中间结果,计算更加精确。
- 指令流水线不同
- MAC:两个指令难以并行,流水线不均衡。
- FMAC:一个指令,易于流水线并行优化。
- 寄存器压力不同
- MAC:需要额外寄存器存储中间结果,增加寄存器堆积压力。
- FMAC:合并计算,减少寄存器操作次数。
综上,FMAC在计算性能、效率、准确性和并行性上都优于MAC,是评价GPU算力更合适的指标。