ViT篇外:NVIDIA Llama-3.1-Minitron 4B
大家也許會很好奇為什么在ViT章節插入了NVIDIA Llama-3.1-Minitron 4B,ViT因為應用場景的特殊性所以都寄希望于高效率的模型,因此各種針對大參數模型的提煉和優化技術層出不窮。而NVIDIA Llama-3.1-Minitron則復現了這些系列的教科書實驗。對于一些基本的術語,可以移步??ViT 1??溫習一下。

1.Llama-3.1-Minitron 4B
LLMs例如Llama 3.1 405B和NVIDIA Nemotron-4 340B在許多具有挑戰性的任務中表現出色,包括編碼、推理和數學。但是部署它們需要大量資源。所以在可以預見的未來,開發小型且高效的語言模型成為熱門,畢竟好用且部署成本要低很多。
NVIDIA近日的研究表明,??結構化權重修剪???與??知識蒸餾??相結合,形成了一種有效且高效的策略,可以從較大的兄弟模型中提煉較小的語言模型。NVIDIA Minitron 8B和4B就是通過修剪和蒸餾NVIDIA Nemotron系列中較大的15B而得到的。
的確修剪和蒸餾這些大模型的提煉方法與從頭開始訓練相比,MMLU分數提高了16%。每個額外的模型需要的訓練令牌更少,最多減少40倍,與從頭開始訓練所有模型相比,訓練一個療程可節省高達1.8倍的計算成本。當然最重要的是性能也不能拉胯,性能與Mistral 7B、Gemma 7B和Llama-3 8B相當,最高可達 15T。
NVIDIA的本次研究提出了一套實用且有效的結構化壓縮最佳實踐,將LLMs深度、寬度、注意力和MLP修剪與基于知識蒸餾的方法相結合。最后將它們應用于Llama 3.1 8B模型以獲得Llama-3.1-Minitron 4B。

Llama-3.1-Minitron 4B與類似大小的最先進的開源模型相比表現出色,包括 Minitron 4B、Phi-2 2.7B、Gemma2 2.6B和Qwen2-1.5B,Llama-3.1-Minitron 4B即將發布到HuggingFace。

Nvidia進一步優化了Llama-3.1-Minitron 4B模型,以使用其TensorRT-LLM工具包進行部署,從而增強了其推理性能。例如,與原始的Llama 3.1 8B模型相比,該模型在各種情況下的FP8精度吞吐量增加到2.7倍。在 Llama-3.1-Minitron 4B上執行的額外優化使該模型非常強大和高效,易于應用于許多領域。
2.經驗總結
具體的過程如下:從15B模型開始評估每個組件(層、神經元、頭部和嵌入通道)的重要性,然后對模型進行排序和修剪到目標大小的8B模型。之后使用模型蒸餾執行了輕度二次訓練,原始模型作為老師,修剪后的模型作為學生。訓練后8B模型作為修剪和提煉為較小的4B模型的起點。

要修剪模型,首先要了解模型哪些部分是重要的,這點至關重要。這里使用一種純粹基于激活的重要性估計策略。這種策略使用1024個樣本數據集通過并行的前向傳播來評估所有這個神經網絡中組件的重要性(depth, neuron, head, and embedding channel)。研究指出可以迭代地交替使用修剪和重要性評估方法,然而實證研究表明,使用單次重要性估計就足夠了,迭代多次并沒有帶來想象中的收益。

上圖顯示使用學生模型(修剪模型)的蒸餾過程,該模型具有N層,是從具有M層的教師模型(原始未修剪模型)中蒸餾出來的。學生通過最小化映射在學生塊S和教師塊T上的Embedding Loss、Logit Loss等Loss組合學習和訓練。
基于通過剪枝和知識蒸餾的消融研究<就是拿掉一個組件,看看缺失的情況對于整體的影響力>,本次研究將學習成果總結出一些壓縮的最佳實踐:
- 要訓練一個家族的LLMs,首先挑選最大號的模型然后進行修剪和迭代蒸餾以獲得較小的LLMs
- 如果使用的大模型是使用多階段訓練策略進行訓練的,則最好選擇最后階段的模型。
- 當源模型最接近目標期望大小的模型時候可以修剪
- 最好進行??寬度修剪???而不是深度修剪,這對于≤ 15B效果很棒
- 針對神經網絡中各個組件的重要性評估,一次就夠了
- 使用蒸餾損失進行再訓練,當深度顯著減少時使用Logit+Embedding +中間狀態進行蒸餾,當深度沒有顯著減少時,僅使用Logit蒸餾。?

















