tanreinama / GPTSAN

General-purpose Swich transformer based Japanese language model
MIT License
117 stars 4 forks source link

GPTSAN

model

GPTSANとは

なんにでも使える汎用日本語言語モデルを目指して作成したSwitch Transformerモデルです。

特徴として、1-GPUでファインチューニング可能だったり、生成文章のクラスを指定可能だったりします。

モデルのダウンロード

現在、28億パラメーター(10layer-1024ch-16header-16experts-1280contexts)のモデルが公開されています。

こちらのGoogle Driveフォルダから、モデルをダウンロードし、以下のコマンドで解凍します。

$ tar xfj GPTSAN-2.8B-spout_is_uniform.tar.bz2

Dockerで使ってみる

標準環境の構築。

$ docker build .
ビルド後にコンテナIDが表示される
$ docker run --gpus all -it --rm -v `pwd`/GPTSAN-2.8B-spout_is_uniform:/tf/GPTSAN/GPTSAN-2.8B-spout_is_uniform <コンテナID> python run_generate.py --model GPTSAN-2.8B-spout_is_uniform/ --context "武田信玄は、戦国 時代ファンならぜひ押さえておきたい名将の一人。天下統一を目指し勢いに乗る織田信長からも、一目置かれていたと"

とりあえず使ってみる

文章生成。

$ python run_generate.py --model GPTSAN-2.8B-spout_is_uniform/ --context "武田信玄は、戦国 時代ファンならぜひ押さえておきたい名将の一人。天下統一を目指し勢いに乗る織田信長からも、一目置かれていたと"

生成オプション

Top_K

「--top_k」で指定可能。変えると割と変わる。

$ python run_generate.py --model GPTSAN-2.8B-spout_is_uniform/ --context "武田信玄は、戦国 時代ファンならぜひ押さえておきたい名将の一人。天下統一を目指し勢いに乗る織田信長からも、一目置かれていたと" --top_k 100

最大生成文字数

「--max_generate」で指定可能。小さくすると速く動く。

$ python run_generate.py --model GPTSAN-2.8B-spout_is_uniform/ --context "武田信玄は、戦国 時代ファンならぜひ押さえておきたい名将の一人。天下統一を目指し勢いに乗る織田信長からも、一目置かれていたと" --max_generate 100

検索木の枝数

「--beam_width」で指定可能。小さくすると速く動く。

$ python run_generate.py --model GPTSAN-2.8B-spout_is_uniform/ --context "武田信玄は、戦国 時代ファンならぜひ押さえておきたい名将の一人。天下統一を目指し勢いに乗る織田信長からも、一目置かれていたと" --beam_width 1

ファインチューニング

1-GPUでファインチューニングな大規模言語モデル。

ファインチューニング方法

言語モデルとして実行

テキスト穴埋め問題をBERT風に解く。

Masked Language Modelを実行

文章のベクトル化

内部層の情報も含んだ文章ベクトル生成。

任意のトークン位置からステータスを抽出