Chinese LLaMa のメモ
Chinese LLaMa
を参考にして, Japanese LLaMa 構築の知見としたい. いろいろデータ公開していてありがたいネ.
ちなみに, 私は中国語ワカラナイ...
Tokenizer の Merge
基本的には Chinese Tokenizer の vocab で, LLaMa tokenizer に無いものを追加するだけ
学習
Huggingface PEFT でメモリ効率よく LoRA 学習. 30B では bitsandbytes(8bit 量子化)利用.
- オリジナルの LLaMa から始める(checkpoint ファイル利用?)
- Chinese tokenizer で original LLaMa に対して embedding を学習?(LoRA)
we fix the parameters of the transformer encoders within the model and only train the embeddings,
adapting the newly added Chinese word vectors while minimizing the disturbance to the original
model
- 中国語コーパス(basic 20 GB, Plus では 120 GB)で 2. を追加学習. 中国語性能を上げる.
-
- に対して中国語翻訳した? Alpaca でファインチューン
2.2 CHINESE VOCABULARY EXTENSION
- Chinese コーパスで sentencepiece で train. vocab サイズは 20,000
- LLaMa tokenizer にマージ. マージ後 vocab size 49,953.
- the word embeddings
and language model head の shape を 32,000 x H から 49,953 x H にリサイズ. 元の embedding matrix に append する. これにより元の vocab での embedding 計算には影響はない
Chinese tokenizer で概ね token 長は半分になる!(context 長が固定の場合, 2 倍の情報量となる)
2.3 PARAMETER EFFICIENT FINE-TUNING WITH LORA
pretrain と finetune(alpaca)の両方で LoRA 利用.
LoRA についてはほかでいろいろ解説あるので割愛.
2.4 PRE-TRAINING OBJECTIVE
標準的な Casual Language Modeling (CLM) task で pre-train.
2.5 SUPERVISED FINE-TUNING AND CHINESE ALPACA
Standord Alpaca(英語) に従って Chinese Alpaca をファインチューン
Chinese Alpaca と Stanford Alpaca の違いは prompt template くらい.
Chinese Tokenizer は sentencepiece で train.
Tokenizer の作成
で Japanese Tokenizer いけるでしょう.
3.1 EXPERIMENTAL SETUPS FOR PRE-TRAINING
7B では 2 ステージの pre-train をする.
In stage 1, we fix the parameters of the transformer encoders within the model and only train the embeddings,
adapting the newly added Chinese word vectors while minimizing the disturbance to the original
model
In stage 2, we add LoRA weights (adapters) to the attention mechanisms and train the
embeddings, LM heads, and newly added LoRA parameters
Plus 7B 以上では 2 ステージの pretrain は行わず(あまり効果がないための模様), LoRA での pre-train のみ.
20 GB training data は basic(無印), 120 GB training data で学習するのは Plus になっている.
では Training の step の表が 4 行あるが, 2 が Stage1, 3 が Stage2(7B の場合)に対応するであろうか. つまり 7B Plus or greater の場合は 2 行目と 3 行目がひとつとなる.
日本語データセットの場合, cc100 ja が展開後 75 GB くらいあるため, これを使う場合は basic と Plus の中間(やや Plus より)となるのが予想される.
3.2 EXPERIMENTAL SETUPS FOR INSTRUCTION FINE-TUNING
ファインチューンは通常の(英語などでの)やり方とあまり変わらないと思われるので割愛
まとめ
- 中国語コーパスから Chinese Tokenizer を作る
- 中国語コーパス(20 GB, 120 GB(Plus))で Chinse Tokenizer で既存 pretrained LLaMa model の学習を継続する(LoRA)
- 7B の場合は 2 段階に分ける
- 出来上がった Chinese LLaMa に対して Chinese Alpaca データセットなどでファインチューンする