Ktransformers DeepSeek-R1 671B 部署

参考链接:

ktransformers/doc/zh/DeepseekR1_V3_tutorial_zh.md at main · kvcache-ai/ktransformers

DeepSeek-R1 · 模型库

DeepSeek-R1:使用KTransformers部署(保姆级教程)_ktransformers本地部署-CSDN博客

笔记:ktransformer/llama.cpp/vllm + int4 671B DeepSeek R1 模型单机大显存 GPU 部署笔记 - 知乎

一、配置环境

基本环境:cuda12.4 安装, 选择本地安装,下载.run后直接运行

​ conda python 3.11 环境(3.10也可以)

​ cuda toolkit, pytorch 等深度学习基本环境

conda install pytorch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 pytorch-cuda=12.4 -c pytorch -c nvidia

请添加图片描述
ktransformer 环境:

sudo apt-get update

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

pip install flashinfer-python -i https://flashinfer.ai/whl/cu124/torch2.5

pip install flash-attn --no-build-isolation

pip install flash-attn --no-build-isolation可能会在
请添加图片描述
这里卡住,官方说第一次安装得两个小时,还没有进度条。选择使用源码编译安装(需要几个小时):

git clone https://github.com/Dao-AILab/flash-attention
cd flash-attention 
git submodule init 
git submodule update
python setup.py install

二、从huggingface中下载对应权重文件

若网络无问题,可以正常访问huggingface,推荐使用hfd下载方式 如何在windows中使用hfd.sh aria2c下载huggingface文件-CSDN博客
下载完成的目录如下
请添加图片描述
DeepSeek-R1-Q4_K_M为模型权重文件,其它是模型本体,如果分开下载,注意不要下载官方带的.safetensors文件,这是未量化的满血版本。

三、本地会话方式运行DeepSeek

cd ktransformers 
python ./ktransformers/local_chat.py --model_path /data/deepseek/DeepSeek-R1-GGUF --gguf_path /data/deepseek/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M  --cpu_infer 57 --max_new_tokens 1000 --optimize_rule_path /data/deepseek/ktransformers/ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-multi-gpu-8.yaml --force_think true

–model_path 及上图modeling_deepseek.py所在目录
–gguf_path 量化权重文件
–cpu_infer cpu物理核心数 +1
–optimize_rule_path 官方提供的优化文件,这里选择8卡优化,速度会明显快很多
–force_think true 进行CoT思考

效果展示:
思考:

<think>

\n嗯,用户遇到了在安装flash-attention-2.7.4.post1时出现的错误。错误信息显示在处理元数据时出现了问题,具体是子进程返回了错误代码1。用户还提供了详细的错误输出,其中关键点是在执行setup.py时触发了AssertionError,提示缺少csrc/cutlass目录,并建议使用源码分发或通过git clone获取。

首先,我需要理解这个错误的根本原因。根据错误信息,setup.py中的第158行有一个断言,检查某个目录是否存在。如果不存在,就会抛出这个错误。这说明用户可能没有正确下载包含所有依赖的子模块,或者下载的源码包不完整。

接下来,我应该考虑用户可能的操作步骤。用户可能直接通过pip安装,或者下载了源码包但没有包含必要的子模块。例如,如果用户使用git clone时没有使用--recursive参数,那么子模块(如cutlass)就不会被下载,导致编译时缺少必要的文件。

解决方案方面,首先需要确保用户获取了完整的源码,包括所有子模块。建议用户使用git clone命令并添加--recursive参数来克隆仓库,这样可以自动下载所有子模块。如果用户已经克隆了仓库但没有包含子模块,可以进入仓库目录后运行git submodule update --init --recursive来拉取子模块。

另外,用户可能尝试使用预编译的wheel文件,但如果没有对应环境的wheel,或者安装的版本不兼容,可能需要从源码编译。这时候确保所有依赖项已安装,如CUDA工具链、PyTorch等,并且版本匹配。

最后,提醒用户在安装前仔细阅读官方文档,确认系统要求和安装步骤,避免因环境配置不当导致的问题。如果问题依然存在,建议检查错误日志,确认是否有其他依赖缺失或权限问题,并尝试清理构建缓存后重新安装。
</think>

回答:

### 问题解释:
这个错误发生在尝试安装 `flash-attention` 的某个版本(`2.7.4.post1`)时,具体原因是:
1. **缺失关键目录**:安装过程中需要 `csrc/cutlass` 目录,但当前源码中缺少这个目录。
2. **源码不完整**:用户可能没有通过正确的 Git 方式克隆仓库(例如未包含子模块),或者下载的源码包不完整。
3. **Assertion 失败**:`setup.py` 脚本中的断言(Assertion)检查失败,提示必须使用完整的源码分发(如 Git 克隆的仓库)。

