ホームページ > テクノロジー周辺機器 > AI > GPTCacheチュートリアル:LLMアプリケーションの効率の向上

GPTCacheチュートリアル:LLMアプリケーションの効率の向上

Joseph Gordon-Levitt
リリース: 2025-03-07 10:18:11
オリジナル
208 人が閲覧しました

GPTCacheは、ChatGPTのような大規模な言語モデル(LLM)アプリケーション向けのオープンソースフレームワークです。以前に生成されたLLM応答を同様のクエリに保存します。 LLMに頼る代わりに、アプリケーションはキャッシュをチェックして、時間を節約するための関連する応答をチェックします。

このガイドでは、Gptcacheがどのように機能し、プロジェクトで効果的に使用できるかを調査します。

gptcacheとは?

GPTCacheは、GPT-3のような大規模な言語モデル(LLM)のパフォーマンスと効率を改善するために設計されたキャッシュシステムです。 LLMSが以前に生成されたクエリを保存して時間と労力を節約するのに役立ちます。

同様のクエリが再び登場すると、LLMは新しい応答をゼロから開発する代わりにキャッシュした応答を引き上げることができます。

他のツールとは異なり、GptCacheはセマンティックキャッシングで動作します。セマンティックキャッシュは、クエリ/リクエストの目的を保持します。その結果、以前に保存されたクエリがリコールされると、その結果はサーバーのワークロードを減らし、キャッシュヒット率を改善します。 GPTCACHE

を使用することの利点

GPTCacheの背後にある主なアイデアは、LLMの推論プロセス中に生成された中間計算を保存および再利用することです。そうすることにはいくつかの利点があります:

LLM API呼び出しのコスト削減

ほとんどのLLMSは、処理されたトークンの数に基づいて、リクエストごとに特定の料金を請求します。それはgptcacheが役立つときです。同様のクエリに対して以前に生成された応答を提供することにより、LLM API呼び出しの数を最小化します。その結果、これにより、追加のLLMコールコストを削減することでコストを節約できます。

応答時間と効率の改善

キャッシュから応答を取得することは、LLMを照会することでゼロから生成するよりも大幅に高速です。速度を高め、応答時間を改善します。効率的な応答は、LLM自体の負担を軽減し、他のタスクに割り当てることができるスペースを解放します。 より高速なアプリケーションパフォーマンスによるユーザーエクスペリエンスの強化

コンテンツの質問を検索しているとします。あなたが尋ねるすべての質問は、AIが答えるのに何年もかかります。なぜ?ほとんどのLLMサービスは、設定期間内にリクエスト制限を実施するためです。これらの制限を超えることは、制限がリセットされるまでさらに要求をブロックします。これにより、サービスの中断が発生します。

chatgptは、その応答を生成することで到達できます

これらの問題を回避するために、Gptchacheは同様の質問に対する以前の回答をキャッシュします。何かを求めると、それはすぐにそのメモリをチェックし、情報をフラッシュで配信します。その結果、あなたは通常よりも短い時間であなたの応答を得ます。

単純に言えば、キャッシュされた応答を活用することにより、GPTCacheはLLMベースのアプリケーションが応答性と効率的になることを保証します。

gptcacheGPTCacheチュートリアル:LLMアプリケーションの効率の向上のセットアップ

gptcacheを直接インストールする方法は次のとおりです

インストールと構成

このコードを使用してgptcacheパッケージをインストールします。

! pip install -q gptcache
ログイン後にコピー
ログイン後にコピー
次に、gptcacheをアプリケーションにインポートします。

from gptcache import GPTCache
cache = GPTCache()  
# keep the mode default 
ログイン後にコピー
それだけで、あなたは完了です!

LLMS

との統合

LLMアダプターを介してGPTCacheをLLMSと統合できます。現在のところ、それは2つの大きな言語モデルアダプターのみと互換性があります。

openai
  • langchain
  • 両方のアダプターと統合する方法は次のとおりです Openai Chatgpt API
を備えた

gptcache

gptcacheをOpenaiと統合するには、キャッシュを初期化し、gptcache.AdapterからOpenAIをインポートします。

サンプルコードを実行する前に、echo $ openai_api_keyを実行してOpenai_Api_key環境変数を設定します。

まだ設定されていない場合は、unix/linux/macosシステムでexport openai_api_key = your_api_keyを使用するか、openai_api_key = your_api_key on windows systemsを使用して設定できます。
from gptcache import cache
from gptcache.adapter import openai

cache.init()
cache.set_openai_key()
ログイン後にコピー
それから、ChatGPTに2つの正確な質問をすると、ChatGptをもう一度尋ねるのではなく、キャッシュから2番目の質問への回答を取得します。

