☰
mlx-serve 生产部署与安全指南:api-key、无头 Mac 服务与 Prometheus 监控观测清单
2026/10/11 11:59:40 网站建设 项目流程

【免费下载链接】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 推理服务器,纯 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_secondsTTFT 直方图(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_pctGPU 利用率(IOKit 采样)
mlx_serve:memory_mb进程物理内存占用
mlx_serve:mlx_active_bytes/mlx_cache_bytesMLX 分配器使用中 vs 可回收缓冲池
vllm:prefix_cache_hits_total/queries_total前缀缓存命中情况
mlx_serve:process_start_time_seconds进程启动时间,变化即代表重启(适合做重启告警)

三个容易踩的监控口径

  1. prefill 速度要用"实际转发 token"做分子:用mlx_serve:prefill_tokens_total(剔除前缀缓存恢复部分)。若误用vllm:prompt_tokens_total,缓存命中时速度会被放大近 10 倍。不变式:prefill_tokens_total + prefix_cache_tokens_total == prompt_tokens_total。
  2. 长 prefill 不代表卡死:mlx_serve:prefill_tokens_live与requests_prefilling暴露进行中的 prefill 实时进度,避免把分钟级 prefill 误报为挂死。
  3. 谁在消耗你的 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.

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

相关推荐

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

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

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

立即咨询