---

### 解决方案:

#### 1. **确保使用完整的源码**
   - **不要直接通过 `pip install` 安装未完整下载的源码**,而是通过 Git 克隆仓库并包含子模块:
     ```bash
     git clone --recursive https://github.com/Dao-AILab/flash-attention.git
     cd flash-attention
     ```
     注意 `--recursive` 参数会递归克隆所有子模块(如 `cutlass`)。

   - 如果已经克隆了仓库但未包含子模块,可以修复:
     ```bash
     cd flash-attention
     git submodule update --init --recursive
     ```

#### 2. **安装依赖项**
   确保系统已安装以下依赖:
   - **CUDA 工具链**(与 PyTorch 版本匹配)
   - **PyTorch**(建议通过[官网](https://pytorch.org/)安装)
   - **Ninja**(加速编译):
     ```bash
     pip install ninja
     ```

#### 3. **重新安装**
   进入完整源码目录后,使用以下命令安装:
   ``bash
   pip install .
   # 或者针对特定 CUDA 版本(例如 11.7):
   # CUDA_HOME=/usr/local/cuda-11.7 pip install .
   ``

#### 4. **使用预编译的 Wheel(推荐)**
   如果环境兼容,直接安装预编译的版本:
   ``bash
   pip install flash-attn --no-build-isolation
   ``

#### 5. **验证安装**
   安装完成后运行简单测试:
   ``python
   import flash_attn
   print(flash_attn.__version__)  # 应输出正确版本号
   ``

---

### 常见问题排查:
- **权限问题**:确保对 `/data/deepseek/flash-attention` 有读写权限。
- **网络问题**:Git 克隆或子模块下载失败时,检查网络或代理设置。
- **版本冲突**:确保 PyTorch、CUDA 和 `flash-attention` 版本兼容。

如果问题仍存在,建议参考[官方文档](https://github.com/Dao-AILab/flash-attention)或提交 Issue 说明详细

与kimi长思考对比:

我先来仔细读一下用户给出的错误信息。嗯,这个信息看起来挺长的,不过核心问题好像挺明确的。报错的核心是 processing 和 error: subprocess-exited-with-error,嗯,这说明在运行 python setup.py egg_info 的时候出错了。再往下看,最后一行有个 AssertionError:csrc/cutlass is missing, please use source distribution or git clone。嗯,看来这个包需要 csrc/cutlash,但这里提示这个文件夹或文件缺失。
等等,我再捋一遍……用户看起来是在安装某个包,可能是 flash-attention-2.7.4.post1,这让我想到可能是个和机器学习相关的库,比如和 CUDA 或 GPU 加速有关的那种。csrc 和 cutlass 这两个词有点熟悉,csrc 通常是 C++ 源代码的目录,cutlass 是 NVIDIA 的一个用于 GPU 高性能计算的库。所以,这个报错应该是说,setup.py 在运行时需要依赖 csrc/cutlass 这个东西,但当前环境中没有找到它。
那问题来了,为什么这个文件夹会缺失呢?我大概能想到几种可能性:
用户安装的是一个预编译的包(比如用 pip install 下载的 .whl 文件),但这个包的构建过程中没有包含 csrc/cutlass,或者路径有问题。
可能安装的版本和系统环境不匹配,比如 CUDA 版本不对,或者依赖的某些工具(比如 git、C++ 编译器)没装好。
有可能用户直接用的是某种二进制安装方法,而不是基于源码的安装,所以缺少了编译过程中需要的文件。
嗯,我觉得可以从几个方向去排查:
首先检查一下环境,确保所有的依赖工具(比如 git、gcc、g++ 或者 CUDA 工具链)都是完整的。因为很多基于 C++ 的 Python 包安装时需要这些。
然后可能是安装方式的问题。既然报错提到 use source distribution or git clone,那可能之前用 pip install 下载的包不完整,或者版本不对。那用户或许可以尝试用源码的方式安装,比如 pip install 加上 --no-binary 参数,强制从源码安装。
如果用户需要的环境特别复杂(比如和特定的 CUDA 或 PyTorch 版本绑定),那可能需要先安装依赖的环境,比如先装好对应的 PyTorch 或 CUDA 版本,然后再装 flash-attention。因为有些包的构建需要依赖其他库的头文件或者动态库。
再想想,还有没有其他的可能性?嗯,我突然想到,可能用户的网络环境有问题,导致某些依赖文件下载不完整。比如说,用户可能是在国内,而某些镜像源可能更新不及时或者缺少某些文件。如果是这种情况,切换镜像源可能是个好办法,比如腾讯云的镜像源或者阿里云的镜像源。
好,我觉得大概思路清晰了。现在的解决方案可以分成几个步骤:
检查环境依赖是否完整,比如 CUDA、Git、编译器等。
清理缓存,强制重新下载安装包。
切换 pip 镜像源,避免下载时出问题。
如果上面的方法都不奏效,可能是包本身的问题,用户可以尝试安装旧版本或者从源码编译。
嗯,我把这些思路整理一下,形成一个清晰的回答,应该能帮助用户解决问题。
这段错误信息表明在安装某个 Python 包(flash-attention-2.7.4.post1)时发生了错误,具体是 python setup.py egg_info 命令执行失败。以下是对问题的详细解释和解决方案:
问题解释
python setup.py egg_info 异常
运行 setup.py 脚本中的 egg_info 命令时(在 pip 安装过程中会执行此脚本),Python 抛出了一个崩溃错误。
错误信息显示 csrc/cutlass 是缺失的,这说明 setup.py 脚本依赖于 csrc/cutlass 文件夹或文件,但当前安装的包中没有找到它。
AssertionError 错误
错误提示明确指出:csrc/cutlash 缺失,建议使用源代码分发版(source distribution)或通过 Git 克隆安装。
这意味着当前安装的包可能是一个二进制分发版本(binary distribution),而不是完整包含所有源代码的版本,或者安装包的依赖结构出现问题。
问题原因
依赖缺失
csrc/cutlass 是一个必要的源代码模块(可能是 C++ 或 CUDA 代码优化相关),但安装包中没有包含这个模块,或者路径设置不正确。
可能是由于 flash-attention 包的某个依赖项未正确安装或缺失。
安装方式不兼容
如果使用的是预编译二进制包(binary wheel),可能与当前系统的环境(如 Python 版本、CUDA 版本、操作系统信息等)不兼容,导致核心依赖缺失。
安装源不完整
安装的包可能源于一个不完整的构建版本,或者版本号与实际依赖要求不匹配。
解决方案
1. 确保依赖完整
如果 flash-attention 是一个需要编译的扩展模块,确保系统已安装必要的开发工具和依赖:
bash
复制
sudo apt-get update  # 使用合适的包管理器
sudo apt-get install build-essential git python3-dev libpython3-dev  # 用于 Linux
2. 强制从源码安装
使用 --no-binary 选项强制 pip 从源码安装,避免使用预编译的二进制包:
bash
复制
pip install --no-binary :all: flash-attention
3. 切换 pip 镜像源
如果是国内用户,可能因为网络问题导致依赖下载不完整。可以尝试切换 pip 镜像源:
bash
复制
pip install flash-attention -i https://pypi.tuna.tsinghua.edu.cn/simple
4. 检查 CUDA 和 PyTorch 环境
如果 flash-attention 是一个 GPU 加速的库,确保你的系统符合以下条件:
安装了支持的 CUDA 版本。例如:
bash
复制
nvcc --version  # 查看 CUDA 版本
安装的 PyTorch 版本与 CUDA 版本匹配。例如:
bash
复制
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  # 为 CUDA 11.8 安装 PyTorch
5. 手动安装依赖
如果 csrc/cutlass 是一个独立的库,可能需要手动克隆或安装:
bash
复制
git clone https://github.com/deepseek-ai/flash-attention.git
cd flash-attention
pip install .
6. 检查版本兼容性
确保安装的 flash-attention 版本与你的 Python 和 PyTorch 版本兼容。如果问题仍未解决,尝试安装旧版本或更新版本:
bash
复制
pip install flash-attention==2.7.3  # 安装旧版本
7. 使用虚拟环境
如果问题依旧存在,建议创建一个虚拟环境,确保环境纯净:
bash
复制
python -m venv myenv
source myenv/bin/activate
pip install flash-attention
通过以上步骤,你应该能够解决 csrc/cutlass is missing 的问题并成功安装 flash-attention。如果问题依然存在,欢迎提供更多详细信息,我会进一步协助你解决问题。

解析和生成token速度

prompt eval count:    258 token(s)
prompt eval duration: 7.274143218994141s
prompt eval rate:     35.468094624025824 tokens/s
eval count:           1000 token(s)
eval duration:        173.85793614387512s
eval rate:            5.751822563753753 tokens/s

gpu占用:
请添加图片描述
cpu占用:
请添加图片描述
内存占用:
请添加图片描述

Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