记录科研过程中学习的一些内容

Self-Attention & Transformer

李宏毅老师的课程:

一些博客:

Four kinds of parallelism

Flash Attention

原论文,按照版本升序

博客:

Sequence Parallelism

一些论文:

博客:

Distributed System

Swin Transformer

论文:

博客:

Diffusion

论文:

博客:

Sora技术报告:

DiTFastAttn

论文:

xFusion

论文:

一些问题

不同的Normalization

BN是在一个batch内,针对每一个特征做归一化;LN是指对于每个样本做归一化;IN是指对于通道内的每个特征做归一化;GN是指对通道内的一组特征做归一化

对于一个y = [batch_size, channel_num, width, height] = [N, C, W, H]的张量:

  • BN对于批次中的每一个通道作归一化,即:

    μc=1NHWn=1Nh=1Hw=1Wynchwσc2=1NHWn=1Nh=1Hw=1W(ynchwμc)2ynchw=γ(ynchwμcσc)+β\begin{align*} \mu_{c} &= \frac{1}{NHW}\sum\limits_{n=1}^{N}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}y_{nchw} \\ \sigma_{c}^{2} &= \frac{1}{NHW}\sum\limits_{n=1}^{N}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}(y_{nchw} - \mu_{c})^{2} \\ y'_{nchw} &= \gamma(\frac{y_{nchw} - \mu_{c}}{\sigma_{c}}) + \beta \end{align*}

  • LN为对批次中每一个样本做归一化:

    μn=1CHWc=1Ch=1Hw=1Wynchwσn2=1CHWc=1Ch=1Hw=1W(ynchwμn)2ynchw=γ(ynchwμnσn)+β\begin{align*} \mu_{n} &= \frac{1}{CHW}\sum\limits_{c=1}^{C}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}y_{nchw} \\ \sigma_{n}^{2} &= \frac{1}{CHW}\sum\limits_{c=1}^{C}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}(y_{nchw} - \mu_{n})^{2} \\ y'_{nchw} &= \gamma(\frac{y_{nchw} - \mu_{n}}{\sigma_{n}}) + \beta \end{align*}

  • IN为对样本的特征做归一化:

    μnc=1HWh=1Hw=1Wynchwσnc2=1HWh=1Hw=1W(ynchwμnc)2ynchw=γ(ynchwμncσnc)+β\begin{align*} \mu_{nc} &= \frac{1}{HW}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}y_{nchw} \\ \sigma_{nc}^{2} &= \frac{1}{HW}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}(y_{nchw} - \mu_{nc})^{2} \\ y'_{nchw} &= \gamma(\frac{y_{nchw} - \mu_{nc}}{\sigma_{nc}}) + \beta \end{align*}

  • GN是对样本的一组特征做归一化:
    首先将[N, C, H, W]划分为[N, G, S, H, W],之后:

    μng=1SHWs=1Sh=1Hw=1Wyngshwσng2=1SHWs=1Sh=1Hw=1W(yngshwμng)2yngshw=γ(yngshwμngσng)+β\begin{align*} \mu_{ng} &= \frac{1}{SHW}\sum\limits_{s=1}^{S}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}y_{ngshw} \\ \sigma_{ng}^{2} &= \frac{1}{SHW}\sum\limits_{s=1}^{S}\sum\limits_{h=1}^{H}\sum\limits_{w=1}^{W}(y_{ngshw} - \mu_{ng})^{2} \\ y'_{ngshw} &= \gamma(\frac{y_{ngshw} - \mu_{ng}}{\sigma_{ng}}) + \beta \end{align*}

    G=1G = 1的时候,GN退化为LN;当G=CG = C的时候,GN退化为IN
    一般来说,LN更适用于数据量小、批大小更小的时候