项目介绍:Booster
什么是Booster?
根据Merriam-Webster字典,Booster通常指的是用于增加力量、能量、压力或效果的辅助设备,或是一种多级火箭的第一阶段,为发射和初始飞行提供推力。这个名字被用来作为一个项目的名称,意在打造一个强大的大语言模型(LLM)推理加速工具,不论是用于在生产环境中扩展GPT模型,还是单独进行模型实验。
项目特色
- 高性能与扩展性:Booster由Golang和C++构建,确保其极高的性能和可扩展性。
- 无需Python依赖:用户不必再担心Python环境的问题。
- 仅用CPU进行推理:可在任何Intel、AMD x64、ARM64及Apple Silicon设备上运行。
- GPU支持:兼容Nvidia CUDA、Apple Metal,甚至OpenCL卡。
- 模型分割技术:可以将大型模型拆分到多个GPU上进行计算,例如使用2块RTX 3090运行LLaMA 70B。
- 支持多种模型格式:支持传统的FP16/FP32模型及其量化版本,4位量化效果显著。
- 集成流行LLM架构:如LLaMA、Mistral、Gemma等。
- 先进的Janus采样技术:对于代码生成和非英语语言有特别的支持。
项目动机
通过观察最初的llama.go
项目及其源于ggml.cpp
项目的启发,项目负责人意识到,天才可以在没有局限的情况下,尽情发挥创造力。由此,Booster的开发者决定创建一个新项目,以优秀的C++/CUDA核心为基础,结合强大的Golang服务器,为大规模生产环境中的鲁棒推理提供支持。
开发路线图
V3计划 - 2024夏季
- 已完成项目重命名为Booster
- 完成LLaMA v3和v3.1的支持
- 兼容OpenAI API聊天完成端点
- 配合Ollama的端点
- 提供命令行交互模式
- 更新LLaMA-3的Janus采样
- 期望发布V3版本
V3+计划 - 2024秋季
- 扩大与Ollama生态系统的整合
- 智能化的上下文扩展
- 嵌入式网页UI,无需外部依赖
- 原生Windows二进制文件
- 各平台预构建二进制文件
- 支持LLaVA多模态模型推理
- 改善代码测试覆盖率
- 计算难度用于基准测试
如何在Mac上构建?
Booster主要在Mac的Apple Silicon M1处理器上开发,因此构建过程非常简单:使用make mac
命令即可完成。
如何在Ubuntu上编译CUDA?
第一步和第二步完成后,只需执行make
命令即可。具体步骤包括安装C++和Golang编译器及一些开发库、安装Nvidia驱动和CUDA工具包12.2。
如何运行Booster?
以下是启动步骤:
-
从源代码构建服务器(以Mac推理为例):
make clean && make mac
-
下载模型,例如基于LLaMA-v3-8B的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
- 配置示例见
-
启动服务器:
- 使用交互模式与模型进行对话:
./booster
- 作为服务器运行以处理所有API端点并显示调试信息:
./booster --server --debug
- 使用交互模式与模型进行对话:
-
使用API进行推理:
- 使用Ollama/OpenAI API或将JSON对象POST到本地异步API
http://localhost:8080/jobs
。
- 使用Ollama/OpenAI API或将JSON对象POST到本地异步API
-
查看结果:
- 通过本地HTTP GET请求异步API
http://localhost:8080/jobs/{job_id}
。
- 通过本地HTTP GET请求异步API
-
查看
booster.service
文件中有关如何将此API服务器创建为守护进程服务的说明。