Blog
Preferred Networks では、大規模言語モデル PLaMo の開発を継続して行っています。
LLMの開発には、単に大規模なモデルを学習するだけでなく、さまざまな作業が含まれます。高性能なLLMを学習するためには、学習データの準備や評価、実験結果の分析といった研究開発的なタスクが不可欠です。加えて、複数人で共通のコードベースを利用・改善していくためには、CIの整備や確認、ドキュメントの保守など、一般的なソフトウェア開発におけるタスクも重要になります。
こうした多様なタスクにLLMを活用することは、作業工数の削減だけでなく、作業品質の標準化という面でも大きな価値があると考えています。さらに、PLaMoの開発チーム自身が日々の業務の中でPLaMoを使うことは、モデルの継続的な改善という観点でも重要です。
PLaMo 3.0 Prime β版は、我々が3月にリリースしたLLMです。PLaMo の開発チーム自身が開発中のLLMを日々の業務で使うことは、モデルやAPIの継続的な改善のために重要です。開発中にモデルに触れ続けることで、ベンチマークでは見えにくい、まだ測れていない能力を日々の業務の中で観察できます。改善が必要であるふるまいを見つけられるのはもちろん、PLaMoが得意とするところ・気づいていなかった能力を見つけることもできるかもしれません。
こういった考えから、事前学習チームではPLaMo 3.0 Prime βをPLaMo開発の中で使用するようにしてきました。
この記事では、PLaMoの事前学習チームにおけるPLaMo 3.0 Prime βの具体的な利用について紹介します。
PLaMo 3.0 Prime β の利用例
事前学習チームのタスクは、大きく、1) PLaMoの事前学習向けデータセットの改善・開発、2) PLaMoのDNNアーキテクチャの改善・開発、3) モデルの学習を行うためのソフトウェア開発、の3つがあります。
1と2では一般的な機械学習のプロジェクト同様、評価結果や実験ログの分析が必要となります。また、公開されているデータセットを使う際にはREADME等に書かれている情報を精査する必要もあります。
3では、CIの出力やGitHub issue、ドキュメントなどの情報を効率良く扱う必要があります。
PLaMo 3.0 Prime βは、主にこのような情報の精査・整理のためのLLMとして用いられています。

