僅需10萬不到,DeepSeek R1 671B大模型本地部署實(shí)戰(zhàn)指南
最近幫一個(gè)朋友部署本地的671b版本的deepseek r1,需求是要完全本地部署,但是又不想花太高的成本,沒有并發(fā)要求,我一想,用ktransformers框架來部署完全合適。
關(guān)于機(jī)器配置,在挑挑揀揀評比之后,設(shè)備選擇如下,最終選擇的是其中的服務(wù)器配置。
這套設(shè)備下來總成本不到10萬,相比如動輒幾百萬的滿血版deepseek R1或者花個(gè)五六十萬買個(gè)deepseek 70b的一體機(jī)要值當(dāng)?shù)亩?,且不說70b并不是真正的deepseek r1,效果還不如32b的QWQ,就光說一體機(jī)的升級也是個(gè)麻煩事,買了機(jī)器基本就和模型綁定了,以后新模型出來后想升級就難了。
說起這個(gè),我上個(gè)月去給政府某部門培訓(xùn)大模型時(shí),還聽到一個(gè)八卦,說有個(gè)公司,花了幾百萬讓某個(gè)大廠私有化部署了一套定制的模型,但是deepseek r1出來后,直接棄用了,又去買了一套deepseek一體機(jī)。
而且這些公司買了一體機(jī)后,也還是不知道怎么用,就是搞個(gè)接口和頁面,讓員工來問下問題,就沒了其他用途了。只能說,公司是真有錢。
基礎(chǔ)配置
先說結(jié)論,使用Ktransformers框架,在上述圖片的服務(wù)器配置上,速度能達(dá)到5token/s, 考慮到Ktransformers目前還并不支持并發(fā),本地私有化部署給少數(shù)人使用,這個(gè)速度還是勉強(qiáng)可以接受。
ktransformers官網(wǎng)文檔的安裝方式我之前已經(jīng)寫過一篇文章,ktransformers部署詳細(xì)筆記。此處不再贅述。
這里我介紹一個(gè)這次我安裝時(shí)發(fā)現(xiàn)的一個(gè)新的教程 r1-ktransformers-guide,提供了基于uv的預(yù)編譯的環(huán)境,可以避免很多環(huán)境的依賴的報(bào)錯(cuò)。
同時(shí)要注意ubuntu版本要使用ubuntu22及以上,python版本為3.11。
NVIDIA驅(qū)動版本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 #應(yīng)顯示 7a19f3b
注意的是,git submodule update 主要是為了更新third_party中的項(xiàng)目
如果網(wǎng)絡(luò)不好,可以直接github中下載這些項(xiàng)目并放到到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量化版本,因?yàn)榫W(wǎng)絡(luò)問題,使用阿里的魔塔下載模型
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是一個(gè)用Rust語言編寫的現(xiàn)代Python包管理工具,被稱為"Python的Cargo",它是pip、pip-tools和virtualenv等傳統(tǒng)工具的高速替代品。速度比pip更快,而且還支持可編輯安裝、git依賴、本地依賴、源代碼分發(fā)等pip的高級功能。
安裝uv工具鏈
curl -LsSf https://astral.sh/uv/install.sh | sh
創(chuàng)建虛擬環(huán)境
uv venv ./venv --python 3.11 --python-preference=only-managedsource venv/bin/activate
然后我們就可以按照教程中的使用uv工具進(jìn)行安裝。
uv安裝預(yù)編譯版本
flashinfer-python是一個(gè)專為大型語言模型(LLM)推理服務(wù)設(shè)計(jì)的高性能GPU加速庫。它主要提供以下功能:
$ uv pip install flashinfer-python
這是安裝ktransformers庫的預(yù)編譯版本:
$ 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庫的預(yù)編譯版本:
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
這里的預(yù)編譯版本其實(shí)是這個(gè)文檔的作者直接編譯好的,雖然這個(gè)教程說明中提到僅適合RTX 3090Ti 24GB顯存 + 96GB DDR5-6400內(nèi)存 + Ryzen 9950X處理器 。
但是我使用4090 24顯存 + 500 DDR5-4800內(nèi)存 ,使用這個(gè)預(yù)編譯版本也可以安裝成功的。如果這個(gè)預(yù)編譯版本可以安裝成功的話,很多潛在的因?yàn)榘姹静粚υ斐傻膱?bào)錯(cuò)都可以避免掉了。
源碼運(yùn)行ktransformers
如果上面的預(yù)編譯版本運(yùn)行不了的話,又不想接著安裝ktransfomers,其實(shí)也可以直接用源碼來跑的,命令如下:
支持多GPU配置及通過 `--optimize_config_path` 進(jìn)行更細(xì)粒度的顯存卸載設(shè)置
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
是的,其實(shí)即使不編譯ktransfomers,也是可以跑起來的。直接把項(xiàng)目下好,運(yùn)行上面的命令,準(zhǔn)備好相應(yīng)的文件,就能正常運(yùn)行了。
如果要繼續(xù)編譯ktransfomers的話,則可以按照下面的流程進(jìn)行操作:
# 安裝額外編譯依賴項(xiàng),包括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
# 建議跳過可選網(wǎng)站應(yīng)用,使用`open-webui`或`litellm`等替代方案
cd ktransformers/website/
npm install @vue/cli
npm run build
cd ../..
# 如果擁有充足的CPU核心和內(nèi)存資源,可顯著提升構(gòu)建速度
# $ export MAX_JOBS=8
# $ export CMAKE_BUILD_PARALLEL_LEVEL=8
# 安裝flash_attn
uv pip install flash_attn --no-build-isolation
# 可選實(shí)驗(yàn)性使用flashinfer替代triton
# 除非您是已經(jīng)成功上手的進(jìn)階用戶,否則暫不建議使用
# 使用以下命令安裝:
# $ uv pip install flashinfer-python
# 僅適用于以下情況:
# 配備Intel雙路CPU且內(nèi)存>1TB可容納兩份完整模型內(nèi)存副本(每路CPU一份副本)
# AMD EPYC NPS0雙路平臺可能無需此配置?
# $ export USE_NUMA=1
# 安裝ktransformers
KTRANSFORMERS_FORCE_BUILD=TRUE uv pip install . --no-build-isolation
如果想自己編譯好后供其他環(huán)境使用的,則可以使用下面的命令進(jìn)行環(huán)境編譯。
KTRANSFORMERS_FORCE_BUILD=TRUE uv build
然后把生成的文件移動到其他環(huán)境安裝則輸入下面命令即可
uv pip install ./dist/ktransformers-0.2.2rc1+cu120torch26fancy-cp311-cp311-linux_x86_64.whl
ktransformers運(yùn)行
接口運(yùn)行命令
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
如果想運(yùn)行網(wǎng)頁版本,則再最后增加 --web True參數(shù)即可。
其他問題
如果使用了不支持amx的cpu, 可能會遇到下面的報(bào)錯(cuò)
/tmp/cc8uoJt1.s:23667: Error: no such instruction: `vpdpbusd %ymm3,%ymm15,%ymm1'
的報(bào)錯(cuò),
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]
這是因?yàn)镃PU架構(gòu)不支持這些指令:編譯時(shí)使用了-march=native參數(shù),這會讓編譯器生成針對當(dāng)前CPU優(yōu)化的代碼,包括使用特定的指令集。但如果當(dāng)前CPU不支持AVX-VNNI指令集,就會出現(xiàn)這個(gè)錯(cuò)誤。
解決方案:在CMake配置中添加以下選項(xiàng):
-DLLAMA_NATIVE=OFF -DLLAMA_AVX=ON -DLLAMA_AVX2=ON -DLLAMA_AVX512=OFF -DLLAMA_AVXVNNI=OFF
就可以讓cpu不使用amx指令集,從而避免這個(gè)報(bào)錯(cuò)了。
另外,如果需要我環(huán)境的requirements.txt, 可以在后臺回復(fù)330獲取。
寫在最后
2025年的今天,AI創(chuàng)新已經(jīng)噴井,幾乎每天都有新的技術(shù)出現(xiàn)。作為親歷三次AI浪潮的技術(shù)人,我堅(jiān)信AI不是替代人類,而是讓我們從重復(fù)工作中解放出來,專注于更有創(chuàng)造性的事情,關(guān)注我們公眾號口袋大數(shù)據(jù),一起探索大模型落地的無限可能!