我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。
整理目前手上有的素材:
- 準備資料集:AI說書 - 從0開始 - 162 | 準備Pretrain模型需要的資料
- 準備必備函數庫:AI說書 - 從0開始 - 163 | 準備Pretrain模型需要的函數庫
- Tokenizer 前言:AI說書 - 從0開始 - 164 | Tokenizer 前言
- 訓練自己的 Tokenizer:AI說書 - 從0開始 - 165 | 訓練自己的Tokenizer
- 保存訓練好的 Tokenizer:AI說書 - 從0開始 - 166 | 保存訓練好的 Tokenizer
- Tokenizer 使用方式:AI說書 - 從0開始 - 167 | Tokenizer 使用方式
- GPU 及 CUDA 確認:AI說書 - 從0開始 - 168 | GPU 資源確認
- 編輯模型的 Config 檔:AI說書 - 從0開始 - 169 | 編輯模型的 Config 檔
- 初始化模型:AI說書 - 從0開始 - 170 | 初始化模型
- 模型參數探索:AI說書 - 從0開始 - 171 | 模型參數探索
- 模型參數探索:AI說書 - 從0開始 - 172 | 模型參數探索
現在我要來分析 AI說書 - 從0開始 - 171 | 模型參數探索 中出現的總參數個數為 83504416 是怎麼來的,由 AI說書 - 從0開始 - 172 | 模型參數探索 中的列表知,參數有些是向量,有些是矩陣,所以分析方法要分開討論:
np = 0
for p in range(0, lp):
PL2 = True
try:
L2 = len(LP[p][0]) # check if 2D
except:
L2 = 1 # not 2D but 1D
PL2 = False
L1 = len(LP[p]) # Obtain Row Number
L3 = L1*L2
np += L3
if PL2 == True:
print(p, L1, L2, L3)
if PL2 == False:
print(p, L1, L3)
print(np)