搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

Betelgeuse-AI/Betelgeuse

机器学习

面向消费级显卡的 C++/CUDA 推理分支,把 MoE 专家按需从 NVMe 流式载入,在 12 GB 显存的 RTX 3060 上跑大模型。

114
2
C++
MIT
创建于 7 天前

项目介绍

Betelgeuse 是基于 llama.cpp 的原生 C++/CUDA 分支,目标是在单张消费级 GPU 上运行前沿规模的混合专家(MoE)模型。README 给出的硬件范围是 RTX 3060 12 GB 显存、16 GB 系统内存和本地 NVMe 盘。

做法是把稠密层、注意力、共享专家和路由头放在 GPU 上,路由专家放进一个大小受限的显存槽池。未驻留的专家通过 io_uring 从 NVMe 读取,缓存在锁页主机内存中,需要时再提升到显存。README 强调每个被路由的专家都按完整量化精度计算,不做剪枝、跳过或重量化(流水线说明)。

仓库产出两个可执行文件:bel-server 提供 OpenAI 兼容的 HTTP 服务,bel-cli 是交互式对话客户端。C API 和上游 CMake target 名称保持不变,构建目标仍是 llama-server 和 llama-cli,只是输出二进制被改名。

支持的模型

文档给出两种配置:一是 748B 参数的 DeepSeek-V4.1-Flash(1017),主干和一个很大的 Engram 嵌入表从磁盘流式读取;二是 Alpha-Orionis-XS,即 Qwen3.8 Flash Next 的约 125B 参数量化版本,打包成约 68 GB 的四文件 bundle(模型对比)。Qwen bundle 需要从 Betelgeuse-AI/Alpha-Orionis-XS 下载,其模型卡和权证许可独立于引擎的 MIT 许可。

DeepSeek 配置使用 DSpark 草稿模型做投机解码;README 明确 Qwen bundle 没有经过认证的投机加速。

快速使用

构建环境要求 Linux x86-64、CUDA sm_86(RTX 3060 12 GB)和本地 NVMe,需要 C++17 编译器、CMake、CUDA 工具链与驱动、liburing 开发文件,以及 llama.cpp 的常规构建依赖。构建内嵌终端 logo 还需要 Python 3、rsvg-convert 和 ImageMagick,但运行时不需要(构建说明、构建依赖)。

cmake -S . -B build \
    -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=86 \
    -DLLAMA_BUILD_TOOLS=ON

cmake --build build --config Release --target llama-server llama-cli -j6

产物是 build/bin/bel-server 和 build/bin/bel-cli。上游 llama.cpp 的二进制和容器镜像不包含分页运行时。

下载 Alpha-Orionis-XS bundle 并放入本地目录:

hf download Betelgeuse-AI/Alpha-Orionis-XS \
    Qwen3.8-Flash-Next-Dense.gguf experts.bin \
    Qwen3.8-Flash-Next-PLE.gguf profile-qwen4exp.bin \
    --local-dir /path/to/Alpha-Orionis-XS

export BUNDLE=/path/to/Alpha-Orionis-XS
export MOE_HOT_K=0 MOE_PREKICK=0 MOE_SEED_BUDGET_MS=0

在 12 GiB 内存 cgroup 且关闭 swap 的条件下启动服务,与记录的测试环境一致:

systemd-run --user --scope --quiet -p MemoryMax=12G -p MemorySwapMax=0 \
    build/bin/bel-server \
    -m "$BUNDLE/Qwen3.8-Flash-Next-Dense.gguf" \
    --moe-direct-io --moe-pack-dir "$BUNDLE" \
    --moe-profile "$BUNDLE/profile-qwen4exp.bin" --moe-slots 5000 \
    -ngl 99 -np 1 -c 512 -ub 64 -t 6 \
    --cache-warmup 0 --host 127.0.0.1 --port 8080

然后向服务发请求:

curl -s http://127.0.0.1:8080/completion \
  -H "Content-Type: application/json" \
  -d '{"prompt": "def binary_search(arr, target):\n", "n_predict": 68, "temperature": 0.0, "ignore_eos": true}'

第一次请求要付磁盘流式读取成本,预热后的通过率才是 README 报告的吞吐(启动命令、请求示例)。交互使用则运行 build/bin/bel-cli 并传入相同的模型和分页参数,在 You > 提示符输入;/clear 清空对话,/exit 退出(CLI 用法)。

使用约束

  • 每个进程只支持一个分页上下文,保持 -np 1;并行上下文与共享显存槽池不兼容。
  • 自定义 CUDA kernel 只针对 sm_86。其他 GPU、纯 CPU 构建、非 Linux 主机和其他后端都未经过分页认证。
  • 直接 I/O 要求连续、未压缩的扇区访问。在 Btrfs 上,README 要求在复制权重前对模型目录执行 chattr +C。
  • 记录中的 Qwen 配置是 -c 512 -ub 64 -t 6 -ngl 99;更大的上下文或 batch 需要自行做内存与正确性检查。
  • 冷启动会因新的专家足迹而产生磁盘流式读取开销;只有驻留集填满的预热轮次才能达到峰值吞吐。
  • 主机端 victim cache 默认 8 GiB,计入进程内存,可用 MOE_CACHE_MIB 调整或关闭。
  • 模型权重不在引擎 MIT 许可范围内。Qwen 源许可包含商用 MaaS 和 AI Work Assistant 限制,DeepSeek 权重和草稿模型另有条款(许可说明、Qwen 许可)。

HotRepo 点评

仓库在 2026-11-07 的新项目快照中记录到 111 星,在一小时增长窗口内新增 9 星,尚未进入全部语言日榜。这只是早期信号,单个一小时窗口不足以判断趋势。

值得继续观察的是分页运行时和宣称的预热吞吐(DeepSeek 配置 18.92 tok/s,Qwen bundle 22.03 tok/s)能否被独立复现,README 自己也强调这些数字来自不同历史运行而非配对基准(测量说明)。项目还绑定在单一 GPU 级别和单一存储布局上,对多数读者而言其实用价值取决于这个已认证范围能扩展多远。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。