KTransformers:国产框架助力单卡24GB显存高效运行DeepSeek-R1 671B大模型,推理速度提升28倍

Written by 30115776@qq.com

在人工智能领域,深度学习模型的推理需求日益庞大,尤其是在高参数量的巨型模型如DeepSeek-R1面前,资源的短缺尤为明显。然而,清华大学的KVCache.AI团队联合趋境科技带来了令人振奋的消息:KTransformers开源项目的更新使得在本地仅需24GB显存便可运行满血版的DeepSeek-R1和V3,助力开发者们在不破产的情况下探索更为强大的AI模型。

KTransformers是一个开源的大语言模型推理优化框架,旨在通过GPU/CPU异构计算策略和MoE架构的稀疏性,显著提升大模型的推理速度并降低硬件要求。

核心功能

  • 支持超大模型的本地推理:在仅24GB显存的单张显卡上运行DeepSeek-R1等671B参数的满血版大模型,打破传统硬件限制。
  • 提升推理速度:预处理速度最高可达286 tokens/s,推理生成速度达14 tokens/s。
  • 兼容多种模型和算子:支持DeepSeek系列及其他MoE架构模型,提供灵活的模板注入框架,支持用户切换量化策略和内核替换,适应不同优化需求。
  • 降低硬件门槛:将大模型的显存需求大幅降低,让普通用户和中小团队能在消费级硬件上运行千亿级参数模型,实现“家庭化”部署。
  • 支持长序列任务:整合Intel AMX指令集,CPU预填充速度可达286 tokens/s,相比传统方案快28倍,将长序列任务的处理时间从“分钟级”缩短到“秒级”。

KTransformers 是什么

KTransformers 是由清华大学 KVCache.AI 团队联合趋境科技推出的开源项目,旨在优化大语言模型的推理性能,降低硬件门槛。它基于 GPU/CPU 异构计算策略,利用 MoE 架构的稀疏性,支持在仅 24GB 显存的单张显卡上运行 DeepSeek-R1、V3 等 671B 参数的满血版大模型,预处理速度最高可达 286 tokens/s,推理生成速度最高能达到 14 tokens/s。

项目通过基于计算强度的 offload 策略、高性能算子和 CUDA Graph 优化等技术,显著提升了推理速度,使得普通用户和中小团队能够在消费级硬件上运行千亿级参数模型,实现“家庭化”部署。

KTransformers 的主要功能

  • 支持超大模型的本地推理:支持在仅 24GB 显存的单张显卡上运行 DeepSeek-R1 等 671B 参数的满血版大模型,打破传统硬件限制。
  • 提升推理速度:预处理速度最高可达 286 tokens/s,推理生成速度达 14 tokens/s。
  • 兼容多种模型和算子:支持 DeepSeek 系列及其他 MoE 架构模型,提供灵活的模板注入框架,支持用户切换量化策略和内核替换,适应不同优化需求。
  • 降低硬件门槛:将大模型的显存需求大幅降低,让普通用户和中小团队能在消费级硬件上运行千亿级参数模型,实现“家庭化”部署。
  • 支持长序列任务:整合 Intel AMX 指令集,CPU 预填充速度可达 286 tokens/s,相比传统方案快 28 倍,将长序列任务的处理时间从“分钟级”缩短到“秒级”。

技术原理

  • MoE架构:将稀疏的MoE矩阵卸载到CPU/DRAM上处理,稠密部分保留在GPU上,大幅降低显存需求。
  • offload策略:根据计算强度将任务分配到GPU和CPU:计算强度高的任务(如MLA算子)优先分配到GPU,计算强度低的任务分配到CPU。
  • 高性能算子优化
    • CPU端:使用llamafile作为CPU内核,结合多线程、任务调度、负载均衡等优化,提升CPU推理效率。
    • GPU端:引入Marlin算子,专门优化量化矩阵计算,相比传统库(如Torch)实现3.87倍的加速效果。
  • CUDA Graph优化:基于CUDA Graph减少Python调用开销,降低CPU/GPU通信的断点,实现高效的异构计算协同。每次decode仅需一个完整的CUDA Graph调用,显著提升推理性能。
  • 量化与存储优化:采用4bit量化技术,进一步压缩模型存储需求,仅需24GB显存即可运行671B参数模型。同时优化KV缓存大小,减少存储开销。
  • 模板注入框架:提供基于YAML的模板注入框架,支持用户灵活切换量化策略、内核替换等优化方式,适应不同场景的需求。

KTransformers的成功上线不仅为AI模型的本地运算提供了新的解决方案,也为整个行业的成本优化与技术进步提供了新的视角。

如何运行 KTransformers

准备工作

在开始安装和运行 KTransformers 之前,您需要确保系统满足以下依赖项:

1. 安装 CUDA

确保您的系统安装了 CUDA 12.1 或更高版本。如果没有安装,可以从NVIDIA 官方网站下载并安装。安装完成后,添加 CUDA 到系统路径:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_PATH=/usr/local/cuda

2. 安装编译工具

确保您的 Linux 系统安装了 GCC、G++ 和 CMake。可以使用以下命令安装:

sudo apt-get update
sudo apt-get install gcc g++ cmake ninja-build

3. 创建 Python 虚拟环境

推荐使用 Conda 创建一个 Python 3.11 的虚拟环境来运行程序。可以通过以下命令创建并激活环境:

conda create --name ktransformers python=3.11
conda activate ktransformers

