第10章 AIサービスの最適化 AIサービスを最適化する
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、プロンプト・エンジニアリング、モデルの量子化、キャッシュ・メカニズムによってサービスをさらに最適化する方法を学ぶ。
最適化テクニック
AIサービスを最適化するオブジェクトは、出力品質かパフォーマンス(遅延、スループット、コストなど)を向上させることだ。
パフォーマンス関連の最適化には以下のようなものがある:
-
バッチ処理APIを使う
-
キャッシュ(キーワード、セマンティック、コンテキスト、またはプロンプト)
-
モデルの量子化
品質関連の最適化には以下のようなものがある:
-
構造化された出力を使う
-
迅速なエンジニアリング
-
モデルの微調整
それぞれを詳しく見ていこう。
バッチ処理
多くの場合、LLMにエントリーのバッチを同時に処理させたい。 最も明白な解決策は、エントリごとに複数のAPI呼び出しを送信することである。 しかし、明白なアプローチはコストと時間がかかり、モデルプロバイダーのレート制限につながる可能性がある。
このような場合、LLMを通じてデータをバッチ処理する2つのテクニックを活用することができる:
-
構造化出力スキーマを更新して、複数の例を同時に返す
-
バッチ処理用に設計されたモデルプロバイダーAPIを特定し、使用する。
最初の解決策は、Pydanticのモデルやテンプレートプロンプトを更新し、リクエストごとに出力リストをリクエストすることである。 この場合、エントリごとに1回のリクエストではなく、数回のリクエストでデータをバッチ処理することができる。
第1の解決策の実装を例10-1に示す。
例 10-1. 複数の項目を解析するために構造化出力スキーマを更新する
frompydanticimportBaseModelclassBatchDocumentClassification(BaseModel):classCategory(BaseModel):document_id:strcategory:list[str]categories:list[Category]
新しいスキーマをドキュメントのタイトルリストと一緒にOpenAIクライアントに渡すことで、単一API呼び出しで複数のエントリを処理できるようになった。 ...