僅需10萬不到,DeepSeek R1 671B大模型本地部署實戰指南
最近幫一個朋友部署本地的671b版本的deepseek r1,需求是要完全本地部署,但是又不想花太高的成本,沒有并發要求,我一想,用ktransformers框架來部署完全合適。
關于機器配置,在挑挑揀揀評比之后,設備選擇如下,最終選擇的是其中的服務器配置。
這套設備下來總成本不到10萬,相比如動輒幾百萬的滿血版deepseek R1或者花個五六十萬買個deepseek 70b的一體機要值當的多,且不說70b并不是真正的deepseek r1,效果還不如32b的QWQ,就光說一體機的升級也是個麻煩事,買了機器基本就和模型綁定了,以后新模型出來后想升級就難了。
說起這個,我上個月去給政府某部門培訓大模型時,還聽到一個八卦,說有個公司,花了幾百萬讓某個大廠私有化部署了一套定制的模型,但是deepseek r1出來后,直接棄用了,又去買了一套deepseek一體機。
而且這些公司買了一體機后,也還是不知道怎么用,就是搞個接口和頁面,讓員工來問下問題,就沒了其他用途了。只能說,公司是真有錢。
基礎配置
先說結論,使用Ktransformers框架,在上述圖片的服務器配置上,速度能達到5token/s, 考慮到Ktransformers目前還并不支持并發,本地私有化部署給少數人使用,這個速度還是勉強可以接受。
ktransformers官網文檔的安裝方式我之前已經寫過一篇文章,ktransformers部署詳細筆記。此處不再贅述。
這里我介紹一個這次我安裝時發現的一個新的教程 r1-ktransformers-guide,提供了基于uv的預編譯的環境,可以避免很多環境的依賴的報錯。
同時要注意ubuntu版本要使用ubuntu22及以上,python版本為3.11。
NVIDIA驅動版本570.86.1x ,
CUDA版本12.8
然后Ktransfomers要使用0.2.2版本,目前最新版本0.3還存在很多的bug
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
git submodule init
git submodule update
git checkout 7a19f3b git rev-parse --short HEAD #應顯示 7a19f3b
注意的是,git submodule update 主要是為了更新third_party中的項目
如果網絡不好,可以直接github中下載這些項目并放到到third_party文件夾中
[submodule "third_party/llama.cpp"]
path = third_party/llama.cpp
url = https://github.com/ggerganov/llama.cpp.git
[submodule "third_party/pybind11"]
path = third_party/pybind11
url = https://github.com/pybind/pybind11.git
下載模型
然后下載量化后的deepseek r1模型,這里我下載的是int4量化版本,因為網絡問題,使用阿里的魔塔下載模型
modelscope download unsloth/DeepSeek-R1-GGUF --include "DeepSeek-R1-Q4_K_M/*" --cache_dir /home/user/new/models
--cache_dir /home/user/new/models 是制定模型下載路徑的位置
uv安裝
uv是一個用Rust語言編寫的現代Python包管理工具,被稱為"Python的Cargo",它是pip、pip-tools和virtualenv等傳統工具的高速替代品。速度比pip更快,而且還支持可編輯安裝、git依賴、本地依賴、源代碼分發等pip的高級功能。
安裝uv工具鏈
curl -LsSf https://astral.sh/uv/install.sh | sh
創建虛擬環境
uv venv ./venv --python 3.11 --python-preference=only-managedsource venv/bin/activate
然后我們就可以按照教程中的使用uv工具進行安裝。
uv安裝預編譯版本
flashinfer-python是一個專為大型語言模型(LLM)推理服務設計的高性能GPU加速庫。它主要提供以下功能:
$ uv pip install flashinfer-python
這是安裝ktransformers庫的預編譯版本:
$ export TORCH_CUDA_ARCH_LIST="8.6"
uv pip install https://github.com/ubergarm/ktransformers/releases/download/7a19f3b/ktransformers-0.2.2rc1+cu120torch26fancy.amd.ubergarm.7a19f3b.flashinfer-cp311-cp311-linux_x86_64.whl
這是安裝flash_attn庫的預編譯版本:
uv pip install https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.0.5/flash_attn-2.6.3+cu124torch2.6-cp311-cp311-linux_x86_64.whl
這里的預編譯版本其實是這個文檔的作者直接編譯好的,雖然這個教程說明中提到僅適合RTX 3090Ti 24GB顯存 + 96GB DDR5-6400內存 + Ryzen 9950X處理器 。
但是我使用4090 24顯存 + 500 DDR5-4800內存 ,使用這個預編譯版本也可以安裝成功的。如果這個預編譯版本可以安裝成功的話,很多潛在的因為版本不對造成的報錯都可以避免掉了。
源碼運行ktransformers
如果上面的預編譯版本運行不了的話,又不想接著安裝ktransfomers,其實也可以直接用源碼來跑的,命令如下:
支持多GPU配置及通過 `--optimize_config_path` 進行更細粒度的顯存卸載設置
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True python3 ktransformers/server/main.py
--gguf_path /mnt/ai/models/unsloth/DeepSeek-R1-GGUF/DeepSeek-R1-UD-Q2_K_XL/
--model_path deepseek-ai/DeepSeek-R1
--model_name unsloth/DeepSeek-R1-UD-Q2_K_XL
--cpu_infer 16
--max_new_tokens 8192
--cache_lens 32768
--total_context 32768
--cache_q4 true
--temperature 0.6
--top_p 0.95
--optimize_config_path ktransformers/optimize/optimize_rules/DeepSeek-R1-Chat.yaml
--force_think
--use_cuda_graph
--host 127.0.0.1
--port 8080
是的,其實即使不編譯ktransfomers,也是可以跑起來的。直接把項目下好,運行上面的命令,準備好相應的文件,就能正常運行了。
如果要繼續編譯ktransfomers的話,則可以按照下面的流程進行操作:
# 安裝額外編譯依賴項,包括CUDA工具鏈等,例如:
# sudo apt-get install build-essential cmake ...
source venv/bin/activate
uv pip install -r requirements-local_chat.txt
uv pip install setuptools wheel packaging
# 建議跳過可選網站應用,使用`open-webui`或`litellm`等替代方案
cd ktransformers/website/
npm install @vue/cli
npm run build
cd ../..
# 如果擁有充足的CPU核心和內存資源,可顯著提升構建速度
# $ export MAX_JOBS=8
# $ export CMAKE_BUILD_PARALLEL_LEVEL=8
# 安裝flash_attn
uv pip install flash_attn --no-build-isolation
# 可選實驗性使用flashinfer替代triton
# 除非您是已經成功上手的進階用戶,否則暫不建議使用
# 使用以下命令安裝:
# $ uv pip install flashinfer-python
# 僅適用于以下情況:
# 配備Intel雙路CPU且內存>1TB可容納兩份完整模型內存副本(每路CPU一份副本)
# AMD EPYC NPS0雙路平臺可能無需此配置?
# $ export USE_NUMA=1
# 安裝ktransformers
KTRANSFORMERS_FORCE_BUILD=TRUE uv pip install . --no-build-isolation
如果想自己編譯好后供其他環境使用的,則可以使用下面的命令進行環境編譯。
KTRANSFORMERS_FORCE_BUILD=TRUE uv build
然后把生成的文件移動到其他環境安裝則輸入下面命令即可
uv pip install ./dist/ktransformers-0.2.2rc1+cu120torch26fancy-cp311-cp311-linux_x86_64.whl
ktransformers運行
接口運行命令
ktransformers --model_path /home/user/new/ktran0.2.2/ktransformers/models/deepseek-ai/DeepSeek-R1 --gguf_path /home/user/new/models/unsloth/DeepSeek-R1-GGUF/DeepSeek-R1-Q4_K_M --port 8080
如果想運行網頁版本,則再最后增加 --web True參數即可。
其他問題
如果使用了不支持amx的cpu, 可能會遇到下面的報錯
/tmp/cc8uoJt1.s:23667: Error: no such instruction: `vpdpbusd %ymm3,%ymm15,%ymm1'
的報錯,
File "<string>", line 327, in build_extension
File "/usr/local/python3/lib/python3.11/subprocess.py",
line 571, in run
raise CalledProcessError(retcode, process.args, subprocess.CalledProcessError:
Command '['cmake', '--build', '.', '--verbose', '--parallel=128']'
returned non-zero exit status 1. [end of output]
這是因為CPU架構不支持這些指令:編譯時使用了-march=native參數,這會讓編譯器生成針對當前CPU優化的代碼,包括使用特定的指令集。但如果當前CPU不支持AVX-VNNI指令集,就會出現這個錯誤。
解決方案:在CMake配置中添加以下選項:
-DLLAMA_NATIVE=OFF -DLLAMA_AVX=ON -DLLAMA_AVX2=ON -DLLAMA_AVX512=OFF -DLLAMA_AVXVNNI=OFF
就可以讓cpu不使用amx指令集,從而避免這個報錯了。
另外,如果需要我環境的requirements.txt, 可以在后臺回復330獲取。
寫在最后
2025年的今天,AI創新已經噴井,幾乎每天都有新的技術出現。作為親歷三次AI浪潮的技術人,我堅信AI不是替代人類,而是讓我們從重復工作中解放出來,專注于更有創造性的事情,關注我們公眾號口袋大數據,一起探索大模型落地的無限可能!