如果您是首次使用 Conda,可能需要先运行 conda init 并重新打开终端。

4. 安装依赖库

确保安装了 PyTorch、packaging、ninja 等依赖库:

pip install torch packaging ninja cpufeature numpy

安装 KTransformers

1. 下载源代码并编译

首先,克隆 KTransformers 的 GitHub 仓库并初始化子模块:

git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
git submodule init
git submodule update

如果您需要运行带有 Web 界面的版本,请先编译 Web 界面(可选):

# 请参考相关文档进行编译

然后根据您的操作系统选择安装方式:

1.1 Linux 系统

对于普通用户,可以使用简单的安装脚本:

bash install.sh

如果您有双 CPU 和 1TB 内存的服务器,可以启用 NUMA 优化:

export USE_NUMA=1
bash install.sh
1.2 Windows 系统

在 Windows 系统上,使用 install.bat 脚本进行安装:

install.bat

2. 使用 Makefile 编译和格式化代码

如果您是开发者,可以使用 Makefile 来编译和格式化代码。Makefile 的详细用法请参考相关文档

本地聊天测试

KTransformers 提供了一个简单的命令行本地聊天脚本,用于测试模型。请注意,这是一个非常简单的测试工具,仅支持一轮对话,不保留历史输入。如果您想体验模型的完整功能,建议使用 RESTful API 和 Web UI。

运行示例

  1. 下载模型权重:
# 在克隆的仓库根目录下执行以下命令
mkdir DeepSeek-V2-Lite-Chat-GGUF
cd DeepSeek-V2-Lite-Chat-GGUF
wget https://huggingface.co/mzwing/DeepSeek-V2-Lite-Chat-GGUF/resolve/main/DeepSeek-V2-Lite-Chat.Q4_K_M.gguf -O DeepSeek-V2-Lite-Chat.Q4_K_M.gguf
cd ..
  1. 启动本地聊天:
python -m ktransformers.local_chat --model_path deepseek-ai/DeepSeek-V2-Lite-Chat --gguf_path ./DeepSeek-V2-Lite-Chat-GGUF

如果遇到连接 Hugging Face 的问题,可以尝试以下命令:

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/deepseek-ai/DeepSeek-V2-Lite
python -m ktransformers.local_chat --model_path ./DeepSeek-V2-Lite --gguf_path ./DeepSeek-V2-Lite-Chat-GGUF

支持的模型和量化格式

1. 支持的模型

支持的模型已弃用的模型
DeepSeek-R1InternLM2.5-7B-Chat-1M
DeepSeek-V3 
DeepSeek-V2 
DeepSeek-V2.5 
Qwen2-57B 
DeepSeek-V2-Lite 
Mixtral-8x7B 
Mixtral-8x22B

2. 支持的量化格式

支持的格式已弃用的格式
Q2_K_LIQ2_XXS
Q2_K_XS 
Q3_K_M 
Q4_K_M 
Q5_K_M 
Q6_K 
Q8_0

推荐的模型配置

模型名称模型大小VRAM最低 DRAM推荐 DRAM
DeepSeek-R1-q4_k_m377G14G382G512G
DeepSeek-V3-q4_k_m377G14G382G512G
DeepSeek-V2-q4_k_m133G11G136G192G
DeepSeek-V2.5-q4_k_m133G11G136G192G
DeepSeek-V2.5-IQ4_XS117G10G107G128G
Qwen2-57B-A14B-Instruct-q4_k_m33G8G34G64G
DeepSeek-V2-Lite-q4_k_m9.7G3G13G16G
Mixtral-8x7B-q4_k_m25G1.6G51G64G
Mixtral-8x22B-q4_k_m80G4G86.1G96G
InternLM2.5-7B-Chat-1M15.5G15.5G8G (32K 上下文)150G (1M 上下文)

RESTful API 和 Web UI(已弃用)

1. 无 Web 界面启动

ktransformers --model_path deepseek-ai/DeepSeek-V2-Lite-Chat --gguf_path /path/to/DeepSeek-V2-Lite-Chat-GGUF --port 10002

2. 带 Web 界面启动

ktransformers --model_path deepseek-ai/DeepSeek-V2-Lite-Chat --gguf_path /path/to/DeepSeek-V2-Lite-Chat-GGUF --port 10002 --web True

3. 使用 Transformers 启动

如果您想使用 Transformers 启动服务器,model_path 需要包含 .safetensors 文件:

ktransformers --type transformers --model_path /mnt/data/model/Qwen2-0.5B-Instruct --port 10002 --web True

访问 Web 界面的 URL 为:http://localhost:10002/web/index.html#/chat

更多关于 RESTful API 服务器的信息,请参考相关文档。您还可以参考Tabby 集成示例

  • 相关文档https://github.com/kvcache-ai/ktransformers/doc/en/api/server/server.html
  • Tabby 集成示例https://github.com/kvcache-ai/ktransformers/doc/en/api/server/tabby.html

资源

30115776@qq.com

Pretium lorem primis lectus donec tortor fusce morbi risus curae. Dignissim lacus massa mauris enim mattis magnis senectus montes mollis taciti accumsan semper nullam dapibus netus blandit nibh aliquam metus morbi cras magna vivamus per risus.

Zonos:开源TTS模型爆火!克隆你的声音,支持5国语言,还能调节喜怒哀乐

FoloUp:开源语音面试平台,智能生成岗位需求,AI追问逻辑漏洞

发表评论