文档

闲置 TTL 和自动驱逐

ℹ️ 需要 LM Studio 0.3.9 (b1),当前处于 Beta 版。请从此处下载

LM Studio 0.3.9 (b1) 引入了为 API 模型设置存活时间(TTL)的功能,并可选择在加载新模型之前自动驱逐先前已加载的模型。

这些功能补充了 LM Studio 的按需模型加载(JIT),以实现高效内存管理的自动化并减少手动干预的需要。

背景

  • JIT 加载使得在其他应用程序中使用 LM Studio 模型变得容易:您无需在使用模型之前手动加载它。然而,这也意味着模型即使在不使用时也可以保持加载在内存中。[默认:启用]

  • (新增) 闲置 TTL(技术上:存活时间)定义了模型在未收到任何请求的情况下可以在内存中保持加载的时长。当 TTL 过期时,模型将自动从内存中卸载。您可以使用请求负载中的 ttl 字段设置 TTL。[默认:60 分钟]

  • (新增) 自动驱逐是一项功能,可在加载新模型之前卸载先前通过 JIT 加载的模型。这使得从客户端应用程序轻松切换模型成为可能,而无需先手动卸载它们。您可以在“开发者”选项卡 > “服务器设置”中启用或禁用此功能。[默认:启用]

闲置 TTL

用例:想象您正在使用像 ZedClineContinue.dev 这样的应用程序与 LM Studio 提供的 LLM 进行交互。这些应用程序利用 JIT 在您首次使用模型时按需加载它们。

问题:当您不积极使用模型时,您可能不希望它继续加载在内存中。

解决方案:为通过 API 请求加载的模型设置 TTL。闲置计时器在模型每次收到请求时都会重置,因此在使用时它不会消失。如果模型没有执行任何工作,则被视为闲置。当闲置 TTL 过期时,模型将自动从内存中卸载。

设置应用程序默认闲置 TTL

默认情况下,JIT 加载的模型有一个 60 分钟的 TTL。您可以为任何通过 JIT 加载的模型配置默认 TTL 值,如下所示

undefined

设置默认 TTL 值。将用于所有 JIT 加载的模型,除非在请求负载中另有指定

在 API 请求中设置每个模型的 TTL

当 JIT 加载启用时,对模型的首次请求会将其加载到内存中。您可以在请求负载中为该模型指定 TTL。

这适用于针对 OpenAI 兼容 APILM Studio 的 REST API 的请求


curl http://localhost:1234/api/v0/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-r1-distill-qwen-7b",
+   "ttl": 300,
    "messages": [ ... ]
}'
如果模型通过 JIT 加载,这将为该模型设置一个 5 分钟(300 秒)的 TTL。

为使用 lms 加载的模型设置 TTL

默认情况下,使用 lms load 加载的模型没有 TTL,并将保持加载在内存中,直到您手动卸载它们。

您可以为使用 lms 加载的模型设置 TTL,如下所示

lms load <model> --ttl 3600
加载一个 <model>,TTL 为 1 小时(3600 秒)

在服务器选项卡中加载模型时指定 TTL

您也可以在服务器选项卡中加载模型时设置 TTL,如下所示

undefined

在服务器选项卡中加载模型时设置 TTL 值

配置 JIT 加载模型的自动驱逐

通过此设置,您可以确保通过 JIT 加载的新模型会自动首先卸载先前加载的模型。

当您希望从另一个应用程序切换模型而无需担心内存因未使用模型而累积时,这非常有用。

undefined

在“开发者”选项卡 > “服务器设置”中启用或禁用 JIT 加载模型的自动驱逐

当自动驱逐开启时 (默认)

  • 在任何给定时间,内存中最多只保留 1 个模型(当通过 JIT 加载时)
  • 非 JIT 加载的模型不受影响

当自动驱逐关闭时:

  • 从外部应用程序切换模型时,将使之前的模型保持加载在内存中
  • 模型将保持加载状态,直到
    • 它们的 TTL 过期
    • 您手动卸载它们

此功能与 TTL 协同工作,为您的工作流程提供更好的内存管理。

术语

TTL:存活时间 (Time-To-Live),是一个从网络协议和缓存系统借用的术语。它定义了资源在被视为过时并被驱逐之前可以保持分配的时长。