4090单卡推理Deepseek-R1满血版本,你值得拥有!

官方文档地址

https://kvcache-ai.github.io/ktransformers/en/install.html

适配模型

设备

所需硬件设备:4090单卡24G显存
模型文件下载脚本

from modelscope import snapshot_download

try:
    snapshot_download(
        repo_id="unsloth/DeepSeek-R1-GGUF",
        local_dir="/models/LargeLanguageModels/Deepseek-R1-Q2_K_XL",
        allow_patterns=["*UD-Q2_K_XL*"]
    )
    print("文件下载成功!")
except Exception as e:
    print(f"下载过程中出现错误:{e}")

环境部署

准备基础环境(一定要注意顺序问题,一些该装的得提前装)
这里沿用官方的建议。
如果还没有 CUDA 12.1 及以上版本,可以从 这里 安装。

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_PATH=/usr/local/cud
Linux-x86_64 系统,需要安装 gcc、g++ 和 cmake
sudo apt-get update
sudo apt-get install gcc g++ cmake ninja-build

建议使用 Conda 创建一个 Python=3.11 的虚拟环境来运行我们的程序。
最好用新的虚拟环境哈,免得各种报错

conda create --name ktransformers python=3.11
conda activate ktransformers # 您可能需要先运行 ‘conda init’ 并重新打开 shell

确保安装了 PyTorch、packaging、ninja

pip install torch packaging ninja cpufeature numpy

安装flash-attn(注意,这个加速服务需要很久很久,我用新的虚拟环境,这一步装了我1.5小时,一直在编译,可以按照我下面的来做,会稍微快点):

python -m pip install ninja -i https://pypi.tuna.tsinghua.edu.cn/simple
MAX_JOBS=4 pip install flash-attn --no-build-isolation -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install ktransformers -i https://pypi.tuna.tsinghua.edu.cn/simple

Ubuntu 22.04 安装需要更新以下需求

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install --only-upgrade libstdc++6

拉取KTransformers并进行相关配置

git clone https://github.com/kvcache-ai/ktransformers.git

#进入项目目录
cd ktransformers
#安装子模块
git submodule init
#然后更新一下 
git submodule update

出现以下则成功
在这里插入图片描述
假如网络有问题,可以直接下载,然后上传到对应目录

https://github.com/ggerganov/llama.cpp
https://github.com/pybind/pybind11
分别放到对应目录下即可(注意,这是我的目录):
/home/intop/ktransformers/third_party/llama.cpp
/home/intop/ktransformers/third_party/pybind11

查看是不是双路socket,因为双路和单路设置不一样,同时占用内存也不一样。

查看是不是双路,主要是看socket
lscpu

因为我们是双路CPU,这里跟着做就行。需设置一下NUMA信息

export USE_NUMA=1

然后开始编译:

make dev_install
#或者执行下面的,执行其中一个即可
bash install.sh

编译完成之后执行,记得修改模型路径和参数,如果没有满血版本的R1,可以直接用–model_path deepseek-ai/DeepSeek-R1
本地local_chat形式

python ./ktransformers/local_chat.py --model_path xxxx --gguf_path xxx --port 10002 --cpu_infer 65 --cache_lens 1536 --max_new_tokens 8192

参数解释:
--cache_lens 1536
含义: 设置缓存长度(可能是 KV 缓存的长度)。
解释: 在 Transformer 模型中,KV 缓存(键-值缓存)用于加速生成过程。这里设置为 1536,可能表示缓存 1536 个 token 的上下文信息,以优化性能或减少重复计算。

--max_new_tokens 8192
含义: 设置生成的最大新 token 数量。
解释: 模型在生成文本时,最多可以生成 8192 个新 token。这限制了输出的最大长度,适用于控制生成内容的规模。

