【免费下载链接】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.
mlx-serve 是一个面向 Apple Silicon 的本地 LLM 推理服务器,纯 Zig 实现、无 Python 依赖,兼容 OpenAI 与 Anthropic API。本文带你完成生产部署的三件核心事:用--api-key给服务加一道访问门禁、把 Mac 变成常驻的无头推理节点、以及开启--metrics后如何接入 Prometheus 监控——最后附上一份可直接照抄的上线前观测清单。
一、无头模式启动:常驻 Mac 服务的一行命令
mlx-serve 的 CLI 从设计上就服务于脚本、launchd 和 headless Mac 场景(docs/cli.md)。默认监听--host 0.0.0.0 --port 11234,三种典型启动方式:
# 锁定单个模型常驻服务 mlx-serve --model ~/.mlx-serve/models/mlx-community/gemma-4-e4b-it-4bit --serve --port 11234 # 整个模型目录按名按需加载(与应用行为一致,生产多模型推荐) mlx-serve --serve --model-dir ~/.mlx-serve/models # GGUF 走同样的参数,自动路由到内置 llama.cpp mlx-serve --model ~/models/Qwen3.5-4B-Q4_K_M.gguf --serve--model-dir可重复指定多个文件夹,服务端会维护 LRU 常驻集合、按名按需加载,非常适合多模型的生产部署。
二、api-key 门禁:保护网络暴露,不折腾本机
--api-key KEY的核心语义一句话:非 localhost 的请求必须携带密钥,localhost 保持开放。于是同一台机器上的应用和本地浏览器无需任何凭据,而密钥只负责保护--host 0.0.0.0带来的网络暴露。
客户端可选的密钥传递方式:
| 传递方式 | 典型场景 |
|---|---|
Authorization: Bearer <key> | OpenAI SDK、curl |
x-api-key: <key> | Anthropic API 兼容客户端 |
| HTTP Basic(密钥当密码) | 浏览器页面,401 会触发登录弹窗 |
?api_key=<key>/?key= | 简单脚本与静态资源 |
几个值得记住的设计细节:
/health与 OPTIONS 请求永远开放,方便负载均衡与健康检查;- 密钥比较使用常量时间比较,避免时序侧信道;
- 常见误区:因为 localhost 豁免,
curl localhost不会看到 401——这是设计使然,验证门禁请用另一台机器的客户端; - 远程客户端(持 api-key 或局域网共享)请求中的
lora_paths等主机路径字段会直接 403,防止远程探测本机文件是否存在。
Claude Code、Codex 等 Agent CLI 通过 api-key 接入无头服务是最常见的生产用法;mlx-serve launch <agent>会自动写好对应配置,详见 docs/integrations.md。
三、常驻服务推荐配置(launchd 清单)
7×24 运行的服务,建议显式设置这些参数:
| 参数 | 作用 |
|---|---|
--model-dir ~/.mlx-serve/models | 多模型目录,按需加载 + LRU 驱逐 |
--api-key <KEY> | 网络访问门禁 |
--metrics | 开启 Prometheus 指标 |
--log-level/--log-file | 日志默认落在~/.mlx-serve/logs/,可显式指定 |
--idle-evict-secs N | 空闲 N 秒自动卸载模型,防止内存被占死 |
--max-resident-mem N GB | 已加载模型内存总上限 |
--max-concurrent N | 连续批处理并发度 |
若还想让 Agent 在服务器上跑命令,macOS 内置的 Sandbox Terminal 会在隔离的 Linux 虚拟机中执行不可信命令,与常驻推理服务共存,是"让 Agent 放手干活"的稳妥姿势:
四、Prometheus 监控:开启 /metrics 与读法
启动时加上--metrics,即可零成本接入 Prometheus 生态——指标关闭时开销为零(每请求一次空指针检查,绝不在逐 token 路径上计时),因此生产环境可放心常开。实现是 src/metrics.zig 中的无锁计数器,写路径不阻塞解码线程。
数据入口有两个:
GET /metrics—— 标准 Prometheus 文本格式,Prometheus 直接抓取GET /metrics.json—— 结构化 JSON,供内置 Web 控制台使用
指标名分两族:
vllm:*—— 沿用 vLLM 标准命名,现有的 vLLM/Grafana 仪表盘可直接复用mlx_serve:*—— Apple 专属:GPU 利用率、进程内存、实时 tok/s、MLX 分配器细节
常用指标速查
| 指标 | 含义 |
|---|---|
vllm:time_to_first_token_seconds | TTFT 直方图(10 ms → 10 s,10 个桶) |
vllm:e2e_request_latency_seconds | 端到端请求延迟 |
vllm:num_requests_running/num_requests_waiting | 运行中 / 排队中的请求数 |
vllm:request_success_total/request_cancelled_total | 完成 / 断连取消的请求 |
mlx_serve:request_failed_total/request_rejected_total | 生成失败 / 入槽前被拒(上下文溢出、内存不足) |
mlx_serve:gpu_utilization_pct | GPU 利用率(IOKit 采样) |
mlx_serve:memory_mb | 进程物理内存占用 |
mlx_serve:mlx_active_bytes/mlx_cache_bytes | MLX 分配器使用中 vs 可回收缓冲池 |
vllm:prefix_cache_hits_total/queries_total | 前缀缓存命中情况 |
mlx_serve:process_start_time_seconds | 进程启动时间,变化即代表重启(适合做重启告警) |
三个容易踩的监控口径
- prefill 速度要用"实际转发 token"做分子:用
mlx_serve:prefill_tokens_total(剔除前缀缓存恢复部分)。若误用vllm:prompt_tokens_total,缓存命中时速度会被放大近 10 倍。不变式:prefill_tokens_total + prefix_cache_tokens_total == prompt_tokens_total。 - 长 prefill 不代表卡死:
mlx_serve:prefill_tokens_live与requests_prefilling暴露进行中的 prefill 实时进度,避免把分钟级 prefill 误报为挂死。 - 谁在消耗你的 GPU 可见:
/metrics.json的每个会话带request_id与client字段(claude-code / opencode / codex / omp / other)。
仓库自带监控回归:tests/test_metrics.sh 与 tests/test_metrics_outcomes.sh;想快速验证指标链路,浏览器打开/的内置控制台(Monitoring 面板)即可。
五、上线前安全检查与观测清单 ✅
| 检查项 | 预期 |
|---|---|
| 绑定地址 | --host显式设置;严格本地用127.0.0.1 |
| 访问门禁 | 对外暴露时--api-key已设置,远程客户端携带 Bearer |
| 健康检查 | /health免 key 返回 200 |
| 指标端点 | /metrics在--metrics后返回 Prometheus 文本 |
| 失败信号 | 对request_failed_total、request_rejected_total设告警阈值 |
| 内存水位 | memory_mb、mlx_cache_bytes长周期曲线平稳、无持续增长 |
| 前缀缓存 | prefix_cache_hits_total / queries_total命中率符合预期 |
| 重启检测 | process_start_time_seconds变化即告警 |
| 日志 | --log-file指向可写路径,级别info起 |
值得放心的一点:mlx-serve 刻意不提供管理写接口(无 admin API)——监控面板只读,模型的加载/卸载走/v1/load-model、/v1/unload-model业务端点,同样受 api-key 保护。
相关资料
- CLI 与服务器参数:docs/cli.md · docs/zh-CN/cli.md
- API 参考(含
/metrics、/metrics.json):docs/api.md - 架构与监控设计说明:docs/reference.md
- 指标实现:src/metrics.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.
相关推荐
TensorRT-LLM 生产级服务部署实战指南(AI-Research-SKILLs):trtllm-serve、OpenAI 兼容 API、监控与 Kubernetes 扩缩容
TensorRT LLM 生产级服务部署实战指南(AI Research SKILLs):trtllm serve、OpenAI 兼容 API、监控与 Kube
AI 技能人工智能大模型深度学习LX Music桌面版:跨平台音乐播放器的技术架构与工程实践
LX Music桌面版:跨平台音乐播放器的技术架构与工程实践 LX Music桌面版是一个基于Electron和Vue3构建的开源跨平台音乐播放器,采用Apac
桌面应用音视频前端zkp-hmac-communication-python学术研究:基于该库的密码学新协议设计
zkp hmac communication python学术研究:基于该库的密码学新协议设计 在当今数字化时代,身份验证与数据安全面临着前所未有的挑战。传统密
网络通信
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考