Closed8

Chinese LLaMa のメモ

syoyosyoyo

Chinese LLaMa

https://arxiv.org/abs/2304.08177

https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/README_EN.md

を参考にして, Japanese LLaMa 構築の知見としたい. いろいろデータ公開していてありがたいネ.
ちなみに, 私は中国語ワカラナイ...

Tokenizer の Merge

https://github.com/ymcui/Chinese-LLaMA-Alpaca/blob/main/scripts/merge_tokenizer/merge_tokenizers.py

基本的には Chinese Tokenizer の vocab で, LLaMa tokenizer に無いものを追加するだけ

syoyosyoyo

学習

https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/Training-Details
https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/pretraining-script

Huggingface PEFT でメモリ効率よく LoRA 学習. 30B では bitsandbytes(8bit 量子化)利用.

  1. オリジナルの LLaMa から始める(checkpoint ファイル利用?)
  2. 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

  1. 中国語コーパス(basic 20 GB, Plus では 120 GB)で 2. を追加学習. 中国語性能を上げる.
    1. に対して中国語翻訳した? Alpaca でファインチューン
syoyosyoyo

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 倍の情報量となる)

syoyosyoyo

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 くらい.

syoyosyoyo

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 になっている.

https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/Pretraining-Script

では Training の step の表が 4 行あるが, 2 が Stage1, 3 が Stage2(7B の場合)に対応するであろうか. つまり 7B Plus or greater の場合は 2 行目と 3 行目がひとつとなる.

日本語データセットの場合, cc100 ja が展開後 75 GB くらいあるため, これを使う場合は basic と Plus の中間(やや Plus より)となるのが予想される.

syoyosyoyo

3.2 EXPERIMENTAL SETUPS FOR INSTRUCTION FINE-TUNING

ファインチューンは通常の(英語などでの)やり方とあまり変わらないと思われるので割愛

syoyosyoyo

まとめ

  • 中国語コーパスから Chinese Tokenizer を作る
  • 中国語コーパス(20 GB, 120 GB(Plus))で Chinse Tokenizer で既存 pretrained LLaMa model の学習を継続する(LoRA)
    • 7B の場合は 2 段階に分ける
  • 出来上がった Chinese LLaMa に対して Chinese Alpaca データセットなどでファインチューンする
このスクラップは2023/07/03にクローズされました