LM StudioLM Studio

空闲 TTL 和自动清除

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

背景

  • 即时(JIT)加载使得在其他应用中使用您的 LM Studio 模型变得非常容易:您无需在使用前手动加载模型。然而,这也意味着模型即使在不被使用时也可能会一直保留在内存中。[默认:已启用]

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

  • (新增)自动逐出是一项在加载新模型之前卸载先前通过 JIT 加载的模型的功能。这使得您可以轻松地从客户端应用在不同的模型之间进行切换,而无需先手动卸载它们。您可以在“开发者(Developer)”标签页 > “服务器设置(Server Settings)”中启用或禁用此功能。[默认:已启用]

空闲 TTL

使用场景:假设您正在使用类似 ZedClineContinue.dev 的应用程序,与 LM Studio 提供的 LLM 进行交互。这些应用程序利用 JIT 技术,在您首次使用模型时按需加载它们。

问题:当您没有积极使用模型时,您可能不希望它一直占用内存。

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

设置应用默认空闲 TTL

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

在 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
加载 TTL 为 1 小时(3600 秒)的 <model>

在服务器标签页中加载模型时指定 TTL

您也可以在服务器标签页中加载模型时设置 TTL,如下所示

为 JIT 加载的模型配置自动逐出

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

当您想从另一个应用程序切换不同的模型,又不想担心未使用的模型占用累积内存时,这非常有用。

当自动逐出处于开启(ON)状态时(默认)

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

当自动逐出处于关闭(OFF)状态时:

  • 从外部应用切换模型时,先前的模型将继续保留在内存中
  • 模型将保持加载,直到满足以下任一条件
    • 它们的 TTL 过期
    • 您手动卸载它们

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

术语定义

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

© . This site is unofficial and not affiliated with Element Labs, Inc.