[ChatStream] LLMの読み込みが長いときは Generator Mock レスポンス

[ChatStream] LLMの読み込みが長いときは Generator Mock レスポンス

こんにちは! (株)Qualiteg プロダクト開発部 です!

本稿では、LLMの読み込みに時間がかかるときに使えるテクニックについてご紹介いたします。

テスト用途や、ChatStream の API をつかったサンプルアプリを実装したいときに、何度か ChatStream を再起動しては、試してみたいというシーンがあります。そういうときに、本来は LLM として読み込まなくても、ChatStreamのAPIにそった”決まり切った”レスポンスで問題がないという場合があります。

このとき、サイズの小さなLLMを読んで読み込み時間を短縮するというワザもあるのですが、そもそも、固定的なレスポンスを返してくれればそれでOKという場合は、 Mockレスポンス を指定することができます。

再起動のたびに、 LLM を読み込む時間にストレスを感じていた方はぜひこちらをお試しくださいませ!

Generator Mockレスポンスの利用(高速起動)

Generator Mockレスポンスを使用すると読み込みに時間のかかる事前学習済言語モデルのかわりに、ダミーの文章を生成させることができます

使用方法

chat_stream = ChatStream(
    use_mock_response=True,
    mock_params={"type": "echo", "initial_wait_sec": 1, "time_per_token_sec": 1},
    chat_prompt_clazz=ChatPrompt,
)

ChatStream クラスのコンストラクタ引数

  • use_mock_response ... True ジェネレーターモックレスポンスを有効にする。
  • mock_params ... ジェネレーターモックレスポンスの生成ルールを指定する
  • chat_prompt_clazz ... プロンプト履歴管理クラス

mock_params パラメータ

パラメータ名 パラメータ値 説明
type round 100ワード程度のダミー文章をラウンドロビン方式で生成する
long 長文のダミー文章を生成する
echo ユーザーが入力した文字列をそのまま返す
initial_wait_sec 数値(秒) 文章生成開始までの待ち時間を 秒 で指定する
time_per_token_sec 数値(秒) 1トークンあたりの生成時間。

上記設定のようにすると、 ChatStream はLLM を読み込む必要がないため、一瞬!で起動します。

Transformer Mockとの違い

類似の機能に Transformer Mockモード があります。

https://blog.qualiteg.com/transformerying-da-womotukusuru/

Transformer Mock モードは 実際のModel,Tokenizerの挙動を記録して再現するのにたいして Generator Mock は
入力を受け取った後、ダミーの文章で応答します。 Transformer Mock モードは決められた入力しか受け付けられませんが、Generator Mockは
どのような入力でもダミーの文章で応答します。
用途に応じて使い分けることができます。

Read more

LLM推論基盤プロビジョニング講座 第3回 使用モデルの推論時消費メモリ見積もり

LLM推論基盤プロビジョニング講座 第3回 使用モデルの推論時消費メモリ見積もり

こんにちは!前回はLLMサービスへのリクエスト数見積もりについて解説しました。今回は7ステッププロセスの3番目、「使用モデルの推論時消費メモリ見積もり」について詳しく掘り下げていきます。 GPUメモリがリクエスト処理能力を決定する LLMサービス構築において、GPUが同時に処理できるリクエスト数はGPUメモリの消費量によって制約されます。 つまり、利用可能なGPUメモリがどれだけあるかによって、同時に何件のリクエストを処理できるかがほぼ決まります。 では、その具体例として、Llama3 8B(80億パラメータ)モデルをNVIDIA RTX A5000(24GB)にロードするケースを考えてみましょう。 このGPUには24GBのGPUメモリがありますが、すべてをリクエスト処理に使えるわけではありません。最初にモデル自体が一定量のメモリを消費し、残りの領域で実際のリクエスト処理を行います。 GPUメモリ消費の二大要素 GPUの消費メモリ量は主に以下の2つの要素によって決まります 1. モデルのフットプリント LLMをGPUに読み込んだときに最初に消費されるメモリ

By Qualiteg コンサルティング
システムとcondaのC++標準ライブラリ(libstdc++)のバージョン違い問題による事象と対処法解説

システムとcondaのC++標準ライブラリ(libstdc++)のバージョン違い問題による事象と対処法解説

こんにちは! 先日、dlibをつかったPythonアプリケーション(conda環境で動作する)作っていたところ、以下のようなエラーに遭遇しました。 ImportError: /home/mlu/anaconda3/envs/example_env/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/mlu/anaconda3/envs/example_env/lib/python3.10/site-packages/_dlib_pybind11.cpython-310-x86_64-linux-gnu.so) 「dlib_pybind11モジュールがGLIBCXX_3.4.32を要求してるけど、みつからない!」という感じのエラーですね。

By Qualiteg プロダクト開発部
LLM推論基盤プロビジョニング講座 第2回 LLMサービスのリクエスト数を見積もる

LLM推論基盤プロビジョニング講座 第2回 LLMサービスのリクエスト数を見積もる

こんにちは! 今回はLLM推論基盤プロビジョニング講座 第2回です! STEP2 LLMサービスへのリクエスト数見積もり それでは、早速、LLM推論基盤プロビジョニングの第2ステップである「リクエスト数見積もり」の重要性と方法を解説いたします。 LLMサービスを構築する際に必要となるGPUノード数を適切に見積もるためには、まずサービスに対して想定されるリクエスト数を正確に予測する必要があります。 リクエスト数見積もりの基本的な考え方 LLMサービスへの想定リクエスト数から必要なGPUノード数を算出するプロセスは、サービス設計において非常に重要です。過小評価すればサービス品質が低下し、過大評価すれば無駄なコストが発生します。このバランスを適切に取るための基礎となるのがリクエスト数の見積もりです。 想定リクエスト数の諸元 リクエスト数を見積もるための5つの重要な要素(諸元)をみてみましょう。 1. DAU(Daily Active Users): 1日あたりの実際にサービスを利用するユーザー数です。これはサービスの規模を示す最も基本的な指標となります。 2. 1日

By Qualiteg コンサルティング
Zoom会議で肩が踊る?自動フレーミング映像安定化とAIによる性能向上の可能性

Zoom会議で肩が踊る?自動フレーミング映像安定化とAIによる性能向上の可能性

こんにちは! 本日は、自動フレーミング映像の安定化に関するアルゴリズム・ノウハウを解説いたします 第1章 問題の背景と目的 バストアップ映像を撮影する際、特にオンラインミーティングやYouTubeなどのトーク映像では、人物がうなずく、首を振るなどの自然な動作をした際に「首まわりや肩がフレーム内で上下に移動してしまう」という現象がしばしば起こります。これは、多くの場合カメラや撮影ソフトウェアが人物の「目や顔を画面中央に保とう」とする自動フレーミング機能の働きに起因します。 撮影対象の人物が頭を下げた際に、映像のフレーム全体が相対的に上方向へシフトし、その結果、本来動いていないはずの肩の部分が映像内で持ち上がっているように見えてしまう現象です。 本稿では、この問題を撮影後の後処理(ポストプロセッシング)のみを用いて、高速、高い精度かつロバストに解決する手法をご紹介します。 前半では、従来のCV(コンピュータービジョン)の手法を使い高速に処理する方法をご紹介します。後半では、AIを使用してより安定性の高い性能を実現する方法について考察します。 第2章 古典手法による肩の上下

By Qualiteg 研究部