同様の検索キャッシュの例コード:

出力に表示されるものは次のとおりです

2回目、GPTは同じ質問に答えるのにほぼ0秒かかりました
import time


def response_text(openai_resp):
    return openai_resp['choices'][0]['message']['content']

print("Cache loading.....")

# To use GPTCache, that's all you need
# -------------------------------------------------
from gptcache import cache
from gptcache.adapter import openai

cache.init()
cache.set_openai_key()
# -------------------------------------------------

question = "what's github"
for _ in range(2):
    start_time = time.time()
    response = openai.ChatCompletion.create(
      model='gpt-3.5-turbo',
      messages=[
        {
            'role': 'user',
            'content': question
        }
      ],
    )
    print(f'Question: {question}')
    print("Time consuming: {:.2f}s".format(time.time() - start_time))
    print(f'Answer: {response_text(response)}\n')
ログイン後にコピー
Langchainを搭載した

gptcache

別のLLMを使用する場合は、Langchainアダプターを試してください。 GptcaheをLangchain:GPTCacheチュートリアル:LLMアプリケーションの効率の向上と統合する方法は次のとおりです

LANGCHAINを使用してLLMアプリケーションを構築する方法を学びます プロジェクトでgptcacheを使用して

gptcacheがプロジェクトをどのようにサポートできるかを見てみましょう。

基本操作
from langchain.globals import set_llm_cache
from langchain_openai import OpenAI

# To make the caching really obvious, lets use a slower model.
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", n=2, best_of=2)
ログイン後にコピー
LLMクエリの固有の複雑さとばらつきのために

llmsは効果がなくなり、キャッシュヒット率が低くなります。 この制限を克服するために、GPTCacheはセマンティックキャッシュ戦略を採用しています。セマンティックキャッシングストアは、同様のクエリまたは関連するクエリ - キャッシュヒットの確率を増やし、全体的なキャッシュ効率を高める。 gptcacheは、埋め込みアルゴリズムを活用して、クエリを埋め込みと呼ばれる数値表現に変換します。これらの埋め込みはベクターストアに保存され、効率的な類似性検索を可能にします。このプロセスにより、GPTCacheはキャッシュストレージから類似または関連するクエリを識別および取得できます。 モジュラー設計を使用すると、要件に応じてセマンティックキャッシュの実装をカスタマイズできます。

ただし、誤ったキャッシュのヒットとキャッシュミスは、セマンティックキャッシュで発生する場合があります。このパフォーマンスを監視するために、GPTCacheは3つのパフォーマンスメトリックを提供します
  • ヒット比充填リクエストにおけるキャッシュの成功率を測定します。値が高いとパフォーマンスが向上します
  • レイテンシキャッシュからデータを取得するのにかかった時間を示します。
  • recall
  • は、正しく提供されたキャッシュクエリの割合を示しています。より高いパーセンテージは、より良い精度を反映しています。
  • 高度な機能

初期クエリ、プロンプト、応答、アクセスタイムスタンプなどのすべての基本的なデータ要素は、「データマネージャー」に保存されます。 GPTCacheは現在、次のキャッシュストレージオプションをサポートしています

sqlite

    mysql
  • postgreSqlデータベース。
  • 「NOSQL」データベースはまだサポートしていませんが、すぐに組み込まれる予定です。 立ち退きポリシーを使用して
  • ただし、GPTCacheは、指定された制限またはカウントに基づいて、キャッシュストレージからデータを削除できます。キャッシュサイズを管理するには、最近使用されていない(LRU)立ち退きポリシーまたはFirst In、First Out(FIFO)アプローチのいずれかを実装できます。

lru eviction policy

は、最近アクセスされていないアイテムを立ち退かせます。

その間、

fifo eviction policy
    は、最も長い間存在していたキャッシュされたアイテムを破棄します。
  • 応答パフォーマンスの評価
  • GPTCacheは「評価」関数を使用して、キャッシュされた応答がユーザークエリに対処するかどうかを評価します。そのためには、3つの入力が必要です
  • ユーザーのデータのリクエスト 評価されているキャッシュされたデータ
ユーザー定義のパラメーター(存在する場合)

他の2つの関数を使用することもできます

  • log_time_func
  • ’では、「
  • embeddings
  • 」を生成したり、キャッシュを実行したりするなど、集中的なタスクの期間を記録および報告できます。
  • '
  • signily_threshold、
