FP8 线性核用于 DeepSeek-V3/R1

概述

DeepSeek-AI团队为DeepSeek-R1/V3模型提供FP8安全张量。我们通过以下工作实现性能优化:

  • FP8 GPU 内核集成: 集成在 KTransformers 中的 FP8 线性层加速内核
  • Hybrid Quantization Architecture:
    • 注意和共享专家模块使用FP8精度(提高计算精度)
    • 专家模块保留GGML量化(GGUF格式,驻留在CPU中以节省GPU内存)

因此,追求最佳性能的用户可以对DeepSeek-V3/R1使用FP8线性内核。

主要特性

✅ 混合精度架构 (FP8 + GGML)
✅ 内存优化 (~19GB VRAM 使用)

快速开始

使用预合并权重

预合并权重可在 Hugging Face 上获取:
KVCache-ai/DeepSeek-V3-GGML-FP8-Hybrid
KVCache-ai/DeepSeek-R1-GGML-FP8-Hybrid

请确认所有权重已完全上传,然后再进行下载。大文件大小可能会延长 Hugging Face 的上传时间。

下载预合并权重

pip install -U huggingface_hub

# Optional: Use HF Mirror for faster downloads in special area.
# export HF_ENDPOINT=https://hf-mirror.com 

huggingface-cli download --resume-download KVCache-ai/DeepSeek-V3-GGML-FP8-Hybrid --local-dir <local_dir>

使用合并脚本

如果您获得了本地的 DeepSeek-R1/V3 fp8 safetensors 和 gguf 权重(例如 q4km),您可以使用以下脚本合并它们。

python merge_tensors/merge_safetensor_gguf.py \
  --safetensor_path <fp8_safetensor_path> \
  --gguf_path <gguf_folder_path> \
  --output_path <merged_output_path>
  • --safetensor_path: safetensor 文件的输入路径(下载).
  • --gguf_path: gguf 文件夹的输入路径 (下载).
  • --output_path: 合并文件的输出路径。

执行说明

使用自定义量化专家启动 local_chat.py

python ktransformers/local_chat.py \
  --model_path deepseek-ai/DeepSeek-V3 \
  --gguf_path <merged_weights_folder> \
  --optimize_config_path ktransformers/optimize/optimize_rules/DeepSeek-V3-Chat-fp8-linear-ggml-experts.yaml \
  --cpu_infer <cpu_cores + 1>

注意事项

⚠️ 硬件要求

  • 推荐最低 19GB 可用 VRAM 用于 FP8 内核。
  • 需要支持FP8的GPU(例如,4090)

⏳ 首次运行优化 JIT 编译会导致初始执行时间较长(后续运行保留优化速度)。

🔄 暂时接口
当前的权重加载实现是临时的 - 将在未来的版本中进行完善

📁 路径规范
尽管进行了混合量化,合并的权重作为 .safetensors 存储 - 将包含文件夹的路径传递给 --gguf_path