Booster,根据《韦氏词典》的解释:
- 增强力量、功率、压力或效果的辅助设备
- 在多级火箭中提供发射和初期飞行推力的第一阶段
大型模型加速器旨在成为一个简单而强大的LLM推断加速器,适用于需要在生产环境中扩展GPT或仅凭借自己的模型进行实验的人们。
超能力
- 设计时考虑了性能和扩展性 得益于Golang和C++
- 不再有Python依赖 的问题
- 支持所有现代CPU:任何Intel或AMD x64平台,服务器ARM64和Apple Silicon
- 也支持GPU:Nvidia CUDA,Apple Metal,甚至OpenCL显卡
- 将非常大的模型分割在多块GPU之间(例如 用2张RTX 3090处理LLaMA 70B)
- 在仅支持CPU的机器上具有出色的性能,在拥有强大GPU的系统上拥有 极快的推断速度
- 支持常规FP16/FP32模型及其量化版本 - 4-bit真的很棒!
- 流行的LLM架构 已经支持:LLaMA,Mistral,Gemma等...
- 特别奖励:最先进的Janus采样实现 用于代码生成和非英语语言
动机
在开发**llama.go的第一个月内,我被原始的ggml.cpp**项目震撼了-才华出众的人在带来令人惊叹的功能和迈向AI未来方面没有任何限制。
因此,我决定启动一个新项目,最顶级的C++/CUDA内核将嵌入强大的Golang服务器,准备在真实生产环境中进行稳健且高效的大规模推断。
V3路线图 - 2024年夏季
- 再次重新命名项目 :) Collider => Booster
- 完成LLaMA v3支持
- 兼容OpenAI API聊天完成端点
- 兼容Ollama端点
- 从命令行交互聊天模式
- 更新LLaMA-3的Janus采样
- 扩大与Ollama生态系统的集成
- 在聊天与模型达到极限时更智能地缩小上下文
- 嵌入式Web UI无需外部依赖
- 允许原生Windows支持
- 为所有平台预构建二进制文件
- 支持LLaVA多模态模型推断
- 更好的代码测试覆盖率
- 用于基准测试的困惑度计算
如何在Mac上构建?
Booster在Mac的Apple Silicon M1处理器上开发,因此非常简单:
make mac
如何在Ubuntu上编译CUDA?
请完成步骤1和步骤2,然后直接make!
Ubuntu 第一步:安装C++和Golang编译器,以及一些开发库
sudo apt update -y && sudo apt upgrade -y && \
apt install -y git git-lfs make build-essential && \
wget https://golang.org/dl/go1.21.5.linux-amd64.tar.gz && \
tar -xf go1.21.5.linux-amd64.tar.gz -C /usr/local && \
rm go1.21.5.linux-amd64.tar.gz && \
echo 'export PATH="${PATH}:/usr/local/go/bin"' >> ~/.bashrc && source ~/.bashrc
Ubuntu 第二步:安装Nvidia驱动程序和CUDA工具包12.2与NVCC
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin && \
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub && \
sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" && \
sudo apt update -y && \
sudo apt install -y cuda-toolkit-12-2
现在你可以开始了!
make cuda
如何运行?
你应该按照以下步骤进行:
- 从源码构建服务器 [ 以Mac推断为例 ]
make clean && make mac
- 下载模型,例如基于 [ LLaMA-v3-8B ] 量化为 GGUF Q4KM的 [ Hermes 2 Pro ]:
wget https://huggingface.co/NousResearch/Hermes-2-Pro-Llama-3-8B-GGUF/resolve/main/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf
- 创建配置文件并将其放置在同一目录 [ 参见config.sample.yaml ]
id: mac
host: localhost
port: 8080
log: booster.log
deadline: 180
pods:
gpu:
model: hermes
prompt: chat
sampling: janus
threads: 1
gpus: [ 100 ]
batch: 512
models:
hermes:
name: Hermes2 Pro 8B
path: ~/models/Hermes-2-Pro-Llama-3-8B-Q4_K_M.gguf
context: 8192
predict: 1024
prompts:
chat:
locale: en_US
system: "