# AI . FREE Team 讀書會 - 2023/05/13 ###### tags: `AIfreeteam` ## 第一個主題:Distillation * 講者:Ovien ### [原始文章連結](https://arxiv.org/abs/1909.10351) ---  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會進行猜測  World Piece的動作,將一個單字切成不同段落 如ps ##y ##chi ##at ##ric 丟到Glove的字典來進行查詢,並進行猜測 ## 成果 GLEU Experiment Result -很常用的語言任務測驗 模型縮小幾倍,CPU就快幾倍 性能並無差太多,速度又可以變快 ## 趨勢  2020年非常關鍵,因為有ALBERT輕量化的BERT,那時候流行的是直剪,並砍掉一點點的加速笑過 2021年,大放異彩,大家都在追求Production和客製化 目前復現時刻作用到ChatGPT上面,並追求產品 ## 推薦  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  ## 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  ## **雙手萬能** dropout
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up