手里有多张不错的显卡,想同时跑两个模型?或者想用 GPU 跑一个,CPU 再跑一个?现在 MoXing 就能搞定了。
核心思路
最新版本的 MoXing 支持多实例并行运行,更新方法如下:
# 从Pypi就可以更新了
pip install moxing -U
关键就三点:
- 指定设备:用
-d参数选择 GPU 或 CPU - 指定端口:用
-p参数区分不同服务 - 下载多后端:CPU 和 GPU 需要不同的二进制文件
第一步:下载所需的二进制文件
默认情况下,MoXing 只下载当前系统支持的 GPU 后端。要想同时支持 CPU 和 GPU 运行,得先把两套二进制都下好:
# 看看有哪些后端可用
moxing download-binaries --list
# 一键下载全部
moxing download-binaries --backend all
下载完成后,~/.cache/moxing/binaries/ 目录下会有类似这样的结构:
windows-x64-vulkan/ # GPU 版本
windows-x64-cpu/ # CPU 版本
第二步:查看可用设备
moxing devices
输出类似这样:
Available Devices (use -d option to select)
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━┳━━━━━┓
┃ Device ID ┃ Name ┃ Backend ┃ Memo ┃ Fre ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━╇━━━━━┩
│ gpu0 │ AMD Radeon RX590 GME │ vulkan │ 8.0G │ 7.2 │
│ cpu │ CPU │ cpu │ - │ - │
└───────────┴─────────────────────────┴─────────┴──────┴─────┘
Usage: moxing serve model.gguf -d gpu0 -b vulkan
moxing ollama serve model -d gpu1 -b cuda
记住这里的 Device ID,后面用 -d 参数指定。
实战:同时跑两个 OmniCoder-9B
场景一:两张显卡各跑一个
如果你有两张显卡:
# 终端 1:GPU 0 跑 OmniCoder-9B,端口 8080
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 -p 8080
# 终端 2:GPU 1 跑另一个 OmniCoder-9B,端口 8081
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu1 -p 8081
场景二:GPU + CPU 并行
GPU 跑一个,CPU 再跑一个:
# 终端 1:GPU 跑 OmniCoder-9B
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 -b vulkan -p 8080
# 终端 2:CPU 跑 OmniCoder-9B(速度慢但能跑)
moxing ollama serve carstenuhlig/omnicoder-9b -d cpu -p 8081
场景三:让 MoXing 自动找端口
懒得记端口号?用 --auto-port 让它自己找:
# 自动从 8080 开始找可用端口
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 --auto-port
# 再开一个,会自动用下一个空闲端口
moxing ollama serve carstenuhlig/omnicoder-9b -d cpu --auto-port
Ollama 模型指定设备
# 用 GPU 0 跑 OmniCoder-9B
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 -b vulkan
# 用 CPU 跑 OmniCoder-9B
moxing ollama serve carstenuhlig/omnicoder-9b -d cpu
# 用特定后端
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 -b cuda
端口占用怎么办?
如果 8080 端口被其他程序占用了,MoXing 会提示并自动切换:
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0
# 输出:Port 8080 in use, using port 8081
或者主动指定端口:
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 -p 9000
实用技巧
后台运行
Linux/macOS 下可以让服务在后台跑:
moxing ollama serve carstenuhlig/omnicoder-9b -d gpu0 -p 8080 &
moxing ollama serve carstenuhlig/omnicoder-9b -d cpu -p 8081 &
检查服务状态
# 查看端口占用
netstat -an | grep 8080
# 或者直接访问
curl http://localhost:8080/v1/models
性能考量
- GPU 模式:速度快,OmniCoder-9B 在 RX590 上大约 15-20 tokens/s
- CPU 模式:显存不够时的备选,速度较慢,OmniCoder-9B 大约 2-5 tokens/s
- 多 GPU:需要每张卡单独指定
-d gpu0、-d gpu1
常见问题
Q: 为什么 CPU 模式启动失败?
A: 确保下载了 CPU 二进制:moxing download-binaries --backend cpu
Q: 多个实例会互相影响吗?
A: 不会,只要端口不同,各自独立运行。
Q: 一张 8GB 显存的显卡能同时跑两个模型吗?
A: OmniCoder-9B Q4_K_M 约 5.3GB,一张 8GB 卡跑两个有点紧张。建议用两张卡,或者一张 GPU + CPU。
总结
MoXing 的多实例功能让资源利用更灵活:
- 多张显卡?分别指定
-d gpu0、-d gpu1 - GPU 不够用?CPU 凑一个
- 端口冲突?
-p手动指定或--auto-port自动找
一行命令,一个实例,互不干扰。

预览时标签不可点
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
.
大语言模型 · 目录
大语言模型
上一篇本地部署并运行omnicoder-9b的速度之谜:MoXing vs Ollama下一篇谷歌 TurboQuant 论文中译:基于近最优扭曲率的高速在线向量量化算法
Close
更多
搜索「」网络结果
Close
调整当前正文文字大小
更多
100%