文档

空闲 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 加载的模型的 TTL 为 60 分钟。您可以为通过 JIT 加载的任何模型配置默认 TTL 值,如下所示

undefined

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

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

当启用 JIT 加载时,对模型的第一个请求将模型加载到内存中。您可以在请求负载中为此模型指定 TTL。

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


curl https://127.0.0.1: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
加载 <模型>,TTL 为 1 小时(3600 秒)

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

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

undefined

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

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

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

当您想要从另一个应用程序切换模型而无需担心内存被未使用的模型堆积时,这非常有用。

undefined

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

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

  • 一次最多 1 个模型保持加载在内存中(当通过 JIT 加载时)
  • 非 JIT 加载的模型不受影响

当自动驱逐为关闭时:

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

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

命名法

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