ドキュメント

API

アイドルTTLと自動追放

オプションで、指定した時間が経過したアイドル状態のモデルを(TTLで)自動的にアンロードします。

LM Studio 0.3.9 (b1) では、APIモデルに*time-to-live* (TTL) を設定し、新しいモデルをロードする前に以前にロードされたモデルを自動的に排出する機能が導入されました。

これらの機能は、LM Studioのオンデマンドモデルローディング(JIT)を補完し、効率的なメモリ管理を自動化し、手動介入の必要性を減らします。

背景

  • JITローディングにより、LM Studioモデルを他のアプリで簡単に使用できます。使用する前に手動でモデルをロードする必要はありません。しかし、これはモデルが使用されていない場合でもメモリにロードされたままになる可能性があることも意味します。[デフォルト:有効]

  • (新機能) アイドルTTL(正確にはTime-To-Live)は、モデルがリクエストを受け取らずにメモリにロードされたままの状態をどのくらいの期間維持できるかを定義します。TTLが期限切れになると、モデルは自動的にメモリからアンロードされます。TTLは、リクエストペイロードのttlフィールドを使用して設定できます。[デフォルト:60分]

  • (新機能) 自動排出は、新しいモデルをロードする前に、以前にJITロードされたモデルをアンロードする機能です。これにより、クライアントアプリからモデルを切り替える際に、手動でアンロードする必要がなくなります。この機能は、開発者タブ > サーバー設定で有効または無効にできます。[デフォルト:有効]

アイドルTTL

ユースケース: Zed、Cline、またはContinue.devのようなアプリを使用して、LM Studioによって提供されるLLMと対話すると想像してください。これらのアプリはJITを活用して、初めて使用する際にモデルをオンデマンドでロードします。

問題: モデルを積極的に使用していない場合、メモリにロードされたままにしたくない場合があります。

解決策: APIリクエスト経由でロードされたモデルにTTLを設定します。アイドルタイマーは、モデルがリクエストを受け取るたびにリセットされるため、使用中は消えません。モデルは、作業を行っていない場合にアイドル状態と見なされます。アイドルTTLが期限切れになると、モデルは自動的にメモリからアンロードされます。

アプリデフォルトのアイドルTTLを設定する

デフォルトでは、JITロードされたモデルのTTLは60分です。JIT経由でロードされたすべてのモデルに対して、以下のようにデフォルトのTTL値を設定できます。

undefined

デフォルトのTTL値を設定します。リクエストペイロードで指定されない限り、すべてのJITロードされたモデルに使用されます。

APIリクエストでモデルごとのTTLを設定する

JITローディングが有効な場合、モデルへの*最初の*リクエストでモデルがメモリにロードされます。リクエストペイロードでそのモデルのTTLを指定できます。

これは、OpenAI互換APILM StudioのREST APIの両方を対象とするリクエストに有効です。


curl https://:1234/api/v0/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1-distill-qwen-7b",
+   "ttl": 300,
    "messages": [ ... ]
}'
これにより、JITロードされた場合、このモデルのTTLは5分(300秒)に設定されます。

lmsでロードされたモデルのTTLを設定する

デフォルトでは、lms loadでロードされたモデルにはTTLがなく、手動でアンロードするまでメモリにロードされたままになります。

以下のように、lmsでモデルをロードする際にTTLを設定できます。

lms load <model> --ttl 3600
<model>をTTL 1時間(3600秒)でロードします。

サーバータブでモデルをロードする際にTTLを指定する

サーバータブでモデルをロードする際にも、以下のようにTTLを設定できます。

undefined

サーバータブでモデルをロードする際にTTL値を設定します。

JITロードされたモデルの自動排出を設定する

この設定により、JIT経由でロードされた新しいモデルが、以前にロードされたモデルを自動的にアンロードすることを保証できます。

これは、外部アプリからモデルを切り替えたい場合に、未使用のモデルがメモリに蓄積されることを心配せずに済むため便利です。

undefined

JITロードされたモデルの自動排出を、開発者タブ > サーバー設定で有効または無効にします。

自動排出がONの場合(デフォルト)

  • 一度に最大1つのモデルがメモリにロードされたままになります(JIT経由でロードされた場合)。
  • JITロードされていないモデルは影響を受けません。

自動排出がOFFの場合:

  • 外部アプリからモデルを切り替えると、以前のモデルはメモリにロードされたままになります。
  • モデルは、以下のいずれかが発生するまでロードされたままになります。
    • TTLが期限切れになる
    • 手動でアンロードする

この機能は、TTLと連携して、ワークフローのメモリ管理を改善します。

用語集

TTL:Time-To-Live(生存時間)。ネットワークプロトコルやキャッシュシステムから借用された用語です。リソースが古くなったと見なされて排出される前に、どれだけ割り当てられたままでいられるかを定義します。

このページのソースはGitHubで利用可能です。