# switch transformer
###### tags: `paper`
https://zhuanlan.zhihu.com/p/343954960
spilt unique weights on different devices:分配唯一一個weight給不同裝置(有時給A有時給B)(?)
sparse=expert=小型的MODEL=subset of the neural network weights
WEIGHT 跟 參數的差別 :此處指的參數是 HYPER PARAMETER
HYPER PARA:超參數是一個參數,其值用於控制學習過程。相反,其他參數的值(通常是節點權重)是通過訓練得出的 給定這些超參數,訓練算法(MODEL)會從數據中學習參數
所以SWITCH TRANSFORMER就像是給妳很多種不同訓練法(可能對名詞訓練比較好 又或著是對訓練動詞比較好)的專家 讓MODEL選一個最適合他的專家
conjectured:猜想
nontrivial gradients: a gradient having at least one nonzero variable.
使其不會有0
FFN :relating layers to each others 總結當前層 再傳到下一層layer的感覺
FLOPS:即每秒所執行的浮點運算次數,用來測量電腦運算速度或被用來估算電腦效能(像MIPS)(越大越強)但此論文中想讓其盡量少(盡量少計算次數)
在典型的Transformer模型的體系結構中,在自我關注層之後有一個密集的前饋網絡層。研究人員建議用一種稱為交換FFN層的新穎層替換此密集層
mitigate:減輕

為了讓token 不要overflow 把Capacity設高成1.5 但也因此多了3格空白格 造成浪費
accommodate:適應
Empirically憑經驗
# auxiliary loss:
fraction :分數
# negative log perplexity:
https://www.zhihu.com/question/58482430
perplexity: 困惑度 可能性的输出结果的个数 。perplexity 越小,表示语言模型越好
entropy(熵):
代表着根据信息的概率分布对其编码所需要的最短平均编码长度。
而编码长度表示随机变量能够呈现出的等可能性的状态数
scarce:稀少
# routing:
他们认为如果没有对比至少两个专家的能力,则无法学习路由。谷歌研究采用简化策略,只将 token 表征发送给单个专家。研究表明,这种简化策略保持了模型质量,降低了路由计算,并且性能更好。研究者将这种 k=1 的策略称为 Switch 层
exacerbate:加劇
如果用low precison的format則會在softmax過程中讓model 不穩定
hinder:阻礙
# logits:

# Selective precision
前言:以往都要求至少要2個專家 才能stable 但藉由selective precision 可讓其穩定
softmax之前 先把logits轉換成float32再softmax(丟給router當input),output再轉換回bfloat16再丟給其他層 所以只有router會用float32
# initilization:
把最初的transformer縮小10倍就可以得到很好的成績(stunning)
因為已經問世那麼久了還找的到有關初始化的優化配置來讓state of art model 更好
# dropout
dropout目前被視為一種強而有力來降低overfitting的方法
幾乎被用於目前可見的任何的深度學習模型
也implement於目前所有的deep learning toolbox裡
其實現非常的簡單
依據dropout rate建立一個mask
使用這個mask遮蓋forwarding data
backward時也同樣遮蓋gradients使其不被update

此論文處用:expert dropout dropout rate能更高
# design parallelism
increase dimension in tandem:傳統的transformer是透過串聯來增加尺寸來達到擴大(scale)
此篇論文提供很多種parallelism 策略 單純data parallelism or model or both data and model and so on
data:
最後會要summed
model par:
use when model not fit 但是因為要sequential的船過去每個model所以cost很重

swith transformer是用expert and data parrallelism 而switch transformer 1 trillion是用expert+ model+data parrallelism
但正常版會只想要expert+data 是因為 model太佔成本
(trade off點)下面有expert+ data的圖
會用到expert+data+model的情況是沒有半個expert fit on a machine(?)-> 每個expert都不是最適合這個machine的
# model fitting:
如果您的模型無法正確擬合數據,則其產生的結果將不夠準確,無法用於實際決策。正確擬合的模型具有超參數,可以捕獲已知變量和目標變量之間的複雜關係,從而可以找到相關的見解或做出準確的預測
擬合是一個自動過程,可確保您的機器學習模型具有最適合以高精度解決特定實際業務問題的各個參數。
# 心得:
trade off: more memoery use while quicker the training speed
feed forward layer:原本的transformer只有一個就是只給一個專家去決定該歸類去哪處的感覺 switch transformer比較像是有很多不同領域的專家(nouns,verbs...) 當你遇到某個詞 就交給那個領域的專家去分類 (舉例 verbs那些 實際上不需要特別分類出這些)
主要是讓model學習遇到哪種詞要交給哪個專家
hard-routing :no need data transfer between expert and all indepent
shard:分片
# parallelism

# 重要:distilled
可維持並蒸餾 讓我們這些凡人能拿來用
https://chtseng.wordpress.com/2020/05/12/%E7%9F%A5%E8%AD%98%E8%92%B8%E9%A4%BE-knowledgedistillation/
此處是拿非expert layer的權重去初始化而不是拿專家層的權重 因為非專家層跟要被訓練得模型flop一樣所以dimension相同而且如果是在專家層 則他的初始化都是訓練過的parameters(從已經學過的開始學 會學得比較快但比較不好)
初始化比較像跟老師學習的工具是甚麼
https://zhuanlan.zhihu.com/p/92275821
知識蒸餾:
一旦複雜網絡模型訓練完成,我們便可以用另一種訓練方法:「蒸餾」,把我們需要配置在應用端的縮小模型從複雜模型中提取出來。「蒸餾」的難點在於如何縮減網絡結構但是把網絡中的知識保留下來。
由teacher模型先訓練好權重後,再抽取(蒸餾)精華作為student模型的訓練教材,這個晢取出的精華是指訓練好的參數權重
保持每個 token 的 FLOPS 不變時,擁有更多參數(專家)可提高訓練速度。
30% performance improvement=保留蒸餾前的30趴
T5->switch transformer的進步 保留了30趴
# future work:
multi-modal networks.??