’で、2つの埋め込みベクター(

テキストデータの高次元表現

)が一致するほど類似している場合を決定するためのしきい値を定義できます。
  • gptcacheのベストプラクティスとトラブルシューティング gptcacheがどのように機能するかを知っているので、その利点を確実に享受するためのいくつかのベストプラクティスとヒントがあります。 gptcacheパフォーマンスの最適化 以下に概説するように、GPTCacheのパフォーマンスを最適化するために実行できるいくつかのステップがあります。
  • 1。プロンプトを明確にします
  • LLMにどのように促され、GPTCacheがどの程度うまく機能するかに影響を与えます。したがって、キャッシュに到達する可能性を高めるために、フレージングを一貫性に保ちます。 たとえば、「アカウントにログインできない」などの一貫したフレーズを使用します。これにより、GPTCacheは「パスワードを忘れた」や「アカウントログインの問題」など、同様の問題をより効率的に認識しています。

    2。組み込みの追跡メトリックを使用してください

    ヒット率、リコール、レイテンシなどの組み込みメトリックを監視して、キャッシュのパフォーマンスを分析します。より高いヒット率は、キャッシュが保存されたデータから要求されたコンテンツをより効果的に提供し、その有効性を理解するのに役立つことを示しています。

    3。大規模なユーザーベースを備えたLLMアプリケーション用のGPTCACHEのスケーリング

    より大きなLLMアプリケーションのGPTCacheをスケーリングするには、同様のプロファイルを持つユーザーグループに同じキャッシュを利用する共有キャッシュアプ​​ローチを実装します。ユーザープロファイルを作成し、それらを分類して同様のユーザーグループを識別します。

    同じプロファイルグループのユーザーに共有キャッシュをレバレッジすると、キャッシュの効率とスケーラビリティに関して良好なリターンが得られます。 これは、同じプロファイルグループ内のユーザーが、キャッシュされた応答の恩恵を受けることができる関連クエリを持っている傾向があるためです。ただし、ユーザーをグループ化し、共有キャッシュの利点を正確に最大化するには、適切なユーザープロファイリングと分類手法を使用する必要があります。 一般的なgptcacheの問題のトラブルシューティング

    gptcacheに苦労している場合、問題のトラブルシューティングに実行できるいくつかの手順があります。

    1。キャッシュ無効

    gptcacheは、最新のキャッシュ応答に依存しています。基礎となるLLMの応答またはユーザーの意図が時間とともに変化した場合、キャッシュされた応答は不正確または無関係になる可能性があります。 これを回避するには、LLMの予想される更新頻度に基づいてキャッシュされたエントリの有効時間を設定し、キャッシュを定期的に更新します。

    2。キャッシュされた応答への過度の依存

    GPTCacheは効率を改善できますが、キャッシュされた応答への過度の依存は、キャッシュが適切に無効にされない場合、情報の不正確な情報につながる可能性があります。 この目的のために、同様のクエリであっても、アプリケーションがLLMから新たな応答を取得することがあることを確認してください。これにより、重要なまたは時間に敏感な情報を扱う際の回答の正確性と品質が維持されます。

    3。キャッシュの品質を無視

    キャッシュされた応答の品質と関連性は、ユーザーエクスペリエンスに影響します。したがって、ユーザーにサービスを提供する前に、キャッシュされた応答の品質を評価するために評価メトリックを使用する必要があります。

    これらの潜在的な落とし穴とそのソリューションを理解することにより、GPTCacheがLLMを搭載したアプリケーションのパフォーマンスと費用効率を効果的に改善することを保証できます。

    ラップアップ

    gptcacheは、LLMアプリケーションのパフォーマンスと費用効率を最適化するための強力なツールです。正確で関連性のある応答を確実に得るには、適切な構成、監視、およびキャッシュ評価戦略が必要です。

    LLMSが初めての場合、これらのリソースが役立つ場合があります:

    • 大規模な言語モデルの開発
    • LangchainおよびGPT
    • を使用したLLMアプリケーションの構築 pytorchでLLMをトレーニングします
    • cohere apiを使用してLLMを使用します
    • LANGCHAIN faqs
  • キャッシュを初期化してGPTCacheを実行してOpenaI APIをインポートするにはどうすればよいですか?

キャッシュを初期化してopenai APIをインポートするには、gptcache.adapterからopenaiをインポートします。これにより、データマネージャーが正確なキャッシュに一致するように自動的に設定されます。これを行う方法は次のとおりです

CHATGPTに2回同じ質問をするとどうなりますか?

! pip install -q gptcache
ログイン後にコピー
ログイン後にコピー

gptcacheは、以前の応答をキャッシュに保存し、APIに新しいリクエストを行う代わりにキャッシュから回答を取得します。したがって、2番目の質問に対する答えは、ChatGPTを再度リクエストすることなくキャッシュから得られます。

以上がGPTCacheチュートリアル:LLMアプリケーションの効率の向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート