blueqat で、小さな言語モデルを一から作りました。名前は「nobidog(ノビドッグ)」。いま社内で使い始めているのは、約12億パラメータの「nobidog1b」です。
いまの言語モデルの多くは、どこかの会社が公開したモデルを土台にして、そこから自分たちの用途に合わせて調整したものです。私たちは今回、あえてそれをしませんでした。日本語の文章だけを読ませて、まっさらな状態から学習させています。他社のモデルの重みは一切使っていません。
なぜ、わざわざ一から作るのか
理由は単純で、「自分たちで最後まで作れるのか」を確かめたかったからです。
言語モデルは、使うだけならいくらでも選択肢があります。でも、中で何が起きているのかを本当に分かろうと思ったら、一度は自分の手で、文章を集めるところから育ててみるしかありません。どのくらいの計算が要るのか、どこでつまずくのか。それは、作ってみないと分からないことばかりです。
学習に使ったのは、公開されている日本語の Web の文章と、日本語の Wikipedia です。これを自社で選別し、重複を取り除いて、学習用に加工しました。文章を細かい単位に切り分ける「トークナイザ」も自分たちで作り、学習のプログラムも自分たちで書きました。そして、学習はすべて自社の GPU の中で行っています。
小さく始めて、少しずつ大きく
最初は、ずっと小さなモデルから始めました。動くことを確かめ、少し大きくして、また確かめる。その繰り返しで、最後に今の 1B 級までたどり着きました。開発を始めてから約1か月、いちばん大きいモデルの学習そのものには、約16日かかっています。
使っている GPU は最新のものではありません。そのため、最新の GPU なら当たり前にできる計算の省略ができず、数字がはみ出さないように、一部の計算だけ精度を上げて回す工夫が必要でした。限られた機材で、どこまでいけるか。そこも今回の挑戦の一つです。
作ってみて、笑ってしまったこと
一から作ると、思わぬところで、思わぬ振る舞いに出会います。
いちばん笑ったのは、挨拶です。学習を終えたモデルに「こんちは」と話しかけたら、「こんちは、先日、新しいスマホケースを注文しまして…」と、誰かのブログの続きを書き始めてしまいました。別のときには、Windows XP のインストールの話を始めたこともあります。
原因は、仕上げの学習に使った問答の中に、挨拶がほとんど入っていなかったことでした。モデルは「こんちは」を、会話の始まりではなく、文章の書き出しだと思っていたのです。挨拶や雑談の見本を足して学習し直すと、「こんにちは!何かお手伝いできることはありますか?」と、ちゃんと返してくれるようになりました。
ほかにも、「𠮷(つちよし)」や「鰤」のような珍しい漢字が、化けた記号になって出てくることがありました。こうした字は、細かい部品を組み合わせて1文字になります。答えを部品ごとに流していたため、組み上がる前の半端な状態が表示されていたのです。こういう地味なつまずきの一つひとつが、作ってみて初めて分かったことでした。
使ってみると、思ったより使える
肝心の中身ですが、正直に言って、思っていたよりずっと使えます。
たとえば「VQE の仕組みを簡単に教えて」と聞くと、「ハミルトニアンをパウリ演算子の和に分解し、それぞれの期待値を測って、古典的な最適化でエネルギーを最小にしていく」という筋の答えを返してくれます。小さなモデルでも、量子コンピュータの基本的な用語の説明なら、十分に役に立つ場面があります。
もちろん、間違えることもあります。大きなモデルや専門家の代わりになるものではありません。それでも、小さいぶん軽く、速く、安く動かせます。手元の GPU で動き、外にデータを出さずに使える。この使い勝手のよさとコストの低さは、小さなモデルならではの強みだと感じています。
性能を数字で示すために、いまベンチマークを取っているところです。日本語の標準的な評価で、ほかの同じくらいの大きさのモデルと同じ条件で比べています。結果が出たら、あらためてご紹介します。
すでに社内で使っています
nobidog1b は、すでに自社のサーバー上で、社内の限られた利用者向けに提供を始めています。外部への提供や公開はまだですが、毎日使いながら、気になるところを直していく段階です。
次は 7B へ、そして量子計算のためのモデルへ
これから目指すのは、量子計算をより速く、より安く行うことを助けるモデルです。量子のアルゴリズムや回路を考えるとき、手元で軽く動くモデルが隣にいてくれたら、という場面はたくさんあります。そのために、効率のよいモデルを作っていきたいと考えています。
次の目標は、7B(約70億パラメータ)級です。ここまで大きくなると、今の自社の GPU だけで一から学習するのは難しくなります。そこで、公開されている日本語のモデルを土台にして学習を重ねる方法や、外部の計算資源を使う方法も含めて、作り方を検討しています。
一から作ってみて、言語モデルは「誰かが作ったものを使うもの」から「自分たちで育てられるもの」に変わりました。小さく始めて、少しずつ大きく。量子コンピュータと同じように、この分野も、自分の手で触ってみるのがいちばん面白いと感じています。
寄稿は筆者個人の見解です。編集部の見解ではありません。 この媒体はblueqat株式会社が運営しています。



