在具有 24GB 内存的 M4 上运行本地模型

2026-05-11 1 阅读 shintoist
我一直在尝试断断续续地运行本地模型,我终于找到了一个似乎可以合理工作的设置。这与 SOTA 模型的输出完全不同,但能够让本地模型执行基本任务、研究和规划的兴奋感足以弥补这一点!无需互联网连接!更不用说这是减少你对美国大型科技公司依赖的一种方式,即使只是一点点。但我得说,把这些东西设置好并不容易。首先,您必须选择运行模型的方式:Ollama、llama.cpp 或 LM Studio。每一种都有自己的怪癖和局限性,并且它们不提供所有相同的模型。当然,你必须选择你的模型。您想要适合内存的最佳模型,并且仍然为您提供足够的空间来运行常规的 Electron 应用程序,更不用说您可以拥有至少 64K 上下文窗口,但理想情况下为 128K 或更多。最近,我尝试了 Qwen 3.6 Q3、GPT-OSS 20B、Devstral Small 24B,它们在技术上都适合内存,但实际上无法使用,而 Gemma 4B 运行良好,但在工具使用方面确实很困难。然后还有大量的配置选项需要调整。从更广为人知的选项(如温度)到更深奥的选项(如 K 缓存量化类型)。其中许多工具都附带了一组基本的推荐选项,但合适的选项可能取决于您是否启用思考等因素! Qwen 3.5-9B(4b 定量)qwen3 。 5 - 9 b @q4_k_s(HuggingFace 链接)是我所获得的最佳模型,每秒处理合理的约 40 个令牌,启用思考,成功使用工具,以及 128K 上下文窗口,在 LM Studio 上运行。与 SOTA 模型相比,它更容易分心,有时会陷入循环,它会误解请求等。但对于可以在 24GB Macbook Pro 上运行的东西来说,它出奇地好,同时也为许多其他东西运行留下了空间!以下是思维模式和编码工作的推荐设置: 精确编码任务(例如 WebDev)的思维模式:温度=0.6、top_p=0.95、top_k=20、min_p=0.0、presence_penalty=0.0、repetition_penalty=1.0 为了启用思维,我还必须选择模型,转到配置,滚动到推理选项卡的底部,然后添加 { % - set enable_thinking = true % } 添加到提示模板。我一直通过 pi 和 OpenCode 使用它。我还没有完全决定我更喜欢哪一个。 Pi 感觉有点敏捷,但尽管我真的很欣赏线束构建本身和所有定制的想法,但我忍不住希望它带有一些合理的默认值。我觉得你很容易最终会花费更多的时间来调整你的 pi 设置,使其恰到好处,而不是你在实际项目上花费的时间! Pi 设置 这是 ~/. pi/代理/模型。 json : { "providers" : { "lmstudio" : { "baseUrl" : "http://localhost:1234/v1" , "api" : "openai-completions" , "apiKey" : "lm-studio" , "models" : [ { "id" : "qwen3.5-9b@q4_k_s" , "reasoning" : true , "compat" : { "thinkingFormat" : "qwen-chat-template" } } ] } } } 并隐藏分散注意力的想法,将 "hideThinkingBlock" : true 添加到您的 ~/ . pi/代理/设置。 json. OpenCode 设置 ~/.配置/开放代码/开放代码。 json { "$schema" : "https://opencode.ai/config.json" , "provider" : { "lmstudio" : { "npm" : "@ai-sdk/openai-兼容" , "name" : "LM Studio (本地)" , "options" : { "baseURL" : "http://127.0.0.1:1234/v1" } , "models" : { "qwen3.5-9b@q4_k_s" : { "名称" : "Qwen 3.5 9B Q4_K_S" , "工具" : true , "context_length" : 131072 , "max_tokens" : 32768 } } } } , "模型" : "lmstudio/qwen3.5-9b@q4_k_s" } 与 SOTA 模型的比较 像 Qwen 3.5 9B (Q4) 这样的模型远不能像 SOTA 模型那样在较长时间内独立解决复杂问题。要求它一次性构建一个完整的应用程序是没有意义的,你只会烧伤大腿而无法从中得到任何东西。真正有效的是一个更具交互性的工作流程,您可以在其中逐步与模型进行清晰的沟通,并为其提供大量指导。我确信这对你们很多人来说听起来毫无意义,为什么要使用一个必须在其工作时照顾它的模型,但我实际上发现它鼓励我更加投入。使用 SOTA 模型的缺点是,即使您试图积极阻止这种情况发生,它们也很容易让您卸下所有认知工作。对于本地模式,我必须进行更多的思考和规划,我必须更加具体,但它仍然会充当研究助理、橡皮鸭和立即回忆起大量编程语言细节和命令行调用的专家。这并不是大型人工智能公司所宣传的 10 倍生产力提升,但它确实是一种东西,而且很有趣。为了让您了解一些有效和无效的方法,这里有一些非常基本的示例。示例 1:我想要修改 Elixir linter