InfoQ Dev Summit Munichの第1回目のプレゼンテーションにおいて、Ines Montani氏は、今年の初めにQCon Londonで行ったプレゼンテーションに加え、実際のアプリケーションで最新の最先端モデルを使用し、その知識をより小型で高速なコンポーネントに抽出し、社内で実行・維持できるようにするための実践的なソリューションを聴衆に提供した。
彼女はまず、APIの背後に隠されたブラックボックスモデルを使用することは、良いソフトウェアの特性である、モジュール性、透明性、説明可能性、データプライバシー、信頼性、手頃な価格を満たすことを妨げると述べた。
さらにMontani氏は、GenAIが、顧客が製品についてフォーラムに残したコメントを評価するような、人間の言語を解釈する必要がある(「多くの場合、言語は曖昧である」)様々な状況で役立つと指摘した。彼女は、基礎となるモデルの全能力は必要とするわけではなく(「それで天気について話したくはないでしょう」)、文脈を理解するだけでいいと強調した。これは、タスクに特化した情報を抽出するために転移学習を使うことで実現できる。
「プロトタイプの停滞期」を通過し、システムを「プロダクション・レディ」にするためには、Montani氏によれば、以下のアクションが必要だという。
-
インプットとアウトプットを標準化する-プロトタイプと目標とする生産システムは同じデータ型を持つ必要があります。
-
評価から始める-これはソフトウェア開発におけるテストに相当する。答えを知っている回答を求める。こうすることで、精度のスコアに基づいて、システムが改善されているかどうかがわかる。
-
正確さだけでなく、有用性を評価する-正確さのスコア以外に、モデルの有用性(「あなたがやっていることに有用か」)をチェックする必要がある。
-
反復的にデータに取り組む-コーディングの実践と同様に、最適なものが見つかるまで、さまざまなアプローチやツールを試すべきである。
-
自然言語の構造と曖昧さを考慮する-人間の言語からの抽出物は、標準的なデータのようには扱えない(「きれいに並べられた箱には収まらない」)。
自然言語処理(NLP)を含むプロトタイプに取り組む場合、良い出発点は、出力を解析し、構造化されたデータを含むオブジェクトを提供するツールによって提供できる大規模な言語モデル(LLM)である(「それがspaCyLLMを構築した理由だ」)。そして、たとえ本番でそのようにデプロイできたとしても、より良いアプローチは、実行時にLLMを、必要な部分だけを実行するタスクに特化したコンポーネントで置き換えることだろう。そうすれば、システムはよりモジュール化され、透過的になり、(おそらく)より速くなる。
さらに、「人間をループに入れる」ことで、LLMの間違いを修正し、LLMのアウトプットの質を上回ることができる。ベースライン(既成概念にとらわれない結果)を定義した後、プロンプトを修正し、アノテーションツールを通して、対象とするタスクに非常に特化したデータセットを作成する。効率的に「人間にアクセス」するためには、データを何度も通過させ、その都度1つの側面だけに焦点を当てる。こうすることで、認知的負荷が下がり、速度が向上する。
Montani氏: 開発者として、私たちはプロトタイプの停滞期にはまらないで物事を出荷する必要があります。問題をより扱いやすくすることは許されます。これは競争ではないです。ここは学問の世界ではないし、複雑さが少ないということは、問題が発生する可能性も少なくなるということです。
蒸留のプロセスは、コードのリファクタリングと考えることができる。問題をより小さなものに分解し、複雑さを減らし、ビジネスロジックの仕様をシステムの特殊性から切り離すといったテクニックを使うことができる。このフェーズでは、依存関係や使用されているテクニックを再評価し、タスクにもっとも適したものが使用されていることを確認できる。
自然言語処理に基づくアプリケーションで使用されるモデルを蒸留することの多面的な利点を強調するために、Montani氏は、explosion.aiが複数の分野の顧客を支援したケーススタディの要約を提供した。指摘されたように、最終的なモデルは通常、LLMによって提供された最初のベースラインよりも小さく、より正確だった。したがって、モデルの反復に時間をかけることは、長期的にははるかに良い結果をもたらし、運用コストも削減できる。