电竞比分网-中国电竞赛事及体育赛事平台

分享

大語言模型技術(shù)點(diǎn)總結(jié)

 netouch 2025-02-12 發(fā)布于北京

本文將開源文本大模型中的LLaMA系列和Qwen系列的各個版本技術(shù)點(diǎn)對比總結(jié)成表格形式,方便查看和閱覽,然后基于一些共性的技術(shù)點(diǎn)進(jìn)行詳細(xì)介紹。

一、LLaMA

1、模型技術(shù)點(diǎn)對比總結(jié)

llama系列是Meta開源的文本大模型,采用Transformer Decoder-Only架構(gòu),通過閱讀幾個版本的技術(shù)報告,總結(jié)一些核心技術(shù)數(shù)據(jù)選取如下表:

2、模型架構(gòu)與訓(xùn)練

1)LLaMA模型架構(gòu),LLaMA1LLaMA2LLaMA3在模型架構(gòu)上幾乎沒有變化。模型架構(gòu)圖如下:

LLaMA Model Architecture

2)LLaMA2從預(yù)訓(xùn)練到Chat訓(xùn)練全流程,如下圖:

Overall Training of LLaMA 2-Chat

3)LLaMA3的預(yù)訓(xùn)練和后訓(xùn)練流程

Pre-Training of LLaMA 3

Post-Training of LLaMA 3 (Rejection Sampling, SFT, DPO)

二、Qwen

qwen系列是國內(nèi)開源比較完整,商業(yè)和微調(diào)都比較常用的文本大模型,采用Transformer Decoder-Only架構(gòu),next-token prediction訓(xùn)練,總結(jié)幾個系列的核心技術(shù)數(shù)據(jù):

三、 技術(shù)點(diǎn)一覽

3.1 量化方法

大模型壓縮技術(shù):剪枝、知識蒸餾、量化、低秩分解

模型量化是指以較低的推理精度損失將連續(xù)取值(通常為float32或者大量可能的離散值)的浮點(diǎn)型權(quán)重近似為有限多個離散值(通常為int8)的過程。量化對象為模型的參數(shù)(embedding, 權(quán)重weight, 輸入input, 輸出output),量化形式包括線性量化和非線性量化。

量化分類:

1)QAT(量化感知訓(xùn)練,Quantization Aware Training),在模型訓(xùn)練過程中加入偽量化算子通過訓(xùn)練時統(tǒng)計輸入輸出的數(shù)據(jù)范圍可以提升量化后模型的精度,適用于對模型精度要求較高的場景,讓大模型在訓(xùn)練過程中就適應(yīng)低精度的表示,增強(qiáng)其處理量化引起的精度損失的能力,使它在量化過程之后保持更高性能。

2)QAF(量化感知微調(diào),Quantization-Aware Fine-tuning),將量化感知訓(xùn)練放在微調(diào)階段里,在模型壓縮和保持性能之間取得平衡。

3)PTQ(訓(xùn)練后量化,Post Training Quantization),在大模型訓(xùn)練完成之后進(jìn)行量化,少量校準(zhǔn)數(shù)據(jù),適用于追求高易用性和缺乏訓(xùn)練資源的場景。減少大模型的存儲和計算復(fù)雜度,這種方式精度損失略大。

參考:Training with quantization noise for extreme model compression

3.2 RoPE

針對所有自學(xué)遇到困難的同學(xué)們,我?guī)痛蠹蚁到y(tǒng)梳理大模型學(xué)習(xí)脈絡(luò),將這份 LLM大模型資料 分享出來:包括LLM大模型書籍、640套大模型行業(yè)報告、LLM大模型學(xué)習(xí)視頻、LLM大模型學(xué)習(xí)路線、開源大模型學(xué)習(xí)教程等,

3.3 4D并行

