[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

Raspberry Pi 5を堅牢化する。SSH鍵認証・UFW・fail2banと、再起動でIPv6が復活する罠

Raspberry Pi 5を堅牢化する。SSH鍵認証・UFW・fail2banと、再起動でIPv6が復活する罠

セットアップ直後のRaspberry Pi 5は、パスワード認証が有効なまま、ファイアウォールなし、更新可能なパッケージ172件と無防備です。SSHの鍵認証化・UFW・fail2ban・自動更新・IPv6無効化を実コマンドと実測検収で解説します。sysctlのIPv6無効化が再起動で復活する現象と恒久対策も実機で確認しました。

By Qualiteg プロダクト開発部
LINE Botをローカルで開発する。WebhookのURLが毎回変わる問題を固定URLで解決する

LINE Botをローカルで開発する。WebhookのURLが毎回変わる問題を固定URLで解決する

こんにちは! LINE Botを作ろうとして最初にぶつかる壁は、コードではなくWebhookです。 LINEのMessaging APIは、ユーザーがBotに送ったメッセージを、LINEのサーバーからこちらのサーバーへHTTPSのPOSTで通知してきます。 この受け口(Webhook URL)にはインターネットから届くHTTPSのURLしか指定できず、開発中の http://localhost:5000 をそのまま書くことはできません。 トンネルツールで一時URLを発行して回避する方法が定番ですが、今度は別の問題が待っています。トンネルの方式によっては、起動のたびにランダムなURLが発行されます。その場合、開発を再開するたびにLINE Developersコンソールを開いてWebhook URLを書き換えることになります。コードを直すたび、翌日再開するたび、まずURLの貼り直しから。これが地味に堪えます。 結論から言うと、 ローカルPCの開発サーバーに「変わらない公開URL」を1本付けてしまえば、Webhook URLの設定は最初の1回だけで終わります。 この記事では、L

By Qualiteg プロダクト開発部