MoXing 是一个 Python 封装层,让 llama.cpp 更易用。
项目地址:https://github.com/cycleuser/MoXing
最开始其实就是为了在一台设备上用多个显卡运行多个模型,因为ollama这么做不太方便,直接用llama.cpp又不好部署,于是用python弄了一个。
安装只需要
pip install moxing -U
moxing devices
前情提要:
MoXing:低预算场景用RX580显卡轻松运行Qwen3.5-9b-q4_k_m模型
Void + MoXing:低成本方案用RX580显卡本地运行qwen3.5:9B模型,打造类Cursor体验
MoXing新升级:直接夺舍 Ollama ,部分模型提速 50%
MoXing 和 Ollama 对比:从omnicoder-9b到更多模型
本地部署并运行omnicoder-9b的速度之谜:MoXing vs Ollama
MoXing 速度最高达到 Ollama的 201% ,同模型同硬件的实测对比OmniCoder-2-9B 的 Q4_K_M 量化模型
MoXing 助力垃圾佬用百元超廉价显卡本地运行omnicoder-2-9b模型结果也只有十几个tokens/s
最近的版本更新了之后,砍掉了过于复杂的运行文件逻辑。
$ pip install moxing -U
$ moxing devices
Available Devices
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ ID ┃ Name ┃ Backend ┃ Memory ┃ Free ┃ Vendor ┃
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━┩
│ gpu0 │ Tesla P4 │ CUDA │ 8.0GB │ 7.9GB │ nvidia │
│ gpu1 │ AMD Radeon RX 580 2048SP (RADV P │ VULKAN │ 15.8GB │ 15.8GB │ amd │
│ cpu │ CPU │ CPU │ 62.7GB │ 59.3GB │ cpu │
└────────┴──────────────────────────────────┴──────────┴────────────┴────────────┴──────────┘
Backend Support:
NVIDIA: CUDA, Vulkan
AMD: ROCm, Vulkan
Usage:
moxing ollama serve model -d gpu0 -b cuda
moxing ollama serve model -d gpu1 -b rocm
moxing ollama serve model -d gpu0 -b vulkan
CPU Offload Options:
moxing ollama serve model --cpu-offload 10
moxing ollama serve model --prompt-offload
这次的更新主要有三个改动,一个方向:砍掉缝合,回归主线。
二进制下载:三级回退变两级
之前 moxing download-binaries 走三条路:先找 MoXing patched release(自己改的 llama.cpp 加了 Ollama 补丁),再找 llama.cpp 官方,最后回退到 MoXing fallback。问题很明显——llama.cpp 一更新我们得跟着重新打包、打 tag、写 release notes,patched 版本经常拖好几天甚至几周,用户拿到的可能是过时二进制。代码里 _runner_type 在 official、ollama、patched 之间绕,两套路由逻辑并存。
现在改成两级:优先从 MoXing Release 下载自构建二进制(GitHub Actions 自动从 llama.cpp 源码编译,覆盖官方不提供的 Linux CUDA/Vulkan 等包),找不到就回退到 llama.cpp 官方 Release。
删掉了 RUNNER_TYPES、VersionInfo、find_asset_for_platform() 这些老代码,BinaryManager 和 LlamaServer 的 runner 参数也全砍了。净减 165 行。
砍掉 Ollama Runner
之前 MoXing 内嵌了一个 OllamaRunnerBinary 类,1083 行,专门下载和管理 Ollama 的 runner 二进制。有自己的下载逻辑、版本管理、进程管理,等于在 MoXing 里又维护了一份 Ollama 的安装系统。
这东西有几个硬伤:Ollama 更新很快,我们绑定的版本经常对不上;用户本地装了 Ollama,MoXing 还要下另一个;代码复杂度直接翻倍。
现在的做法很直接:moxing ollama serve 直接调系统装的 Ollama daemon,通过 Ollama 的 HTTP API 拿到模型路径,再喂给 llama.cpp server。
删掉了 ollama_runner.py(1083 行)、runners/ollama.py(116 行)、ollama download-runner 命令。serve 的 --runner 选项从 auto/llama_cpp/vllm/ollama 变成 auto/llama_cpp/vllm。
moxing build 大幅增强
老的 build 命令就是个 cmake -B build && cmake --build build,不管你选什么后端,依赖装没装不检查,CUDA 用什么架构不检测,失败了扔个 traceback 就完事。
现在每个后端都有独立的依赖检查、安装指引和编译参数。编译前先检查 cmake、g++、git 以及对应后端的专有依赖(CUDA 看 nvcc、Vulkan 看 libvulkan-dev、ROCm 看 hipconfig),缺什么直接给出 apt install 命令。CUDA 时跑 nvidia-smi 拿到计算能力,ROCm 时跑 rocminfo 拿到 gfx 架构,自动传给 CMake。编译失败了也不扔 traceback 跑路,而是按后端给出常见修复建议。
还加了 --backend auto,自动选最合适的后端:NVIDIA 用 CUDA,AMD 用 ROCm,有 Vulkan 驱动用 Vulkan,macOS 用 Metal,都没有就 CPU。
顺便提一下,llama.cpp 官方 Release 确实没提供 Linux CUDA 的预编译包,只有 Ubuntu CPU 和 macOS Metal。所以 Linux 用户要用 CUDA 或 ROCm,自己编译是最靠谱的,moxing build 就是干这个的。当然了,moxing 的release也提供了,用 moxing download-binaries 或者 moxing update-binaries --force来下载。
另外加了三个构建脚本:build_all_binaries.py 批量编译所有后端,build_cuda_multi.py 编译多版本 CUDA,release_binaries.py 自动检测上游更新、编译、打包、上传到 GitHub Release。这解决了 Linux CUDA 等平台没有官方预编译包的问题。
数字记录
删了 1973 行,加了 1589 行,净减 384 行。删掉 2 个文件(ollama_runner.py、runners/ollama.py),新增 3 个构建脚本。
使用Tesla P4,运行omnicoder-2-9b-q5km能达到20tokens/s。

使用7900xtx,运行qwen3.6-27b-mtp-q5km能达到30tokens/s。

使用RX580-2048SP-16G,运行qwen3.6-27b-mtp-q5km,如果设置了--ngl 就是GPU上加载的层数为32,就是只有32层放在显存,其他放在内存,这样还是特别慢,只有1.5tokens/s。

使用RX580-2048SP-16G,运行qwen3.6-27b-mtp-q5km,如果设置了--ngl 就是GPU上加载的层数为72,就是只有72层放在显存,其他放在内存,这样能稍微快点,大概5tokens/s。

预览时标签不可点
Close
更多
Name cleared
微信扫一扫赞赏作者
Like the AuthorOther Amount
赞赏后展示我的头像
作品
暂无作品
Like the Author
Other Amount
¥
最低赞赏 ¥0
OK
Back
Other Amount
更多
赞赏金额
¥
最低赞赏 ¥0
1
2
3
4
5
6
7
8
9
0
.
大语言模型 · 目录
大语言模型
上一篇方法比规模更重要——AgenticQwen与Needle的小模型智能体应用探索下一篇Token自由-用MoXing在7900xtx-24G显卡上本地运行Qwen3.6-27B模型给OpenCode用来文档编撰润色
Close
更多
搜索「」网络结果
Close
调整当前正文文字大小
更多
100%