4D并行為4種并行手段一起使用:TP,CP,PP,DP

  • DP:數(shù)據(jù)并行,通過數(shù)據(jù)集切分成不同的GPU分別訓(xùn)練,每個GPU上都有一個完整模型副本,反向傳播之后,模型梯度進(jìn)行聚合,在不同GPU上模型參數(shù)保持同步。實(shí)現(xiàn)方式:PyTorch DDP

  • TP:張量并行,是模型并行的一種形式,是在一個操作中進(jìn)行并行計算,比如矩陣乘法,模型層內(nèi)并行。實(shí)現(xiàn):Megatron-LM(1D)

  • PP:流水線并行,是模型并行的一種形式,將模型按層分割成若干塊,分到不同的GPU上,是在模型各層之間進(jìn)行并行計算。缺點(diǎn):后一個階段需要等前一個階段執(zhí)行完畢,訓(xùn)練設(shè)備容易出現(xiàn)空閑狀態(tài)。

  • CP:序列(上下文)并行,實(shí)現(xiàn):Megatron-LM

LLaMA3:Illustration of 4D parallelism

3.4 Attention

a) Transformer中的三種注意力機(jī)制:Self Attention, Cross Attention, Causal Masked Attention

編碼器中的Attention為Self Attention(自注意力),q, k, v三個線性向量都是來自于同一個輸入query,是針對同一個序列,使用縮放點(diǎn)積注意力(Scaled Dot-Product Attention)計算注意力分?jǐn)?shù),從而對值向量進(jìn)行加權(quán)求和,得到輸入序列每個token的加權(quán)表示。

解碼器中的接受編碼器結(jié)果的Cross Attention(交叉注意力),q來自解碼器已經(jīng)生成的序列,k, v來自編碼器輸出序列,實(shí)現(xiàn)跨序列交互。

解碼器最下方的Causal Masked Attention(因果注意力),q, k, v均來自已經(jīng)生成的序列,并且使用掩碼遮掩當(dāng)前位置之后的序列內(nèi)容,在生成過程中不會受到未來信息的影響。

b) Transformer的三種注意力的多頭形式(也是Transformer在大模型中實(shí)際使用的)

  • 編碼器輸入序列通過Multi-Head Self Attention(多頭自注意力)計算注意力權(quán)重。

  • 編碼器和解碼器兩個序列通過Multi-Head Cross Attention(多頭交叉注意力)進(jìn)行注意力轉(zhuǎn)移。

  • 解碼器的單個序列通過Multi-Head Causal Self-Attention(多頭因果自注意力)進(jìn)行注意力計算。

MHA(Multi-Head Attention):多頭注意力,多個注意力頭并行運(yùn)行,每個頭都會獨(dú)立計算注意力權(quán)重和輸出,然后將所有頭輸出拼接起來(加權(quán)平均)得到最終輸出。

#### Multi head attention  代碼實(shí)現(xiàn):
import torch
import torch.nn as nn

class MultiHeadAttention(nn.Module):
    def __init__(self, embed_dim, num_heads):
        super(MultiHeadAttention, self).__init__()
        self.num_heads = num_heads
        self.head_dim = embed_dim // num_heads
        self.wq = nn.Linear(embed_dim, embed_dim)
        self.wk = nn.Linear(embed_dim, embed_dim)
        self.wv = nn.Linear(embed_dim, embed_dim)
        self.wo = nn.Linear(embed_dim, embed_dim)

    def split(self, hidden):
        batch_size = hidden.shape[0]
        x = hidden.view(batch_size, -1, self.num_heads, self.head_dim).transpose(1, 2)
        return x

    def forward(self, hidden_state, mask=None):
        batch_size = hidden_states.size(0)
        # 線性變換
        q, k, v = self.wq(hidden_states), self.wk(hidden_states), self.wv(hidden_states)
        # 多頭切分
        q, k, v = self.split(q), self.split(k), self.split(v)
        # 注意力計算
        scores = torch.matmul(q, k.transpose(-2, -1)) / torch.sqrt(torch.tensor(self.head_dim, dtype=torch.float32))
        if mask is not None:
            scores = scores.masked_fill(mask == 0, float('-inf'))
        attention = torch.softmax(scores, dim=-1)   # 權(quán)重轉(zhuǎn)換
        output = torch.matmul(attention, v)  # 注意力權(quán)重與v加權(quán)求和
        # 拼接多頭
        output = output.transpose(1, 2).contiguout().view(batch_size, -1, self.num_heads * self.head_dim)
        # 線性變換
        output = self.wo(output)
        return output

