必须设置 MLX_SLOT_COUNT 环境变量启用多 slot 并发,如 MLX_SLOT_COUNT=4 ollama run phonon-en:mlx;否则默认单 slot 导致请求串行,需确保使用 :mlx 标签模型并验证 slot 分配日志或并发响应时间。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在 Apple Silicon Mac 上用 Ollama 0.40.17-rc0 的 MLX 后端实现并发语音生成,必须绕过默认的单线程阻塞行为——因为 Phonon 模型在 MLX 下默认启用同步推理,不显式配置并发参数时,所有请求会排队等待前一个 TTS 完成。
确认 MLX 后端已启用
打开终端,运行 ollama list,检查当前模型是否标记为 mlx 类型。若显示 photon-en:latest 对应的 size 列后缀含 mlx(如 mlx-cpu 或 mlx-gpu),说明已加载 MLX 版本;否则需先拉取带 mlx 标签的模型:ollama pull phonon-en:mlx。
【必须使用 ollama run phonon-en:mlx 启动,而非 phonon-en:latest,否则将回退至 PyTorch 后端,无法启用 MLX 并发控制】
通过环境变量启用多 slot 并发
MLX 后端不通过 --num-gpu 或 --num-thread 控制并发,而是依赖 MLX_SLOT_COUNT 环境变量指定最大并发请求数。
在终端中执行:MLX_SLOT_COUNT=4 ollama run phonon-en:mlx。此时模型将预留 4 个独立推理 slot,允许多个文本请求同时进入生成流程。
若跳过此步直接 ollama run,MLX 默认 slot 数为 1,所有后续请求强制串行,即使你用 curl 并发调用,响应时间也会随请求数线性增长。
验证并发是否生效
方法一:用 curl 并发发送两个短文本请求
新开两个终端窗口,分别执行:curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{"model":"phonon-en:mlx","messages":[{"role":"user","content":"Hello"}]}' 和 curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{"model":"phonon-en:mlx","messages":[{"role":"user","content":"Hi there"}]}'。
观察返回的 created_at 时间戳与音频流开始播放的时间差——若两者间隔均在 300ms 内且几乎重叠,说明并发 slot 已接管;若第二个请求明显延迟(>1.2s),说明 slot 不足或未生效。
方法二:查看实时日志中的 slot 分配记录
启动时加 -v 参数:MLX_SLOT_COUNT=4 ollama serve -v,然后触发请求。日志中出现类似 mlx: assigned slot 2 for request id xxx 多条不同 slot 编号的记录,即为并发成功。








