自作LLM作ろうとして 爆散した話 (1).pdf
- 16. 2. 学習データセットを用意する 補足
トークナイザーについて
<BOS> I am called the Beast . <EOS> -> [0, 7, 2, 11, 91, 14, 51, 4]
機械が文章を処理するためには自然言語数字の羅列に直してやる必要がある。
この時に, 一単語一単語トークナイズしていると、分類モデルのクラス数が膨大になって
しまう。そこで、GPTや最近のGeminiなどではByte Pair EncodingやSentence Piece
などを用いて効率の良い単語の数値化を行っている。
これはLLMが大きいモデルを訓練できる理由の一つでもあるよ
- 22. 4. モデルを軽量化せなあかん
model = GPT()として定義した時にはCUDA Errorは起きなかった。
つまり訓練中にメモリが溢れるほどのエラーが起きている。
一体どこで...?
A. 計算グラフの構築
微分計算をするために右のような
計算グラフを作っている
これで空間計算量が増えてGPUが
圧迫される
- 23. 4. モデルを軽量化せなあかん Do the math
大体今回作ろうとしたモデルはパラメーター数0.1Bモデル, float32ならば、
0.1B×4Byte = 0.4GB
これにプラスされて計算グラフの構築, Optimizerのパラメーター, etc…が
全てGPUに乗って
20倍以上になります(体感)
こりゃたまんないね