30 秒看懂
在这期 2024 年 3 月的教程中,Matthew Berman 展示当时的 LM Studio 界面,包括模型选择、并行推理和兼容 OpenAI 风格的本地 API。他的 JSON 示例并非总能遵循所要求的结构。视频简介披露,Berman 是 LM Studio 和 CrewAI 的投资人。
- 1估计模型是否适合LM Studio 显示量化模型文件大小和兼容性估计。
- 2硬件加速Berman 在示例中启用 Apple Metal 和 GPU 层后速度提高;这只是单台机器的观察。
- 3同时加载多个模型演示将 Gemma 和 Mistral 同时保存在内存中,约占用 7.3 GB。
- 4JSON 需要验证即使启用了 JSON 模式,模型也没有始终遵循所需结构。
- 5本地 API本地服务器让兼容客户端列出模型,并为补全请求选择模型。
要点建议
- 模型大小、量化方式和可用内存会影响本地模型能否运行。
- 硬件加速提高了 Berman 单次测试中的速度,但结果因机器和工作负载而异。
- 同时加载多个模型可以进行比较和并行请求,但会消耗更多资源。
- JSON 模式和提示词不能消除验证结构化输出的必要性。
- 本地服务器为兼容应用提供模型列表和补全接口。
按章节阅读整理后的全文
寻找并加载本地模型
Berman 介绍 2024 年的界面、选择模型文件并讨论内存估计,然后在聊天中加载 Gemma。
在这期 2024 年 3 月的教程中,我再次介绍 LM Studio 及其无需编程运行本地语言模型的能力,重点是同时加载多个模型、结构化输出和本地 API。视频简介披露我是 LM Studio 和 CrewAI 的投资人。
演示中的版本提供 macOS、Windows 和 Linux 下载。安装后,我在界面中搜索托管于 Hugging Face 的 Mixtral 模型;兼容的文件格式和模型可用性取决于软件及具体模型,因此不能保证所有模型都能运行。

LM Studio 会估计量化模型是否可能适合当前机器,以及是否可能使用 GPU 卸载。它显示文件大小和量化说明,帮助用户在较小文件和潜在质量取舍之间选择;这些是估计,并非保证。
我选择一个模型文件演示下载过程,展示进度后取消。合适的选择既取决于可用内存,也取决于模型和量化方式。
在聊天页,我加载一个已经下载的 20 亿参数 Gemma 模型。应用自动选择预设,我发送一个简单的笑话请求来演示本地推理。
聊天工具与硬件设置
他查看聊天控制,并启用 Apple Metal 加速,报告自己机器上的速度。
聊天界面可以分支对话、复制或编辑消息、重新生成回答以及继续输出。它还显示首 token 时间、生成速度、CPU 线程数和 GPU 层数。
在我的 Apple 电脑上,我启用 Metal 支持、重新加载模型并增加 GPU 层数。这个小示例显示的速度从约每秒 20 token 变成 73 token;这是一次观察,并非通用基准。
多模型与 JSON
Playground 同时加载 Gemma 和 Mistral。Berman 测试顺序和并行生成,并观察格式错误。
Playground 允许我将多个模型加载到内存中。我选择 Gemma 和 Mistral,并为它们设置较短的标识符,也可用于 API 请求。
两个模型同时加载,在演示中的 32 GB 机器上约占用 7.3 GB。能同时容纳多少模型取决于模型大小、上下文和可用资源;我对加载更多模型的估计仅供示意。

界面提供用于结构化输出的 JSON 模式,但模型自身的表现仍然重要。我先把同一个笑话请求依次发送给两个模型,查看输出和报告的速度。
在这个例子中,仅启用 JSON 模式并没有得到我想要的格式。明确要求输出 JSON 后有所改善,但两个模型选择了不同的结构。

我指定包含 joke、setup 和 punchline 字段的嵌套结构。此次尝试中 Mistral 遵循了要求,Gemma 没有;演示说明结构化输出需要验证,不能假定它一定正确。
我关闭顺序发送,让两个已加载的模型同时生成。它在演示机器上可用,但并行推理会争用内存和算力,可能不适合资源较少的电脑。
限流与本地 API
他展示资源限流和本地服务器。API 请求可选择已加载的模型,也可以考虑与智能体框架集成。
多个模型同时生成时,限流控制可以减少 CPU 和 GPU 压力,但会使计算变慢。我指出了这个版本显示的默认设置。
我启动本地服务器,它提供与 OpenAI 客户端使用方式相似的 API 接口。模型列表接口显示已加载的模型,补全请求则指定要使用的模型标识符。

我在终端请求中更改模型名称,演示如何在 Gemma 和 Mistral 之间切换而不必重新加载。两个模型都保留在内存中,因此这次测试中的切换很方便。
我讨论如何在 AutoGen 以及可能的 CrewAI 等智能体框架中使用本地接口,让不同智能体使用不同模型。具体配置和兼容性取决于所使用的版本。
我鼓励观众尝试本地模型和多智能体工作流。加载多个模型可以用于比较或协调,但输出质量是否提高仍是需要测试的假设,演示并未保证这一点。
同频道的其他文章
34:21EN → 简体中文
0:36EN → 简体中文
25:50EN → 简体中文
32:20EN → 简体中文
1:03:37EN → 简体中文
0:53EN → 简体中文