☰
多台 Mac 共享一个模型:mlx-serve LAN 共享配置教程(Bonjour 零配置,无需云)
2026/10/11 4:03:46 网站建设 项目流程

【免费下载链接】mlx-serve

Native LLM inference server for Apple Silicon. OpenAI + Anthropic API compatible. No Python. Zig backend, Swift frontend macOS app with chat, music, voice, video generation.

项目地址:https://gitcode.com/gh_mirrors/ml/mlx-serve
点击查看免费下载

mlx-serve 是面向 Apple Silicon 的原生 LLM 推理服务器(兼容 OpenAI + Anthropic API,零 Python 依赖)。通过它内置的LAN 共享能力,你可以把大模型放在一台内存充裕的 Mac 上,让局域网里的其他 Mac 直接调用——不用配 IP、不用端口映射、不经过任何云服务。本教程用 3 步带你完成mlx-serve LAN 共享的 Bonjour 零配置,全程约 5 分钟。

整个功能由两个开关控制,默认全部关闭:

角色参数作用
🖥️ 共享端(模型所在的 Mac)--lan-share all或--lan-share <模型ID,…>发布 Bonjour 服务,仅开放推理接口
💻 使用端(想用模型的 Mac)--lan-discover自动发现网络内对端及其模型,透明代理请求

工作原理:Bonjour 自动发现,为什么不用配 IP

mlx-serve 的 LAN 共享复用了 macOS 原生的Bonjour(mDNS)机制,实现位于 src/lan.zig,分为互相独立的两半:

  1. 发布(SHARE):共享端向局域网注册一个_mlxserve._tcp服务,实例名默认取主机名(可用--lan-name自定义);
  2. 发现(DISCOVER):使用端扫描局域网,找到对端后拉取其/v1/models,并把远程模型以模型ID@对端名的格式镜像进本地模型列表(例如gemma-4-e4b-it-4bit@studio-mac)。

客户端请求远程模型时,mlx-serve 会把它逐字节透明代理给对端 Mac(流式 SSE 也原样透传),对端模型按需在主机上冷加载。只暴露推理面(对话、embeddings、图像/语音/音乐/视频/3D 生成),模型装卸、指标、状态页等管理接口仍仅限本 Mac。

在 MLX Serve 图形界面中,设置 ▸ LAN Sharing可按模型逐个勾选共享;对端的共享模型会以模型 · 对端的形式出现在模型选择器和托盘菜单中,聊天与各类生成面板直接可选。

第 1 步:在模型所在的 Mac 上开启共享

假设大模型放在一台 M 系列 Mac 上,命令行直接启动:

mlx-serve --serve \ --model-dir ~/.mlx-serve/models \ --lan-share all \ --lan-name studio-mac
  • --lan-share all共享全部模型;也可以传逗号分隔的 ID 只共享部分,如--lan-share gemma-4-e4b-it-4bit(目录名或org/name均可匹配);
  • --lan-name studio-mac是其他 Mac 看到的名字,不填则默认取主机名;
  • 默认端口11234,默认绑定0.0.0.0(局域网可达),完整参数见 docs/cli.md。

用图形界面的话:打开设置 ▸ LAN 共享,启用后勾选要分享的模型即可。

第 2 步:让其他 Mac 自动发现模型

在使用端 Mac(本机没有模型、或想复用别人大模型)上加一个发现开关:

mlx-serve --serve --model-dir ~/.mlx-serve/models --lan-discover

不需要任何 IP 或端口配置——两台 Mac 通过 Bonjour互相发现。十秒内,远程模型就会出现在使用端的/v1/models中,ID 形如模型ID@studio-mac,并带有lan_peer标记。

💡 这一步是真正的零配置:DHCP 换 IP、重启网络,共享链路都会自动重新收敛,无需人工干预。

第 3 步:像调用本地模型一样调用它

调用方式与 OpenAI API 完全一致,只是模型名写成模型ID@对端名:

curl http://localhost:11234/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{"model":"gemma-4-e4b-it-4bit@studio-mac", "messages":[{"role":"user","content":"你好"}]}'

流式("stream": true)、Claude Code、Ollama 兼容客户端指向localhost都能直接用上对端的大模型;/v1/load-model、/v1/unload-model对远程模型返回成功空操作,无需处理。

验证 LAN 共享是否生效

  • 使用端:curl http://localhost:11234/v1/models,应出现@studio-mac后缀的模型条目;
  • 共享端:日志出现[lan] peer "…" at x.x.x.x:11234 shares N models;
  • 实测一问:对远程模型发一条对话,能看到 token 实时流回。

完整自动化流程可参考 tests/test_lan_share.sh:发现 → 远程对话(流式 + 非流式)→ 装卸空操作 → 管理接口 403 边界。

安全边界:LAN 共享到底暴露了什么

mlx-serve 把局域网共享设计成"默认安全":

  • ✅ 对局域网开放:/health、/v1/models、对话/completions/messages/responses/embeddings 及各媒体生成接口;
  • ❌ 局域网客户端永远403:模型装卸、/metrics、状态页等管理接口;
  • 🔁 经@peer隧道的请求不会多级跳转,杜绝代理环;
  • ⚠️ 发给共享模型的提示词会在托管 Mac 上以明文参与计算(设置页有相应提示)——建议只在受信任的家庭/办公网络内共享;
  • 想再加一道门槛,可搭配--api-key:localhost 请求不受影响,非本地请求必须带密钥。

常见问题:LAN 共享不生效怎么办

症状原因与处理
看不到远程模型确认两台 Mac 在同一 Wi-Fi;macOS 首次运行会弹出"允许访问本地网络",需点允许;使用端必须带--lan-discover
启动提示 "matched no models"--lan-share列表没有匹配到任何模型,核对模型 ID(目录名或org/name)
请求报 "no longer shares"对端活着但确实没共享该模型,错误信息会如实说明,无需等待
对端 Mac 重启后请求代理会等待重新发现再响应,不会立刻误报 404;纯共享端(未开发现)会提示 "discovery is off" 而不是误导性的"对端离线"
首次请求偏慢模型在托管端按需冷加载,属正常现象

共享调用的速度有多快

LAN 共享只是一层透明代理,不引入调度排队,实际速度完全取决于托管端的 GPU。mlx-serve 在同一台 Apple Silicon 上解码可达239 tokens/s,多会话并发叠加 MTP 投机解码还能进一步提升吞吐:

参考资料

  • CLI 与参数文档:docs/cli.md · docs/zh-CN/cli.md
  • FAQ(含"多台 Mac 能否共享模型"一节):docs/faq.md · docs/zh-CN/faq.md
  • 图形界面指南:docs/app.md
  • LAN 共享实现源码:src/lan.zig · 服务端路由门禁:src/server.zig
  • 端到端集成测试:tests/test_lan_share.sh

【免费下载链接】mlx-serve

Native LLM inference server for Apple Silicon. OpenAI + Anthropic API compatible. No Python. Zig backend, Swift frontend macOS app with chat, music, voice, video generation.

项目地址:https://gitcode.com/gh_mirrors/ml/mlx-serve
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询