--model_path(必填):模型的名称(例如 “"deepseek-ai/DeepSeek-V2-Lite-Chat”,它将自动从huggingface下载配置)。或者如果你已经有了本地文件,你可以直接使用该路径来初始化模型。注意:目录中不需要. safetensors 文件。我们只需要配置文件来构建模型和标记器。
--gguf_path(必填):包含 GGUF 文件的目录的路径,可以从拥抱脸下载。请注意,该目录应该只包含当前模型的 GGUF,这意味着每个模型需要一个单独的目录。
--optimize_rule_path(Qwen2Moe 和 DeepSeek-V2 除外):包含优化规则的 YAML 文件路径。有两个规则文件预先写在 ktransformers/optimize/optimize_rules目录中,用于优化 DeepSeek-V2 和 Qwen2-57B-A14,两个 SOTA MoE 模型。
--cpu_infer:Int(默认 = 10)。用于推理的 CPU 数量。理想情况下应该设置为(核心总数 - 2)。

API形式,严格注意–cache_lens参数和max_new_tokens,有可能会出现总长度超过了cache_lens的情况,必要可以按照官方的来,去掉cache_lens和temperature

python /root/ktransformers/ktransformers/server/main.py --model_path xxx --gguf_path xxx --port 8888 --cpu_infer 65 --cache_lens 1536 --max_new_tokens 8192 --host 0.0.0.0 --temperature 0.6

V0.2.1版本

测试版本v0.2.1
内存消耗:754.6G
prompt eval count: 6 token(s)
prompt eval duration: 0.9745948314666748s
prompt eval rate: 6.156404493722336 tokens/s
eval count: 902 token(s)
eval duration: 133.06817030906677s
eval rate: 6.778480517955548 tokens/s
评估了 902 个 token,用时 133.06817030906677 秒,评估速率约为 6.78 个 token / 秒

在这里插入图片描述

V0.3.0版本(注意:我这里只是替换了官方0.3.0的轮子)

直接安装用的版本是v0.2.1,使用官方的轮子下载v0.3.0
https://github.com/kvcache-ai/ktransformers/releases/download/v0.1.4/ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl

测试版本v0.3.0

prompt eval count: 6 token(s)
prompt eval duration: 1.1202738285064697s
prompt eval rate: 5.355833410835902 tokens/s
eval count: 439 token(s)
eval duration: 64.18695068359375s
eval rate: 6.83939640884372 tokens/s
评估了 439 个 token,用时 64.18695068359375 秒,评估速率约为 6.84 个 token / 秒

在这里插入图片描述

### 使用单张 RTX 4090 显卡运行 DeepSeek-R1 671B 参数量模型的技术分析 #### 技术可行性 从技术角度来看,使用单张 RTX 4090 显卡来运行具有 671B 参数量的 DeepSeek-R1 模型是一个极具挑战性的任务。RTX 4090 配备了 24GB GDDR6X 显存,在理论上可以支持一些大型模型的推理工作,但对于如此大规模的参数量来说仍然显得捉襟见肘[^1]。 为了克服显存不足的问题,通常会采用混合精度训练(FP16)、激活检查点技术和分布式计算等方法。然而,这些优化措施对于仅有一块 GPU 的情况效果有限。因此,虽然不是完全不可能实现,但在实际操作中可能会遇到诸多困难并影响最终性能表现[^2]。 #### 所需配置 针对此特定需求下的硬件与软件环境建议如下: - **GPU**: NVIDIA GeForce RTX 4090 (24 GB VRAM) - **CPU**: 至少拥有较高核心数和频率的处理器以辅助处理数据预取和其他非CUDA运算部分 - **RAM**: 推荐不低于 120 GB DDR5 RAM 来缓存中间状态以及加载外部存储器中的权重文件 - **Storage**: SSD 或 NVMe 类型快速读写的固态硬盘至少 180 GB 可用于临时交换空间及保存必要的依赖库 - **Software Environment** - Operating System: Ubuntu Server LTS 版本, 如Ubuntu 22.04 - Python Version: Python 3.12+ - Frameworks & Libraries: PyTorch >= 2.5.1 with CUDA support enabled; torchvision; transformers library from Hugging Face ```bash # 安装Python包管理工具pipenv sudo apt install python3-pip pipenv # 创建虚拟环境并安装所需的PyTorch版本和支持组件 pipenv --python 3.12 pipenv shell pipenv install torch==2.5.1+cu124 torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124/ pipenv install transformers datasets evaluate accelerate deepspeed ``` #### 运行性能对比 当比较 DeepSeek-R1 671B 和 Qwen 2.5 72B 两个不同规模的语言模型时,前者显然更加复杂且资源消耗更大。尽管两者都基于Transformer架构构建而成,但由于其巨大的差异性——尤其是在参数数量上的差距——使得它们之间难以直接进行公平的速度或效率方面的评测。 不过一般而言,更大的模型往往能够提供更高质量的回答和服务体验;但是这也意味着更高的延迟时间和更多的能源成本支出。具体到这个案例当中,则可能表现为即使是在相同的输入条件下,DeepSeek-R1 也可能因为内部结构更为精细而表现出不同的响应速度特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值