文档

核心

空闲 TTL 和自动逐出

可选择在一定时间(TTL)后自动卸载空闲模型

背景

  • 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 https://: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,是借用自网络协议和缓存系统的一个术语。它定义了资源在被视为过时并被逐出之前可以保持分配状态的时间。

此页面的源文件可在 GitHub 上获取