おさかなLM について
GitHub Original: GuppyLM License

おさかなLM は、「言語モデルは魔法ではない」ことを 手で触って確かめるための 小さな教材です。約870万パラメータの 言語モデルが、 サーバーを使わず あなたのブラウザの中だけで動きます。 さらに、もっと小さなモデルを その場でゼロから学習させることもできます。 必要なのは ブラウザだけ。アカウントも GPU も インストールも要りません。

7つのページ

おさかなLMとチャット 学習ずみの 870万パラメータのモデルと 日本語で会話します。ONNX + WebAssembly で、 最初に モデルと 実行ライブラリを 読み込んだ あとは 通信しません。 話した内容が どこかへ 送られることは ありません。 こざかなLMを育てる さらに小さなモデルを ブラウザの中で ゼロから学習させます。自分で書いた会話を 混ぜて、それが どのくらい返事に あらわれるかを 確かめられます。約1分半。 AIの大きさを比べる こざかな(17万)・おさかな(870万)・GPT-3(1750億)の スケールの違いを 図で説明する読み物。桁の差が どれほど極端かが 分かります。 AIは言葉をどうわかるのか モデルは文字ではなく「トークン」で言葉を見ています。入力した文が どう分割され、 モデルが それぞれを 何回見たことがあるかを 表示します。 AIは文章をどうつくるのか モデルは つぎの 1トークンを 確率で えらぶことを くりかえして 文章を つくります。 その 1歩ずつを とめて、候補と 確率、えらばれかたを 見られます。 AIはどうやって学ぶのか 学習で 解いているのも「つぎの 1トークン当て」。1つの 会話が 何問の 問題に なり、 おさかなLM が それぞれに どれだけ 正解できているかを 表示します。 おさかなLMのデータ 学習に使った 16,255件の会話を 検索・絞り込みで閲覧できます。 モデルの「性格」が どこから来たのかを 確かめられます。

このプロジェクトについて

おさかなLM は、GuppyLM (作者 arman-bd、MIT ライセンス)を 日本語化した派生プロジェクトです。モデル構造・学習ループ・トークナイザーの方式は 原作のまま、合成会話データとブラウザ側の体験を 日本語向けに 作り直しています。

日本語化にあたって トークナイザーを 変更する必要は ありませんでした。 ByteLevel BPE は 文字ではなく UTF-8 のバイトを単位に動くため、 日本語のコーパスで 学習し直すだけで 日本語を扱えます。 MeCab のような 分かち書きは 不要です。

モデルの中身

 おさかなLMこざかなLM(ブラウザ学習)
パラメータ8,726,016約 170,000
層の数62
1層の幅38464
ヘッド64
読める長さ128 トークン64 トークン
語彙4,096約 1,500
学習データ会話 6万件会話 400件+自作
学習の場所CPU 4コア / 約10分 ブラウザ / 約1分半
つづきからなら 約15秒

こざかなLM には 2つのモードがあります。ゼロからは でたらめな数字から 400ステップ(約1分半)。つづきからは あらかじめ学習しておいた土台 (kozakana_base.bin、約660KB)を読みこんで 60ステップ(約15秒)—— いわゆる ファインチューニングです。 モデルの形は どちらも同じで、どこから始めるかだけが ちがいます。

素朴な Transformer です。GQA も RoPE も SwiGLU も使っていません。 チャットの形式と 特殊トークンは 原作と完全に同じです。

<|im_start|>user
{ユーザーの発話}<|im_end|>
<|im_start|>assistant
{ぐっぴーの返事}<|im_end|>

使っている技術

自分で 学習させる

リポジトリを取得して、次の3コマンドで データ生成から モデルの書き出しまで 行えます。

pip install -r requirements.txt

python -m guppylm.prepare_data   # 会話データ生成 + トークナイザー学習
python -m guppylm.train          # モデルの学習
python tools/export_onnx.py      # ブラウザ用に ONNX へ書き出し

会話の内容は guppylm/generate_data.py に すべて書かれています。 ここを書き換えれば、ぐっぴー以外の キャラクターにも できます。

ライセンスと クレジット

原作: GuppyLM by arman-bd — MIT License
本プロジェクト: yandod/osakana-lm — MIT License