---
# System prepended metadata

title: AI . FREE Team 讀書會 - 2023/05/13
tags: [AIfreeteam]

---

# AI . FREE Team 讀書會 - 2023/05/13
###### tags: `AIfreeteam`

## 第一個主題：Distillation
* 講者：Ovien

### [原始文章連結](https://arxiv.org/abs/1909.10351)

---
![](https://hackmd.io/_uploads/BJ8lWfpVh.png)
Bert 蒸餾的方式
NLP


化學工廠，Distillation<註1>，這種跟化學有關的東西
NN 模型，投影變成小的，變小的時候還能保有能力

註1：Distillation，物質揮發性（volatility）的差異，將液體經過加熱得到充分的熱能，在它的沸點完全汽化，然後經由冷凝管冷卻，凝結成為液體，而達到分離收集的目的。

Knowledge Distillation - 較為平衡

Quantization - the procession of Model 64 bit to Model 32/16/8 bit 大小有限

Pruning 加速有限

-> 我們不希望跟原本效能差太多


Large Language Model ^_^

知識蒸餾盡可能去拉近學生和老師的距離
Two Stage Distilling Strategy - 依開始做Pretrain的動作就會先做General Distillation(MLM Task)-克漏字猜測，第二階段就是要做下游任務，如電影影評分析，先將Teacher BERT做Finetune的動作，第三步才會是第二步的蒸餾，會把Teacher和Student Output，並且進行第二步的Distullation，理想上你的TinyBert會跟第二次TinyBERT分布接近，所以會變成速度變快，大小變小的優化方案

## Distilling Recipe
這篇針對Transformer的架構進行，所以裡面會有Attention，Asi是student，At是teacher，這篇論文是用MSE，但其實如果你可以計算有多接近可以換公式進行計算，接下來Hidden State是隱藏層的Output，那為什麼Hidden Student為什麼要乘以Wh，因為惟度要正規化，並在Distillation時模型也會進行Wh的學習
Ce是Cross entrophy


## Data Augmentation
我們把疾病遮罩，BERT會進行猜測
![](https://hackmd.io/_uploads/SyaF4zpNn.png)
World Piece的動作，將一個單字切成不同段落
如ps ##y ##chi ##at ##ric
丟到Glove的字典來進行查詢，並進行猜測

## 成果
GLEU Experiment Result -很常用的語言任務測驗
模型縮小幾倍，CPU就快幾倍
性能並無差太多，速度又可以變快


## 趨勢
![](https://hackmd.io/_uploads/H1hu8fa4n.png)
2020年非常關鍵，因為有ALBERT輕量化的BERT，那時候流行的是直剪，並砍掉一點點的加速笑過
2021年，大放異彩，大家都在追求Production和客製化

目前復現時刻作用到ChatGPT上面，並追求產品

## 推薦
![](https://hackmd.io/_uploads/Bk-_DM6V2.png)

Pytorch related Framework
- Huawei HUAWEI-noah
- HFL哈工大迅飛聯合實驗室 TextBrewer

Knowledge Distillation (KD) 兼具加速跟大小 → balance類型，漸為主流
Quantization 加速有效，大小有限
Pruning 之剪對於模型壓縮非常好，加速有限

BERT → Large language model

Masking Language Model 克漏字的猜測
tinyBERT學習大BERT的東西
第一階段：
第二階段：對 Teacher Bert 做 Finetune
第三階度：第 2 次的蒸餾

Distilling Recipe
為什麼要蒸餾？
從原本的大BERT變小，所有的參數都變小
S → Student
T → teacher

本篇論文採用MSE估計誤差，但是其他方法也可用

Hidden student 為什麼中間要乘上W矩陣
使Student和teacher矩陣可以相乘

因為維度要正規化?

Hidden State 要 x Wh 是因為要能夠運算

CE 就是 Cross Entropy 

Data Augmentation
word piece ps##y


MLM
![](https://hackmd.io/_uploads/H1AU4GT4n.png)

## Performance
FLOPs 每秒運算浮點數
GLEU
模型縮小幾倍，CPU就是快幾遍

## Ablation Study 消融實驗
- TD的作用比GD來得更重要
- 有無DA對於性能影響不大
- Tranformer layer影響最大

## Toolkit
1. HUAWEI
    1 Stage Distilling
    Data Argumaentation
    2 Stage Distilling → 目前不太成熟，一陣子沒有維護
2. TextBrewer
   1 Stage Distilling
    Data Argumaentation → x
    2 Stage Distilling

# 目前的問題
Q1. 所以 Distillation 是什麼動作
Q2. 為什麼會造成KD, Quantization, Pruning的差異？
- Pruning 類似於dropout,會關掉某些neuron
- KD 適合於資源充足時間充裕訓練的情況場景中使用
- Quantization適合快速開發


Q3. word piece 為何屬於 Data Augmentation? (字根字首)
我們透過pattern來去找這個字，然後再找相似進行替換，會在訓練圖進行，這個動作是在一階段之前進行，如原本1萬個句子，然後變成3萬個句子

Q3-1. 承上題，那中文該如何 data augmentation?

中文字一樣，像是蘋果狗、檸檬狗、香蕉狗，那你就拆成Character來做成最小單位，丟到字典去找相近的。

單個也有意義，像是"男" "女" "香"，就是有意義的，但"蘋"和"果"，蘋就比較沒有意義，所以就會丟到更大的字典來找到相近的embedding，然後香就是很香

Q4. CV 也能蒸餾? Ans: → 【vision transfromer, diffusion 很多 超多, CV 超多大模型阿@~@】

比較少，目前沒有看到Large CV Model，但是像是Video就會超級無敵大，而語音辨識的階段也有看到，如果你要D，你要有無監督式學習，例如用遮罩你才能D它，CV應該也有蒸餾，但是不常看到，因為它不會遇到Deploy上有難度的

Q5. di 是什麼XD

是某個Layer的參數

Q6. 通常二階段蒸餾會重複好幾次嗎? 那會重複幾次?

蒸餾就像是Training，需要迭代好幾次，目標是兩個目標更加接近，那訓練意義就是epoch。

Q7. 如果今天 Distillation 出來的模型 故意把 attention layer 拔掉，會怎麼樣? 一般的DL模型還有能力嗎 ?

這是佑謙大大之後要做的實驗，假設最小化分布Bt和Bstu分布一樣大，為什麼不Transfer貼過去，直接Weight一模一樣就最小化分布阿，0就完工啦，但成效不好，為什麼要做projection，假設機器人，想像成一個模型的Layer，手可以吃東西，腳可以跳Disco，你直接把手拔掉的話就會有某些功能癱瘓，所以如果你把Attention Layer拔掉，實作做出來就會變成某個辨識歐給，但某個辨識就會變不歐給，雖然整體Performance降低，但Case會有特定不好

延伸就是層每個都用其用途喔!


Q8. 為什麼要做WH?

1. 要一樣的大小才能計算
2. 論文當中有發現小BERT 4層，大BERT 12層，小BERT要隨機4層Mapping到大BERT，但每一層大小會有一個GAP，所以越後面Weight可能越小或越大

所以丟一個Wh進行學習，小BERT一層可能會對應大BERT的二三四層，它們目的就是要debias這個gap

也很好奇為什麼wh可以trainable，然後跟Bstu分開可以獨立運行?

Prediction Layer Outcome Weight, Embedding Layer加重，然後Hidden層減小，以此來達到上述效果

或是根本不會影響，因為是只有計算Loss的時候才會使用Wh，Train的時候也是只有那時候Train
![](https://hackmd.io/_uploads/Syjm1QpNh.png)



## **雙手萬能** 

dropout