大模型
GPT family (Generative Pre-trained Transformer) :GPT-4 Technical Report
LLaMA-family: Llama 2: Open foundation and fine-tuned chat models.
other latest public LLMs (e.g., OPT, BLOOM, Mistral, DeciLM , Baichuan , GLM)
Transformer
自注意力機制
transfomer基于self-attetion機制構建(允許模型在預測時去權衡輸入數據的不同部分的重要性):Attention is all you need
self-attention數學描述:
input X=[x1,x2,......xn]
X經過線性變化得到 Q K V
得分函數:f(Q,KV) = softmax(Q*K^T/(dim(K)^(1/2)))*V
這種機制,允許模型 聚焦于 和輸出的每個部分對應的輸入部分 , 從而能夠捕獲輸入不同部分之間復雜的依賴關系(忽略它們之間的距離)
其他組件
Feed-Forward Network (FFN) 是transformer的另一個組件,存在于transfomer的每一層
FFN一般組成:兩個線性變化,中間夾一個非線性激活函數
FFN數學描述:f(x) = max(0, x*W1 + b1)*W2 + b2? (W b 均為FFN的可學習參數)
FFN 和 self_attetion 結合,使模型能捕捉 范圍更大的上下文 和 不同部分的細微差別,性能更高
multi-head attention (MHA) 將輸入的不同部分進行聚合,之后FFN對每個聚合結果獨立的處理(這是一種并行處理,效率較高,也導致 計算負載 內存占用 隨 輸入長度 和 模型深度的 增加 而增加)。
MHA 使模型能夠在不同的表示空間中,關注輸入序列的不同的部分
position encoding 包含了 輸入序列中的每個 token(標記)的位置信息
自回歸編碼
LLM推理通常采用 auto-regressive decoding approach(自回歸解碼),用于保證生成新文本的整體性
自回歸編碼,總是根據已生成的結果來生成新結果,保證語義的高度連貫性。
GPU加速原理
多核并行
GPU并行處理設計,相比CPU的順序處理設計,更適合運行大模型
GPU包含數千個內核,這些內核可同時處理多個任務,適合 矩陣 和 向量運算
GPU 包含 一組流式處理器(SMs),每個處理器又包含一組核心,這組核心共享一個公共的指令單元,并且每個核心可獨立執行線程。每個處理器中有一個共享存儲器(SRAM),用于線程之間的數據同步和交換。
GPU的高帶寬存儲器(HBM) 用于計算過程中對存儲器更快的數據傳輸和訪問
最新的GPU結構如,NVIDIA的 Ampere 、Hopper 性能更強大:
improved memory bandwidth and capacity 改進內存帶寬和容量
higher floating-point operations per second (FLOPS), 更快的每秒浮點運算
specialized mixed-precision computing units (i.e., Tensor Core) 專業的混合精度計算單元
more efficient utilization of resources 更高效的資源利用率
精度轉換
通過支持各種精度格式,允許用戶在計算速度和精度之間進行權衡:
FP32 (32-bit floating point),?
TF32 (TensorFloat-32),?
FP16 (16-bit floating point),?
BF16 (Brain Floating Point),?
INT8/INT4
細粒度控制
GPU的編程語言:NVIDIA的CUDA? AMD的ROCm
使用GPU的編程語言,可以實現對GPU的線程級別控制,能最大限度的利用GPU的并行性
其他硬件
CPUs?
mobile and edge devices 移動和邊緣設備
ASICs
specialized accelerators such as TPUs , FPGAs 專用加速器
?AI chips (e.g., Apple M2 Ultra, AWS Inferentia, SambaNova, Cerebras , Graphcore IPUs). AI芯片
推理優化
LLM推理優化目標
在不影響模型準確性的情況下,最小化響應時間,低延遲、快速響應
在不犧牲性能的情況下,減少內存占用,主要用于模型私有化部署
支持同時處理多個請求
最大限度的利用硬件資源
權衡模型的準確率和推理效率
LLM的推理優化方法
模型級別優化
非自回歸編碼(Non-autoregressive decoding雖能提速,但性能損失較明顯);
Speculative decoding(可提速);
Early exiting(提前退出);
Cascade inference(規模自適應);
Configuration downsizing(降低模型參數量);
Attention simplification(注意力稀疏化);
Activation sharing:(減少重復計算);
Conditional computing(使用必要的局部參數推理);
Recurrent unit:(考慮RNN代替transformer);
模型壓縮(不損失性能的前提下,壓縮模型);
Knowledge Distillation(用“老師模型”蒸餾出一個“學生模型”);
Network pruning:(模型修剪);
硬件級別優化
模型量化(QAT訓練量化,PTQ推理量化);
Model parallelism:(模型并行);
Decentralized inference(去中心化推理);
提高吞吐量(通過高效的內存管理,通過調度算法,降低GPU閑置時間);
Kernel fusion:(內核融合,類似層壓縮);
Tailored attention(專門為注意力,定制開發GPU內核);
Sampling optimization:(采樣技術,有可能會降低模型性能);
Variable sequence length:(輸入序列長度對齊,并行計算);
Automatic compilation(開發新的編譯器,用來進一步,提升對硬件的利用效率);
memory management(內存管理)
request scheduling(請求調度)
大模型框架
大模型發展方向
硬件加速
算法加速(編碼算法優化)
Long Context/Sequence Scenarios Optimization.
新結構研發(替代transfomer)
Exploration of Deployment in Complex Environments(邊緣部署)
Automatic Adaptation to Specific Requirements.(任務自適應)