x = torch.ones(3, 6, 32)
atten = MultiHeadAttention(32, 8)
y = atten(x)
print(y.shape)

c) 對KV Cache的優(yōu)化:MQA、GQA、MLA

  • KV Cache:大模型在next token遞歸生成時,新預(yù)測的token不會影響之前的k, v計算,將這部分計算結(jié)果存儲下來就是KV Cache. 它可以提升計算效率,但是卻需要額外的顯存占用,因此也需要不斷降低存儲節(jié)省空間。transformers庫generate函數(shù)已經(jīng)將KVCache封裝。

  • MQA(Multi-Query Attention):所有Attention Head共享同一個K、V,可以講KV Cache減少到原來的1/h,Attention的參數(shù)量減少了將近一半,為了模型總參數(shù)量不變,通常相應(yīng)增加FFN/GLU規(guī)模,彌補(bǔ)一部分效果損失,目前PaLM、StarCoder、Gemini等大模型在使用。

  • GQA(Grouped-Query Attention):為MHA與MQA之間的過渡版本,將所有Head分為g個組(g可以整除h),每組共享同一對K、V,當(dāng)g=h時就是MHA,g=1時就是MQA,當(dāng)1<g<h時,它只是將KV Cache壓縮到g/h,壓縮率不如MQA,但效果更有保證。目前LLaMA2-70B以及LLaMA3全系列、DeepSeek-V1、ChatGLM2、ChatGLM3等

  • MLA(Multi-Head Latent Attention):對KV Cache進(jìn)行低秩分解,KV Cache存儲低秩投影之后的K、V,并對KV進(jìn)行整合變換。

參考:

MHA、MQA、GQA的區(qū)別 - 小飛俠 (http://www./index.php/archives/513/)

緩存與效果的極限拉扯:從MHA、MQA、GQA到MLA - 科學(xué)空間|Scientific Spaces(https:///archives/10091)

3.5 對比Norm方法:BatchNorm, LayerNorm, RMSNorm

深度學(xué)習(xí)中,歸一化是常用的穩(wěn)定訓(xùn)練的手段,CV中常用BatchNorm,Transformer常用LayerNorm,RMSNorm是LayerNorm的一個變體。

BatchNorm是對整個batch樣本內(nèi)的每個特征做歸一化,消除了不同特征之間的大小關(guān)系,同時保留不同樣本間的大小關(guān)系。CV常用是因為每個通道c可看作一個特征,BN可以把各通道特征圖的數(shù)量級調(diào)整到差不多,同時保持不同圖片相同通道特征圖間的相對大小關(guān)系。

LayerNorm是對每個樣本的所有特征做歸一化,消除了不同樣本間的大小關(guān)系,同時保留一個樣本內(nèi)不同特征之間的大小關(guān)系。LN更適合NLP領(lǐng)域,保留d維特征(token)在各維度之間的大小關(guān)系。

RMSNorm為了節(jié)省LayerNorm的計算量而提出,可以節(jié)省7%~64%的運(yùn)算。不需要同時計算均值和方差兩個統(tǒng)計量,只需要計算均方根Root Mean Square一個統(tǒng)計量。

RMSNorm計算公式

## LLaMA源碼中實(shí)現(xiàn)的RMSNorm
class LlamaRMSNorm(nn.Module):
    def __init__(self, hidden_size, eps=1e-6):
        '''
        LlamaRMSNorm is equivalent to T5LayerNorm
        '''
        super().__init__()
        self.weight = nn.Parameter(torch.ones(hidden_size))
        self.variance_epsilon = eps

    def forward(self, hidden_states):
        input_dtype = hidden_states.dtype
        hidden_states = hidden_states.to(torch.float32)
        variance = hidden_states.pow(2).mean(-1, keepdim=True)
        hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon)
        return self.weight * hidden_states.to(input_dtype)

3.6 Flash Attention

3.7 強(qiáng)化學(xué)習(xí)PPO、DPO

在大模型時代,我們?nèi)绾斡行У娜W(xué)習(xí)大模型?

