LLM選択における成功のレシピ

このシリーズのパート1（[適切なLLMを選択する](https://blog.dataiku.com/key-criteria-when-selecting-an-llm)）では、モデル評価に不可欠なメトリクスと決定要素を取り上げました。Chatbot Arenaのようなパフォーマンスベンチマークやツールは、LLMを比較する上で非常に有効です。今回はその知識を基に、特定のユースケースに対して最適なLLMを選択する際の実践的ガイドを提供します。

スコープ設定、実現可能性の評価から、提供価値の証明、パフォーマンス最適化まで、LLMを実装するための具体的なプロセスを検討してみましょう。これは、アンドレイ・カルパシー（Andrej Karpathy）氏の「[GPTの現状](https://www.youtube.com/watch?v=bZQun8Y4L2A&ab_channel=MicrosoftDeveloper)」についての講演から引用したものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196881/9519895e-758c-10c2-2f75-354b5bf0b7b2.png)



最初のステップは、**ユースケースの範囲を定める**ことです(ステップ1)。内容としては、他のAIユースケースと同様に、問題の定義、潜在的なデータソースの評価、対象ソリューションの概要、要件のリスト化、成功基準の定義、必要なリソースの見積もり、およびプロジェクト計画が含まれます。 
LLMのユースケースを考える上では、LLMの特殊性を考慮して、いくつかの側面をより慎重に検討する必要があります。
- **入力ソースは利用可能であり、機械による読み込みが可能か？：** [RAG](https://content.dataiku.com/generative-ai-dataiku/dataiku-rag-llm?lb_email=%7B%7Bcontact.email%7D%7D)実装やツールによるLLMの拡張は、精度を向上させる上で効果的なケースが多いです。そこで、どのような情報ソースが利用可能か、また形式が適切かどうかを理解する必要があります。
- **どの程度のエラーが許容されるか？：** LLMは、自信たっぷりの口調で不正確な回答を時々提供することが知られています。これらは一般に「AIのハルシネーション（幻覚）」と呼ばれます。このようなエラーがコストリスクに与える影響、LLMを利用するシステム全体 (利用者も含む) がエラーを検出、修正できるかを理解することが重要です。
- **リアルタイムのインタラクションが必要か？：** LLM呼び出しには数秒から数十秒かかることがあり、ユーザーの要求に応答するには複数のLLM呼び出しが必要になる可能性があることを考慮して、ソリューションの設計者は許容できる遅延を決定する必要があります。
- **ユースケースの予算はいくらか？：** 強力なLLMがますます手頃な価格になってきているとはいえ、LLMユースケースの実行コスト (LLMの呼び出し、RAGパイプラインで情報ソースをインデックスするための埋め込みモデルの呼び出し、外部APIをツールとして使用するなど) は、かなり高額になる可能性があります。


## 初めに：ユースケースの実現可能性を検証する
ユースケースの要件を念頭に置いて、**最初の概念実証用LLMを選択**し(ステップ2)、**シンプルなベースラインパイプラインを実装**します(ステップ3)。この段階の主な関心事はLLMを使用して目的のタスクを達成できるかどうかです。この段階におけるベストプラクティスとしては、コストやレイテンシーに関係なく、機能がユースケースと合致した最も強力なモデルを使用することです。[GPT-4o](https://qiita.com/Dataiku/items/4ba932826d48a460d3fa)、Claude-3.5、Gemini Pro 1.5など、著名なプロバイダーの主力モデルは、汎用性が高く機能が豊富 (とくに[マルチモーダル](https://qiita.com/Dataiku/items/3e86c8012b2a7a7a3cf0)や関数呼び出しなど)で直接利用できるため、一般的に安全な選択肢といえます。
次のステップは、ユースケースのコンテキストを可能な限り代表する**テストセットを作成**し(ステップ4)、**評価方法を定義**することです(ステップ5)。この評価方法でLLMを判定基準として使用する場合、評価結果が人間の判断と十分一致していることをきちんと確認する必要があります。その後、**テストセットの結果を評価**し(ステップ6)、**期待される品質レベルと比較**します(ステップ7)。
結果の品質が不十分な場合、最も単純な変更から始めて、品質が十分になるまで**パイプラインを反復的に改善**する必要があります(ステップ8)。改善例を以下に示します。
- 専門モデルへの切り替え（そのようなモデルが存在する場合）
- [プロンプトエンジニアリング](https://content.dataiku.com/generative-ai-dataiku/prompt-studios?lb_email=%7B%7Bcontact.email%7D%7D)（少数ショット、思考の連鎖など）
- 制約付きデコード（関数呼び出しなど）
- RAGの実装、またはツールによるLLMの拡張
- ファインチューニング


## 次に：ユースケースの提供価値を証明する
品質基準を満たすことができたら、実現可能性の検証から価値の証明に移ることができます。そのためには、ユースケースのコスト、レイテンシー、スループットの制約を考慮して、**パイプラインの効率性を評価**する必要があります（ステップ9）。
パイプラインがユースケースの効率基準をすでに満たしている場合、過剰なエンジニアリングのリスクを冒すよりも、**プロセスを終了する**ことをお勧めします（ステップ13）。過剰なエンジニアリングは、パイプラインの保守性を低下させる可能性があり、新しいより強力なモデル登場の速さを考えると、良い投資とは言えないでしょう。そうでなければ、パイプラインの一部または全部をより**小型で安価なモデル**、あるいは基本的なタスクであればBERTのような非生成モデル**に切り替える**（ステップ10）、もしくは**パイプラインの費用対効果を改善**する（ステップ11）ことになります。例を以下に示します。
- プロンプトエンジニアリング（少数ショット、思考の連鎖など）
- 制約付きデコード（関数呼び出しなど）
- RAGの実装、またはツールによるLLMの拡張
- 最適化された推論技術（量子化 quantization、蒸留 distillation、投機的デコーディング speculative decoding など）
- ファインチューニング

プロンプトエンジニアリング技法は、あるモデルから別のモデルにうまく移行できないことがあるため、別のモデルでプロンプト最適化に多大な努力が行われていたとしても、やはりプロンプトの調整が必要な場合があることにご注意ください。 

## Dataikuはどのように役立つのか？ 
適切なLLMを選択し、モデルにとって最適なプロンプトを作成し、高度な AI技術を組み込むプロセスは、一部は芸術であり、一部は科学であるといえます。これまで述べてきたプロセスの各ステップにおける判断は主観的な尺度に依存する可能性がありますが、それでも体系的な評価アプローチに従うことが重要です。どのレベルが「十分」であるかを判断する計画がなければ、パフォーマンスのわずかな改善にリソースを際限なく何度も投入するリスクがあり、そのレベルのパフォーマンスであれば簡単に提供できる最新モデルの登場により、それらの利益は消え去ってしまいます。 
Dataikuは堅牢で将来性のある方法で生成AIアプリケーションを作成するのに適したツールです。とくに、Dataikuの[LLMメッシュ](https://qiita.com/Dataiku/items/f41e0846717bab462739)を使用すると、Dataikuプロジェクトのフローやコードレシピを変更することなく、1つのLLMから別のLLMに簡単に切り替えることができます。また、次の表に示すように、Dataikuはこれまで説明したプロセスの実行をサポートしています。


| ステップ | 関連するDataikuの機能 |
| ------ | ----- |
| 2. 最も強力なモデルを選択する<br>10. 小さいモデルを選択する | 外部のLLM API 、ローカル実行するHuggingFaceモデルなど、異なる[LLM接続](https://doc.dataiku.com/dss/latest/generative-ai/llm-connections.html)を簡単に切り替え可能 |
| 5. 評価方法の定義と検証 | LLMの評価 (近日提供予定) |
| 6. テストセットの結果を評価する<br>12. テストセットの結果を評価する | [実験の追跡](https://doc.dataiku.com/dss/latest/mlops/experiment-tracking/index.html)<br>[モデル評価ストア](https://doc.dataiku.com/dss/latest/mlops/model-evaluations/dss-models.html) |
| 8. 改善を実施する<br>11. 改善を実施する | [プロンプトスタジオ](https://doc.dataiku.com/dss/latest/generative-ai/prompt-studio.html)<br>関数呼び出し（近日提供予定）<br>[ナレッジバンクとRAG](https://doc.dataiku.com/dss/latest/generative-ai/rag.html)<br>ファインチューニング（近日提供予定）<br>[効率的なローカル推論実行](https://doc.dataiku.com/dss/latest/generative-ai/rag.html) |
| 9. パイプラインの効率を評価する | キャッシュ利用によるコスト削減、[LLM Cost Guard](https://www.dataiku.com/solutions/catalog/llm-cost-guard/)による利用コスト計算とトラッキング |

 
## Dataikuを利用した生成AI
Dataikuは信頼性が高くインパクトのある生成AIアプリケーション構築の鍵となります。
[→さらに詳しく知る](https://www.dataiku.com/ja/%e8%a3%bd%e5%93%81/%e3%81%ae%e4%b8%bb%e8%a6%81%e6%a9%9f%e8%83%bd/generative-ai/)





<br>

*原文：[Practical LLM Selection: A Recipe for Success](https://blog.dataiku.com/practical-llm-selection-a-recipe-for-success)*