本文へスキップ
作る稼ぐ再投資する ジミー検索 公開中

日本語LLMを一から自作して、ブラウザで動かして公開した話

自作LLM

「AIを作っている」と言うと、たいてい「APIを叩いているんでしょ?」と返ってきます。でも今回作ったのは、トークナイザーから事前学習まで、全部スクラッチの日本語LLMです。既存モデルの改造でもファインチューニングでもありません。

BuildersLoop の価値観のひとつは「作るを抽象論で終わらせない」。AIを語るなら、根っこから一度は自分の手で作ってみよう——そう思って挑戦した記録です。完成したモデルは、いまブラウザから誰でも触れます。

👉 実際に動かす:BuildersLoop AI(Hugging Face Space) — あなたのブラウザのGPUで動きます。

作ったもの

対話できる日本語のチャットAI「BuildersLoop AI」です。スペックはこんな感じ。

  • サイズ:約 290M パラメータ(いわゆる小型モデル)
  • 構成:nanoGPT 系のシンプルな GPT アーキテクチャ
  • トークナイザー:自作の BPE(語彙 約40,000)
  • 動作:サーバー無し。訪問者のブラウザ(WebGPU)で推論

① トークナイザーを自作する

LLMはまず、文章を「トークン」という小さな単位に区切るところから始まります。ここを既製品で済ませず、日本語コーパスから自分で BPE を学習させて語彙を作りました。

日本語は英語と違って単語の区切りが曖昧なので、語彙の作り方で品質が大きく変わります。ここはモデルの「土台」。一番地味だけど、一番効きました。

② 事前学習(Pre-training)

次に、大量の日本語テキストでモデルにひたすら「次の単語」を当てさせます。使ったデータと規模は:

  • コーパス:日本語の大規模データ(CulturaX)+ 青空文庫 など
  • 学習量:約 5B トークン
  • アーキテクチャ:nanoGPT 系・約 290M

GPUを回し続けて、文章として成立する日本語が出てくるようになるまで。ここで「言葉のベース」ができます。

③ チャットできる形にする

事前学習しただけのモデルは、ただ文章の続きを書くだけ。これを「質問されたら答える」対話の形に調整して、ようやく会話ができるようになりました。

④ ブラウザで動かす(ここが面白い)

普通、AIチャットはサーバーのGPUで動かします。でもそれだとサーバー代がかかるし、人が増えると重くなる。そこで発想を変えて、「訪問者のブラウザのGPUで動かす」方式にしました。

具体的には、モデルを ONNX 形式に変換し、transformers.jsWebGPU でブラウザ上で推論させています。サーバーは一切計算しません。だから何人来てもサーバーは無料のまま、各自の端末で動く。返答はだいたい 1秒以内です。

正直なところ、まだ弱い

BuildersLoop の価値観は「Radical Sharing(包み隠さず共有する)」。なので正直に書きます。

290M は今のAIとしてはかなり小さく、雑談は自然ですが、知識を問う質問は苦手です。事実を堂々と間違えることもあります。それでも「小さいLLMなら、全工程を自分の手で動かせる」という挑戦としては、大きな一歩でした。

つまずきも色々ありました。量子化(モデルの軽量化)は何度も失敗して、結局フルサイズで公開。ブラウザ側のトークナイザー読み込みでもハマって、手書きで読み込む処理を書いて回避しました。このあたりは別記事で掘り下げる予定です。

これから

次は、もっと大きなモデル(1B級)と、コーディング対応。個人開発ではありますが、「日本発のモデルを自分たちで育てる」ところまで持っていきたいと思っています。

生成品質・アーキテクチャ・ブラウザ推論まわり、ツッコミは大歓迎です。

あなたのブラウザで、自作AIと話してみてください。

BuildersLoop AI を試す