現(xiàn)如今大模型崗位需求越來越大,但是相關(guān)崗位人才難求,薪資持續(xù)走高,AI運(yùn)營薪資平均值約18457元,AI工程師薪資平均值約37336元,大模型算法薪資平均值約39607元。
在這里插入圖片描述

掌握大模型技術(shù)你還能擁有更多可能性

· 成為一名全棧大模型工程師,包括Prompt,LangChain,LoRA等技術(shù)開發(fā)、運(yùn)營、產(chǎn)品等方向全棧工程;

· 能夠擁有模型二次訓(xùn)練和微調(diào)能力,帶領(lǐng)大家完成智能對話、文生圖等熱門應(yīng)用;

· 薪資上浮10%-20%,覆蓋更多高薪崗位,這是一個高需求、高待遇的熱門方向和領(lǐng)域;

· 更優(yōu)質(zhì)的項目可以為未來創(chuàng)新創(chuàng)業(yè)提供基石。

可能大家都想學(xué)習(xí)AI大模型技術(shù),也_想通過這項技能真正達(dá)到升職加薪,就業(yè)或是副業(yè)的目的,但是不知道該如何開始學(xué)習(xí),因為網(wǎng)上的資料太多太雜亂了,如果不能系統(tǒng)的學(xué)習(xí)就相當(dāng)于是白學(xué)。為了讓大家少走彎路,少碰壁,這里我直接把都打包整理好,希望能夠真正幫助到大家_。

一、AGI大模型系統(tǒng)學(xué)習(xí)路線

很多人學(xué)習(xí)大模型的時候沒有方向,東學(xué)一點(diǎn)西學(xué)一點(diǎn),像只無頭蒼蠅亂撞,下面是我整理好的一套完整的學(xué)習(xí)路線,希望能夠幫助到你們學(xué)習(xí)AI大模型。

在這里插入圖片描述

第一階段: 從大模型系統(tǒng)設(shè)計入手,講解大模型的主要方法;

第二階段: 在通過大模型提示詞工程從Prompts角度入手更好發(fā)揮模型的作用;

第三階段: 大模型平臺應(yīng)用開發(fā)借助阿里云PAI平臺構(gòu)建電商領(lǐng)域虛擬試衣系統(tǒng);

第四階段: 大模型知識庫應(yīng)用開發(fā)以LangChain框架為例,構(gòu)建物流行業(yè)咨詢智能問答系統(tǒng);

第五階段: 大模型微調(diào)開發(fā)借助以大健康、新零售、新媒體領(lǐng)域構(gòu)建適合當(dāng)前領(lǐng)域大模型;

第六階段: 以SD多模態(tài)大模型為主,搭建了文生圖小程序案例;

第七階段: 以大模型平臺應(yīng)用與開發(fā)為主,通過星火大模型,文心大模型等成熟大模型構(gòu)建大模型行業(yè)應(yīng)用。

二、640套AI大模型報告合集

這套包含640份報告的合集,涵蓋了AI大模型的理論研究、技術(shù)實(shí)現(xiàn)、行業(yè)應(yīng)用等多個方面。無論您是科研人員、工程師,還是對AI大模型感興趣的愛好者,這套報告合集都將為您提供寶貴的信息和啟示。

在這里插入圖片描述

三、AI大模型經(jīng)典PDF書籍

隨著人工智能技術(shù)的飛速發(fā)展,AI大模型已經(jīng)成為了當(dāng)今科技領(lǐng)域的一大熱點(diǎn)。這些大型預(yù)訓(xùn)練模型,如GPT-3、BERT、XLNet等,以其強(qiáng)大的語言理解和生成能力,正在改變我們對人工智能的認(rèn)識。 那以下這些PDF籍就是非常不錯的學(xué)習(xí)資源。

在這里插入圖片描述

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳

四、AI大模型各大場景實(shí)戰(zhàn)案例

在這里插入圖片描述

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多