「迅速な最適化スタック」
『素早い最適化スタック』
【編集者の注意】マイク・テイラー氏は、今年の10月30日から11月2日にかけて開催されるODSCウェストで講演を行います。彼のトーク「GPT-4とLangchainを使用したプロンプトの最適化」もぜひチェックしてください!
AIを使用する一般の人々とプロンプトエンジニアとの違いはテストです。ほとんどの人はプロンプトを2-3回実行し、十分に機能するものを見つけます。プロンプトエンジニアは同じプロンプトを何百回も実行し、他のバリエーションとA/Bテストを行って、主要な評価基準をどのように頻繁に満たすか、多くのコストがかかるか、または望ましくない応答があるかを判断します。
私はプロンプトエンジニアリングを「信頼性の高い有用な結果を生み出すプロンプトを見つけるプロセス」と定義しており、信頼性が難しい部分です。AIはあるタスクでほぼ人間レベルの知能を再現できますが、残念なことに知能の向上とともに信頼性の欠如もセットになります。
生成モデルからの応答には、コンピュータのプログラムでは見たことのないランダム要素があります。同じプロンプトを100回実行しても、101回目には人種差別的な応答やでっち上げの応答、またはタスクを遂行しないといった応答が返ってくることがあります。モデルが大きくなり、GPUの需要が増えるにつれて、プロンプトの最適化はお金を節約することもできます。
これらのエッジケースを記録し、不要なトークンを削除し、プロンプトの改善方法をテストすることは、迅速に進化する分野でのエキサイティングな作業です。革新の狂気なペースにもかかわらず、私は時間と共に収束しているいくつかの標準的なツールがあります。これらのツールは、プロンプトのA/Bテストやスケールでの実行時の問題を確認するのに役立ちます。
LangChain
多くのAIエンジニアはオープンソースフレームワークのLangChainに対して愛と憎しみの関係を持っていますが、私は何人かのエンジニアが製品からそれを取り除いた後に再度導入しようとしたことを知っています。標準化されたコンポーネントは、完璧ではなくても産業にとって重要です。
非同期呼び出し
これは私がその価値に気づかなかったものですが、現在は常に使用しています。100個のプロンプトを直列に実行すると、10分以上かかることがあります(制限される場合はさらに長くなります)。それらを非同期に実行する(同時に全て実行する)から速くなるものとはあまり期待していませんでしたが、最大で6倍の速さになることもあります!OpenAIは複数の呼び出しに対応することができ、個々の呼び出しが時間をかけていても問題ありません。
イベント – ODSCウェスト 2023
対面およびオンラインカンファレンス
10月30日から11月2日
最新のデータサイエンスやAIのトレンド、ツール、テクニックについて深く掘り下げ、LLMからデータ分析まで、機械学習から責任あるAIまでをカバーします。
リトライロジック
LangChainの組み込みのリトライロジックが特に気に入っています。時間はお金ですので、この機能は非常に重要です。プロンプトが失敗したり、望ましくない結果を出力した場合、LangChainは再実行プロセスを自動化し、手動の介入を不要にします。これは数百回の呼び出しを実行する場合に本当に必要不可欠です、特に非同期で行う場合は全く実用的ではありません。また、このサービスに悩む信頼性の問題もあります。
標準規約
LangChainは業界標準のコーディングプラクティスに従います。これはテーブルステークのように聞こえるかもしれませんが、AI開発の現場ではこれが頻繁に見落とされているのが驚くべきことです。このライブラリの標準規約の使用は、他のツールやサービスとの統合を容易にし、彼らのドキュメンテーションを読むことはまるで優れたエンジニアリングの学位を取るようなものです。成長途上のPrompt Engineerとして、このような転職可能なスキルを学ぶことができる数少ないものの一つです。雇用主としては、独自のセットアップではなく、人気のあるフレームワークを採用する方が有利です。
Abstract Components(抽象コンポーネント)
LangChainの最大の利点は、プロンプトエンジニアリングのタスクのコンポーネントを抽象化する能力です。これにより、コードブロックを異なるプロジェクトで再利用でき、開発プロセスの効率化が図られます。まるでレゴセットのように、各ブロックが互換性があり有用です。どのモデルを使用するかを抽象化し、プロンプトを標準テンプレートに詰めることは、大規模なテストを実行するための第一歩です。最初の数回は手間がかかり過ぎたり、過剰なように感じるかもしれませんが、信じてください、慣れてくると重宝します。
LangSmith(ラングスミス)
ピカソは優れた芸術家はスタイルやトレンド、意味について話すのではなく、良いテレビン油をどこで買うかについて話す、と言っています。優れたプロンプトエンジニアにとって、その話題はログについてです。そのため、LangChainからの最初の商用製品(ベータ版で無料)がログおよび評価ツールというのは驚くことではありません。
Logging(ログ記録)
LangSmithは、出力だけでなく貴重なメタデータも捕捉する詳細なログを提供します。これにより、成功と失敗の両方を分析し、プロンプトを洗練させるための洞察を得ることができます。まるでAIプロジェクトのフライトデータレコーダーのようなもので、あらゆることが記録され、曖昧さの余地はありません。
Debugging(デバッグ)
ログにすべてが記録されているため、それはパワフルなデバッグツールとして機能し、プロンプトの応答の各層を探求することができます。この機能は、各出力の背後にある理由や方法を理解するために不可欠であり、将来の反復のために最適化するのに役立ちます。私はこの理由から常にこれを使用しています。何かおかしいことが起こった場合、無数のプリントステートメントを実行せずにここで見ることができます。
Test Results(テスト結果)
興味深い機能は、テスト結果と評価メトリクスを組み込むことができることです。これらは合格または不合格の評価だけではありません。各プロンプトのパフォーマンスメトリクスに関する詳細な分析を提供します。これは、LangChainと深く統合されています(当然ですが)、ここでもすべての標準的なLangChainの評価ツールを使用できます。
Fine-tuning Data(微調整データ)
LangSmithを使用すると、評価済みのプロンプトデータを取得し、OpenAIから移行する準備ができたら、カスタムモデルの微調整に役立つ有用な形式に変換できます。特定のニーズに基づいてAIモデルをトレーニングし、プロジェクトの目標に合わせてプロンプトを狙撃し、より低コストで行うことができます。
GPT-4
OpenAIの最先端モデルGPT-4は、新しいタスクに取り組む際に私が最初に参照するモデルです。最近はPlaygroundをより頻繁に使用しているため、ChatGPTはカスタムインストラクションで汚れており、偏見のない視点を得たいからです。
Best Quality(最高の品質)
LangChainではどのモデルを使用しているかを抽象化できますが、他のモデルから一歩抜きん出たモデルがあります。GPT-4は、自然言語生成のための金字塔であり、疑いの余地がありません。メールのドラフト作成、コードの作成、または次のマーケティングキャンペーンのスクリプト作成に利用する場合、GPT-4は非常に優れた品質の出力を提供します。人間によるテキストと見分けがつかないほど、論理的で文脈に即した応答を作成することもあります。
Slow Latency(低速レイテンシー)
さて、補足があります―待ち時間です。GPT-4の複雑さには、速度のトレードオフがあります。大規模なプロンプトを実行する場合、これはボトルネックになる可能性があります。私にとって、これは渋滞に巻き込まれたランボルギーニを持っているようなものです。素晴らしいですが、十分に活用されていません。これはリアルタイムの応答性が必要なプロジェクトにとって重要な考慮事項です。これは、私がAnthropicのクロードに切り替える主な理由の一つです。
最も高価な
品質は価格とともにやってきます。文字通りです。GPT-4からの応答を生成するために必要なコンピュータリソースは、すぐにコストを膨らませることがあります。予算の制約のあるスタートアップであっても、スケールを拡大しようとするエンタープライズであっても、これは避けられないハードルです。しかし、その能力を考慮すると、投資対効果はコストを正当化することが多いです。一部の場合、GPT-3.5-turboでテストを行い(こちらのほうがミスをより顕著にする傾向がある)、すべての不備に取り組んだ後、GPT-4に切り替える方が良い場合もあります。
しばしば信頼性に欠ける
GPT-4はトップクラスのパフォーマンスを提供しますが、運用上のトラブルもあります。このサービスは一貫性に欠け、ダウンタイムやランダムなレート制限の問題があります。この予測不可能性は、単なる不便以上のものであり、時間がかかる場合やLLM製品の開発をしているすべての人にとって真剣な考慮事項です。レート制限が課されるときに、より優れたモデルに切り替えるなどの解決策がありますし、LangChainのオープンソースの再試行ロジックも役立ちますが、業界の成熟を待つことに限界があります。
IPyWidgets
このシンプルなオープンソースライブラリーは、インターフェースを構築するための最も迅速な方法です。ほとんどのデータサイエンティストやプロンプトエンジニアが時間を費やすJupyter Notebookで動作し、ピクセルを移動させてデザインを完璧にすることに引きずられることはありません。
ノートブックベースのUI
IPyWidgetのノートブックベースのライブラリは、迅速なインターフェースの構築に便利です。共同設立者に導入したとき、「コードを読み書きする技術を持っているのに、インターフェースが必要なのはなぜですか?」と尋ねられました。その答えは、最も熱心なコーダーでも、一日中テキストを編集するのに飽きることがあるし、視覚的なものは脳にとって負担が軽減されるということです。もちろん、コマンドラインやスプレッドシートでも同様のことを行うことはできますが、コンピューターにはGUIがある理由があります。
最小限のスタイル
このライブラリは、機能を前面に出すために最小限のスタイルを採用しています。このアプローチにより、プロンプトやスクリプトの最適化に集中し、余計な気を散らすことなく作業を進めることができます。過度に洗練された技術や過剰なデザインの時代にあって、シンプルさはしばしば見過ごされがちですが、このライブラリはそれを正しく描いています。非技術者の評価者を導入する必要がある場合、美しいReactフロントエンドを後から設計することもできます。
Pythonで動作
PythonとJupyter Notebookとの互換性は、私にとって大きな利点です。私はPythonコードで考えるため、PythonからTypeScriptやReactに移動して派手なインターフェースを設計することは本当に手間です。何かが動作するかどうかを確認するために、Pythonの外に出てTypescriptやReactに移動する必要がある場合、それは本当に手間です。PythonはAIの世界における共通語なので、書き続けてきたその他のコードとシームレスに統合されるインターフェースを持つことは合理的です。
HTMLの表示
デフォルトで提供されるウィジェットにとらわれる必要はありません。HTMLの表示も可能であり、表示できる内容の幅が広がります。私はよくテーブルやチャートをウィジェットに表示し、好きなようにフォーマットします。プロンプトの最適化では、テストの結果をインラインで表示することが求められます。
Pandas
Pythonの世界のExcelとも言える、Pandasの豊富な知識があれば、データサイエンスのキャリアをスタートさせることができます。プロンプトエンジニアリングのための分析は、特に困難ではないため、これ以上の高度なものは必要ありません。
ピボットテーブル
Pandasを使用すると、簡単にピボットテーブルを作成できます。これにより、評価メトリックを超えてどのプロンプト変数がどのように機能しているかを素早く確認できます。Pandasのピボットテーブルは、パターンやトレンドを特定するのに役立ち、データ駆動型のプロンプト手法を提供します。
フィルター
Pandasの堅牢なフィルタリング機能により、マイシュランスターのシェフのようにデータをスライスして分析することができます。プロンプトのどのコンポーネントが最良の成功率、応答時間などのメトリックを持っていたのかを特定したり、カスタムフィルターを使用して細かく設定したりすることで、見落とされがちな洞察を発見することができます。
評価メトリックス
計測されるものは管理されるものです。Pandasを使用すると、データフレーム内の任意の列に対して関数を実行し、出力に基づいて新しい列を作成することができます。これにより、データに任意の評価メトリックスを注入し、プログラムで定義されたパフォーマンスメトリックスをより簡単に操作できます。
CSVエクスポート
Pandasは、簡単なCSVエクスポート機能も提供しており、洞察を他のプラットフォームやチームメンバーと共有することができます。PandasはPythonのExcelと呼ばれることがありますが、データをExcelに置くのも結構便利ですし、これにより簡単にできます。
ボーナス:Thumb
Thumbは、私が作成したオープンソースのプロンプト最適化&テストライブラリで、上記のすべてを組み込んでいます。同じコンポーネントを何度も再利用することが多かったため、それらをモジュールとしてパッケージ化し、他の人々にも利益をもたらすためにオープンソースでリリースし、追加しました。
非同期テストとキャッシング
Thumbは、非同期テストとキャッシング機能があり、基本的なプロンプテストを超えています。非同期テストは複数のプロンプテストを同時に実行できるため、最適化にかかる時間を短縮します。キャッシング機能は、結果ごとに結果を保存するため、テストが中断された場合や何らかの理由で失敗した場合に不要なトークンの浪費を減らします。これがThumbを作りたかった最大の理由です。テストが途中で壊れて一からやり直さなければならないことに本当に疲れていました!
LangChainとLangSmithの統合
もちろん、Thumbは裏側で完全にLangChainのコンポーネントで構築されていますので、リトライロジックのすべてのパワーを活用できますが、具体的なフォーマットの管理については特別な手間をかける必要はありません。LangSmithとのログ設定は、単一の環境変数「LANGCHAIN_API_KEY」だけで簡単に行えます。追加の機能を追加したりカスタマイズしたりする場合も、オープンソースであるため、ソースコードを参照して変更し、さらにLangChainの主要なコンポーネントを扱えるように拡張できます。
IPyWidgetsインタフェース
Thumbは、私が効率的な作業をするために使用しているシンプルな内部ツールとして始まりました。ですので、Jupyter Notebookで簡単なユーザーインターフェースを素早く実行し、一連のプロンプトに評価を付け、データをダンプして分析することができます。チームメンバーに渡す共有可能なリンクはありませんが、これは最初のプロンプトの作成と本番前の最適化の間に行われる作業の80%に焦点を当てています。本番環境では、プロディジーやブラットなどのツールが利用可能です。これらのツールは、機械学習の応答をラベル付けや評価を行うために使用されます。
結論
物事が変わるかもしれませんが、AIの波の初期のリーダーや恩恵を受ける者が出てきています。これらのツールが最終的な勝者ではなくても、次に何が来るかについての避けられない参照となるでしょう。これらのツールを今日学ぶことは、AIの未来への道を助けるでしょう。
OSDC West 2023のステージで私に会ってください。「GPT-4とLangChainによるプロンプト最適化」というトークをします。このスタックを使用して実際のテストを実行し、プロンプトの最適化方法を示します。私からより多くのプロンプトエンジニアリングを学びたい場合は、Udemyのコースをチェックするか、O’Reillyとの私の書籍の早期リリースをご覧ください。
著者について
マイクはデータに基づいたテクニカルマーケターであり、50人のマーケティングエージェンシー(Ladder)を立ち上げ、30万人の人々が彼のオンラインコース(LinkedIn、Udemy、Vexpower)を受講しています。現在はジェネレーティブAIプロジェクトに従事してフリーランスとして活動し、O’Reilly Media向けのプロンプトエンジニアリングに関する書籍を執筆しています。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles