LLMアプリケーションを構築するための5つのステップをGitHubが解説:「LLMを使わないソフトウェアの構築とは根本的に異なる」
GitHubは、LLMアプリケーションを構築するために知っておくべき5つのステップを公式ブログで紹介した。
GitHubは2023年10月30日(米国時間)、LLMアプリケーションを構築するために知っておくべき5つのステップを公式ブログで紹介した。
LLMアプリを構築する5つのステップ
同社は、LLMやあらゆる機械学習(ML)モデルを使ったソフトウェアの構築は、LLMを使わないソフトウェアの構築とは根本的に異なると主張している。一連のコマンドを実行するためにソースコードをバイナリにコンパイルするのではなく、開発者は一貫性のある正確な出力を生成するために、データセット、エンベッディング、パラメーターの重みをナビゲートする必要があることが要因の一つだという。
1.1つの問題に集中する
重要なのは、適切な大きさの問題を見つけること。すぐに反復して前進できるように十分に集中しているが、適切なソリューションがユーザーを驚かせるのに十分な課題感がふさわしい。
例えば、GitHub Copilotチームは、開発者が抱える全ての問題をAI(人工知能)で解決しようとするのではなく、最初はソフトウェア開発ライフサイクルの一部分、つまりIDEでの関数のコーディングに焦点を当てた。
2.適切なLLMを選択する
事前に訓練されたモデルでLLMアプリを構築することでコストを節約できるが、適切なものを選ぶにはどうすべきか。考慮すべき要素を幾つか次に挙げる。
ライセンス
最終的にLLMアプリを販売したい場合は、商用利用が許可されたAPIを持つモデルを使用する必要がある。
モデルのサイズ
LLMのサイズは、70億から1750億パラメータほどだが、3億5000万パラメータといった小さいものもある。ほとんどのLLMは(執筆時点で)70億から130億のパラメータを持つ。
従来の常識では、モデルのパラメータ(モデルの出力を向上させるために調整可能な変数)が多ければ多いほど、モデルは新しい情報を学習し、予測を提供する能力が高くなると考えられてきた。しかし、より小さなモデルの性能向上は、その考えを覆しつつある。小型モデルは、より高速で安価でもある。こうしたモデルの予測の質が向上したことで、有名なモデルを適用しにくい数々のアプリケーションにおいて有力な選択肢となり得る。
3.LLMをカスタマイズする
LLMをトレーニングするとき、ディープラーニングを可能にする基盤とニューラルネットワークを構築している。事前に訓練されたLLMをカスタマイズする場合、特定のトピックや特定のスタイルでテキストを生成するなど、特定のタスクにLLMを適応させることになる。以下のセクションでは、後者のテクニックに焦点を当てる。事前に訓練されたLLMを特定のニーズに合わせてカスタマイズするには、インコンテキストラーニング、人間のフィードバックからの強化学習(RLHF)、ファインチューニングなどを試すことができる。
インコンテキストラーニングは、エンドユーザーから「プロンプトエンジニアリング」と呼ばれることもある。推論時(モデルに問い合わせる時)に特定の指示や例をモデルに与え、必要なものを推論し、コンテキストに関連した出力を生成するよう求めることだ。インコンテキストラーニングは、推論またはモデルへのクエリを行う際、モデルに具体的な指示や例を提供し、必要な情報を推論し、文脈に合った出力を生成させる。
RLHFは、事前に訓練されたLLMに対する報酬モデルから構成される。報酬モデルは、ユーザーが事前学習済みLLMからの出力を受け入れるか拒否するかを予測するために学習される。報酬モデルの学習結果は事前訓練されたLLMに渡され、LLMはユーザーの受諾率に基づいて出力を調整する。
RLHFの利点は、教師あり学習を必要としないことだ。そのため、何が受け入れ可能な出力であるかの基準を拡大することができる。十分な人間のフィードバックがあれば、LLMは、例えばユーザーが出力を受け入れる確率が80%あれば、出力しても問題ないことを学習できる。
ファインチューニングとは、モデルが生成した出力を、意図された出力または既知の出力に対して評価することだ。例えば、「スープが塩辛過ぎる」という文であれば、その背後にある感情が否定的だと分かる。LLMを評価するには、この文をモデルに送って肯定的か否定的な感情かをラベル付けするようクエリする。モデルが肯定的とラベル付けした場合、モデルのパラメータを調整し、感情を否定的と分類できるかどうかを再度確認する。
4.アプリのアーキテクチャを設定する
LLMアプリのセットアップに必要なさまざまなコンポーネントは、大まかに3つのカテゴリーに分類できる。
- UI、LLM、アプリホスティングプラットフォームを必要とするユーザー入力
- 入力エンリッチメントとプロンプト作成ツール(データソース、埋め込みモデル、ベクトルデータベース、プロンプト構築・最適化ツール、データフィルターを含む)
- LLMキャッシュ、LLMコンテンツ分類器またはフィルター、LLMアプリの出力を評価するための遠隔測定サービス
5.アプリのオンライン評価の実施
これは、ユーザーとの対話中にLLMのパフォーマンスを評価することだ。そのため、「オンライン」と見なされる。
例えば、GitHub Copilotのオンライン評価は、受理率(開発者が表示された完了をどれくらいの頻度で受け入れるか)や保持率(開発者が受理された完了をどれくらいの頻度で、どの程度編集するか)によって測定される。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- GitHubが「GitHub Copilot」開発で得た教訓、LLMアプリケーション開発のベストプラクティスとは
GitHubは、「GitHub Copilot」の開発から公開における同社の経験を振り返り、個人と企業の両方に大きな価値を提供するLLM(大規模言語モデル)アプリケーションの開発に役立つ教訓として紹介した。 - RustでWebアプリの実装にチャレンジしてみよう【準備編】
Rustを使った「Webアプリ」の開発はどのようなものになるのでしょうか? 本連載のスタートとなる今回は、アプリ開発の下準備として、Rustの現状を踏まえた連載の目的を紹介し、Webアプリ開発環境の構築を通じて、Rustのプロジェクト管理の基本をおさらいします。 - RLHF(人間のフィードバックによる強化学習)とは?
用語「RLHF」について説明。人間のフィードバックを使ってAIモデルを強化学習する手法を指す。OpenAIのChatGPT/InstructGPTでは、人間の価値基準に沿うように、言語モデルをRLHFでファインチューニング(微調整)している。