GPTSAN
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風に解く。
文章のベクトル化
内部層の情報も含んだ文章ベクトル生成。