図1: PLaMo-3.0-Prime βの利用例
利用例1: ベンチマーク評価結果の解析
LLMの開発においては、モデルやデータセットの評価をするためにベンチマークを実行し、その結果を解析する作業を頻繁に行います。ベンチマークによっては1万件を超える評価サンプルの結果を解析するのは非常に骨が折れる作業です。そのため、以前はごく一部のベンチマークにおいて低い頻度でしか行えていませんでした。
そこで、PLaMo 3.0 Prime βを用いて、各サンプルの原因の分析・抽出とそのクラスタリングを行うようにしました。手法としては CLEAR という手法を参考としています。もちろん分析が正しいかの確認は人が行う必要はありますが、評価結果の解析は以前よりはるかに手軽にできるようになりました。
利用例2: CIやworkflowの失敗の解析
PLaMo 3.0 Prime βのもう一つの大きな用途としては、CIやworkflowが失敗したときの原因解析があります。
開発において、CIや学習workflowが予想外にfailしたりして、そのデバッグをすることがしばしばあります。自分が保守していて振る舞いを把握しているcomponentの問題であればエラーメッセージなどからすぐに対応方法がわかることも多いです。しかし、普段見ていないcomponentの問題はエラーメッセージを見ても何が問題かわからなかったり、そもそもどこがエラーメッセージなのかわからないこともよくあります。
こういった問題に対処するため、CIのエラーログやargo workflow・kubernetes podの状況をPLaMo 3.0 Prime βを用いて解析し、原因解析を行うようにしています。
自分でログ全文を読むことなく対応に移れるため、初動の対応が早まりました。原因解析が的外れであることもしばしばありますが、長いエラーログから疑わしいところが抜き出されているだけでもデバッグの負荷は大きく下がっています。
利用例3: 開発ワークフローの支援
PLaMo 3.0 Prime βは、開発者が必要な情報に到達しやすくする、という用途でも利用しています。
例えば、公開データセットの調査では、README等にある情報から、「このデータセットは役に立ちそうか?」を判断するのに役立つ情報を抽出するために用いています。READMEは自然言語で書かれた特にフォーマットも定まっていないテキストであり、正規表現等による情報抽出は困難です。PLaMo 3.0 Prime βによりこのようなテキストから評価実験設定などの情報を抽出して比較検討を容易にしています。
また、Q&A slackbotにも活用しています。開発者からの質問がくると、開発レポジトリやGitHub issueへのアクセスが可能な環境を用意し、OpenCodeを用いたLLM agentでPLaMo 3.0 Prime βを立ち上げて質問への回答を生成しています。
現状では、回答の有用性は聞き方に依存するところが大きく、「なんとなく覚えているが詳細がわからない」ことを確認するためのものというのが個人的な印象です。
一方、frontier modelでも一回の質問で求めている回答は得られないことも多く、この印象には「stateを持たないslackbot」という実装に起因する限界も含まれていると思います。
もう1つの例としては、ドキュメントの更新があげられます。ドキュメントは開発者の理解を助ける他、最近ではcoding agentに対して情報を提供する場所として重要性が高まっています。一方で、ドキュメントはCIで正しさを確認することが難しく、しばしば変更が忘れられて古い内容が残ったままになってしまうという問題がありました。そこで、上記slackbotでも用いたOpenCodeによるLLM agentをドキュメントの更新に利用して、定期的に古くなった表現を修正したPRを作成するようにしています。
PLaMo 3.0 Prime βによるドキュメントの更新には、誤修正も含まれるため、レビューは必須です。とはいえ、「ここが古くなっている」という情報があればそれを修正していく作業はドキュメント全体を精査して修正する作業に比べて遥かに簡単に行えます。この点で、PLaMo 3.0 Prime βはドキュメントの継続的な更新に役立っています。
なお、誤修正には、モデルの能力不足によるものだけでなく、LLM agentが参照できない情報が必要だったために生じたものも多く含まれており、agentが利用できる情報やツールを適切に設計することで、さらなる改善の余地があると考えています。
利用例4: LLM agentのtestbed
最後の利用例は今までとはやや系統の異なるものです。LLM agentや関連ツールを試す際のtestbedとして事前学習チームではPLaMo 3.0 Prime βを使っています。
LLM agentはLLMの開発のための手法としても重要となってきています。例えば、学習データの生成において、ただLLMにデータを生成させるだけではなく、フィルタリングや検証などをLLMに行わせながら生成する手法が提案されています (例)。
このような手法の実装・動作確認には、何らかのLLMが必要です。その際、PLaMo 3.0 Prime βを使った確認・検証をよく行っています。最終的な利用では、能力や速度・コストの兼ね合いでモデルを選ぶことになるため、PLaMo 3.0 Prime βが常にベストというわけでは当然ありません。しかし、手軽に使って実験できるという点で役立っています。
利用・運用上の工夫
上記のような利用にあたって、PLaMo 3.0 Prime βを継続的に使うための工夫について紹介します。
主に意識していることは次の2つとなります。
- 入力として必要なものを可能な限り事前に用意する
- できる限り出力形式の構造化を行い、後段で機械的にパースする
1については、例えばCIやworkflowの失敗解析では、失敗に関係するログ、kubernetesのpodの情報などをプログラム的に収集し、それらをPLaMo 3.0 Prime βに与えるようにしています。
これはPLaMo 3.0 Prime βが必要な情報を取りこぼすことがないようにするための工夫です。最近のfrontier modelではこういった作業も自動で行えるようにもなりつつあり、PLaMo においても今後のモデル改善により不要になってくるかもしれません。とはいえ、frontier modelでも取りこぼしは発生することもあるので、典型的なタスクであればプログラム的に収集するほうが間違いが少ないことも事実だと思います。
2については、例えばデータの抽出の場合はjsonやxmlを出力させることでその後の処理を簡単にしています。こちらについては、LLMの利用方法として比較的一般的なものと思います。
利用規模
現在の事前学習チームでは、6月は営業日1日につき、入力30〜40Mトークン、出力1〜2Mトークンを利用しています。月単位では700Mトークン程度となることが予想されます。
この利用規模は、膨大な規模というほどではありません。しかし、PLaMo 3.0 Prime βが単発のデモではなく、なくなると困る程度には開発フローに入っていることを示している数値と言えると思います。CIやworkflowのエラー解析、データセットの評価、slackbot、agentのtestbedなど、複数の経路で日常的に利用されています。
まとめ
本記事では、事前学習チームがPLaMo 3.0 Prime βを普段の開発でどのように使っているかを紹介しました。
我々のチームではPLaMo 3.0 Prime βを、評価結果の解析やLLM agentのtest bedのような機械学習プロジェクトの開発に関するものから、CI・workflowのエラー解析などソフトウェア開発の支援まで、様々な場面で使っています。
こうした利用は、単なる社内利用ではなく、モデルや API を改善するためのフィードバックループでもあります。実際の開発業務で使うことで、モデルの性能、うまく動くユースケース、苦手なユースケースなどが見えてきます。
こういった発見・知見を通じて、今後もPLaMoがより実用的で使いやすいLLMになるよう開発を続けていきます。
仲間募集中
PFNでは今後もLLMの開発を継続して行っていきます。開発は今回紹介した以外にも多岐にわたります。我々はこれらの課題に情熱をもって挑戦していく仲間を募集しています。
これらの仕事に興味がある方はぜひご応募よろしくお願いします。
https://www.preferred.jp/ja/careers/







