【從零開始系列】DeepSeek-R1:(本地部署使用)思維鏈推理大模型,開源的神!——Windows/Linux本地環境測試 + vLLM遠程部署服務


目錄

一、環境配置

??????? 1.硬件設備評估

???????? 2.基礎環境安裝

??????? 3.模型參數下載

??????? (1) huggingface鏡像源下載

??????? (2) modelscope魔搭社區下載 (推薦)

二、基礎使用(Linux、Window兼容)

??????? 1.Transformers庫自編代碼

三、進階使用(僅Linux)

??????? 1.vLLM庫遠程部署

??????? (1) 服務端配置

??????? (2) 客戶端配置


一、環境配置

??????? 1.硬件設備評估

??????? Deepseek-R1系列至少開源了 7 種參數大小的模型,如下圖所示。

??????? 下面將不同參數量模型在實驗中粗略估算的所需GPU顯存大小記錄在表格(注:1.下表顯存僅代表加載模型所需,多次對話推理后顯存開銷將變更大;2.部分模型未下載實驗,以及一些其他的推理硬件指標如每秒生成tokens數量沒有記錄,歡迎各位大佬在評論區留言補充)

模型類別(根據參數量劃分)GPU顯存
Deepseek-R1-685B900G+
Deepseek-R1-70B137G+
Deepseek-R1-32B64G+
Deepseek-R1-14B30G+
Deepseek-R1-8B18G+
Deepseek-R1-7B
Deepseek-R1-1.5B4G+

???????? 2.基礎環境安裝

# 3.10版本Python
conda create -n deepseek python=3.10 -y# 2.4.1版本torch
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124# 其他依賴庫正常安裝
pip install transformers==4.46.3 safetensors==0.4.5 triton==3.0.0

??????? triton庫windows系統安裝教程:

??????? hf-mirror鏡像triton庫地址:madbuda/triton-windows-builds · HF Mirror

??????? 下載 triton-3.0.0的python3.10版本

??????? 導航到下載目錄cmd進入命令窗口,pip指令安裝即可。

# 使用whl安裝triton-window版本
conda activate deepseekpip install triton-3.0.0-cp310-cp310-win_amd64.whl

??????? 3.模型參數下載

??????? (1) huggingface鏡像源下載

??????? hf-mirror鏡像地址:deepseek-ai (DeepSeek)

??????? 可以選擇訪問上述網址,在瀏覽器中下載。

???????? 成功瀏覽器下載則可忽略下面內容,跳轉到下一個章節測試使用模型進行推理。


????????瀏覽器下載可能存在中斷風險,尤其對于動輒好幾G一個文件的大模型參數。可以考慮使用huggingface_hub 庫的命令行工具——huggingface-cli 不中斷下載。下面記錄安裝使用過程。

??????? pip安裝庫

# 安裝huggingface_hub庫在創建虛擬環境中
conda activate deepseek# 使用huggingface-cli下載模型參數
pip install -U huggingface_hub

??????? 環境變量配置

??????? 配置系統變量中huggingface下載地址為鏡像地址(hf-mirror)。

????????在 Linux 環境中,可以直接指令配置。

export HF_ENDPOINT=https://hf-mirror.com

??????? 在 Windows 環境中,需要在此電腦的屬性,高級系統設置的環境變量中配置。

??????? 輸入以下內容。

HF_ENDPOINT
https://hf-mirror.com

??????? 點擊確定完成后,可以在命令行測試。有下圖的輸出結果即代表鏡像地址配置成功。

# Windows測試環境變量配置成功
echo %HF_ENDPOINT%# Linux測試環境變量配置成功
echo $HF_ENDPOINT

??????? 使用命令下載模型參數

??????? 命令可以不中斷下載,其中 --resume-download 后填入模型名稱,這個可以直接在網站內復制,如下圖。

?????????--local-dir 參數后填入要保存的本地目錄地址即可。

# 激活環境后,命令下載 
conda activate deepseek
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Llama-8B --local-dir path/to/save

??????? (2) modelscope魔搭社區下載 (推薦)

??????? modelscope模型庫地址:魔搭社區

??????? 跟 hf-mirror 一樣,可以直接使用瀏覽器下載。

??????? 也支持命令行下載方式,但是也要安裝相應庫(較 hf 配置流程更簡單,如下圖)。

??????? 下載指令如下,在命令行cmd中操作。其中下載的指令可以在每個模型網頁界面中直接復制。并且通過 modelscope download -h 可以查詢指令參數,得知和之前一樣可以使用 --local_dir 加本地地址來設置保存路徑。

# 激活環境安裝包
conda activate deepseekpip install modelscope# 指令下載模型(以deepseek-r1-32B為例)
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B# 保存本地指定目錄
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --local_dir path/to/save

二、基礎使用(Linux、Window兼容)

??????? 1.Transformers庫自編代碼

??????? 在官方的本地部署使用方法介紹中,表明 qwen 和 llama 蒸餾的小參數量 R1 模型可以和Qwen 或 LLaMA 一致的部署方式。

??????? 因此可以和之前記錄的 Qwen 模型一樣,使用 Transformer 庫進行部署,只需修改部分代碼內容,將其變為可持續對話并記憶上下文的形式即可。

??????? 首先,如果使用和之前Qwen相同方式部署,還有一些依賴包需要安裝。

??????? 特別的,Linux 系統下還要安裝 flash-attn 庫,具體安裝報錯解決辦法見Qwen文章:Qwen從零開始

????????Windows 系統不支持該庫,實際部署運行會有紅字報錯,但不影響輸出結果,可忽略。

# 其他依賴包環境
pip install accelerate==1.3.0
pip install protobuf# Linux下安裝
pip install flash-attn

??????? 安裝好包后,下面直接給出一個簡單的運行代碼,可將其保存為一個 py 文件,在命令行激活環境直接運行即可和模型進行對話。 (記得修改其中的模型地址modelpath

from transformers import AutoModelForCausalLM, AutoTokenizer# 加載模型
def model_load(path):model_name_or_path = pathmodel = AutoModelForCausalLM.from_pretrained(model_name_or_path,torch_dtype="auto",device_map="auto")tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)return model, tokenizerif __name__ == '__main__':modelpath = ''  # 模型參數地址model, tokenizer = model_load(modelpath)chat_history = [{"role":"system", "content":'你是Deepseek,一個友好的ai聊天助手'}]while True:user_input = input("user:")if user_input.lower() in ['exit']:breakchat_history.append({"role":"user", "content":user_input})text = tokenizer.apply_chat_template(chat_history, tokenize=False,add_generation_prompt=True)chat_prompt = tokenizer([text], return_tensors="pt").to(model.device)output = model.generate(**chat_prompt, max_new_tokens=1024, pad_token_id=tokenizer.eos_token_id)generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(chat_prompt.input_ids, output)]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]print(f'\n模型回答:{response}')chat_history.append({"role":"assistant", "content":response})

??????? 下面多圖展示具體使用流程。

??????? 激活環境,并運行該 py 文件。就可以在命令行中與下載好的 deepseek 模型進行對話了。

# 激活環境并運行文件
conda activate deepseekpython test.py

??????? 對于選擇特定GPU進行推理部署,Linux系統可以直接命令改變環境變量。

# Linux系統指定GPU(如選擇0、2、4號三塊推理)
CUDA_VISIBLE_DEVICES=0,2,4 python test.py

???????? Window系統則需要在 test.py 文件中添加內容。

# Window系統指定單卡訓練
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

三、進階使用(僅Linux)

??????? 官方推薦使用 vLLM 和 SGLang 進行部署使用,這些使用架構平臺將更好的優化顯存管理和推理速度。

??????? 1.vLLM庫遠程部署

??????? (1) 服務端配置

??????? 首先在服務器上安裝 vLLM 庫環境,直接創建虛擬環境pip安裝即可。

# 安裝vLLM環境
conda create -n vLLM python=3.12 -y
conda activate vLLM
pip install vllm

??????? 在激活的環境下,輸入下面指令即可激活 api 服務。其中 model_path 代表本地的模型的下載地址;--port 代表提供服務的端口號為8000

# 啟動vllm遠程服務(指定0,1號GPU)
CUDA_VISIBLE_DEVICES=0,1 vllm serve model_path --port 8000

??????? 得到下面信息代表成功激活服務端了。

??????? (2) 客戶端配置

??????? 在任一聯網主機上,創建一個包含 openai 庫的環境,將下面代碼內容和之前Transformer部分一樣創建成一個文件運行,即可得到一個對話窗口。

# 客戶端環境
conda create -n user python=3.10
conda activate user
pip install openai

???????? 記得要修改下面代碼中的 openai_api_base 的地址為實際部署服務器的IP。

from openai import OpenAIopenai_api_key = "EMPTY"
openai_api_base = "http://host:8000/v1"  # host修改為服務器的ip地址client = OpenAI(# defaults to os.environ.get("OPENAI_API_KEY")api_key=openai_api_key,base_url=openai_api_base,
)models = client.models.list()
model = models.data[0].idif __name__ == '__main__':chat_history = [{"role": "system", "content": '你是Deepseek,一個智能的ai聊天助手'}]while True:user_input = input("user:")if user_input.lower() in ['exit']:breakchat_history.append({"role": "user", "content": user_input})response = client.chat.completions.create(messages=chat_history,model=model,).choices[0].message.contentprint(f'\n模型回答:\n{response}')chat_history.append({"role": "assistant", "content": response})

??????? 運行上述代碼,即可在窗口中進行與服務器上部署模型的對話任務了。

??????? 這種基于vllm的部署方式更推薦,其內部有優化,推理過程更加迅速。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/68217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/68217.shtml
英文地址,請注明出處:http://en.pswp.cn/web/68217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek 開源模型全解析(2024.1.1–2025.2.6)

目錄 一、通用大語言模型:DeepSeek-V3 系列 137 二、推理優化模型:DeepSeek-R1 系列 811 三、多模態模型:Janus 系列 10 四、生態整合與部署建議 五、總結與展望 以下為 DeepSeek 在 2024 年 1 月至 2025 年 2 月期間發布的開源模型及其…

Mac: docker安裝以后報錯Command not found: docker

文章目錄 前言解決辦法(新的)解決步驟(原來的)不推薦總結 前言 ?本操作參考 http://blog.csdn.net/enhenglhm/article/details/137955756 原作者,更詳細請,查看詳細內容請關注原作者。 一般,…

《手札·開源篇》數字化轉型助力永磁電機企業降本增效:快速設計軟件如何讓研發效率提升40%?

數字化轉型助力永磁電機企業降本增效:快速設計軟件如何讓研發效率提升40%? 一、痛點:傳統研發模式正在吃掉企業的利潤 永磁電機行業面臨兩大挑戰: 研發周期長:一款新電機從設計到量產需6-12個月,電磁計算…

0207作業

思維導圖 服務器 enum Type{TYPE_REGIST,TYPE_LOGIN };typedef struct Pack{int size;enum Type type;char buf[2048];}pack_t;typedef struct list{union Data{struct List* tail;char str[64];}data;struct List* next;struct List* prev; }List;List* create_node(){List* …

深入淺出 DeepSeek V2 高效的MoE語言模型

今天,我們來聊聊 DeepSeek V2 高效的 MoE 語言模型,帶大家一起深入理解這篇論文的精髓,同時,告訴大家如何將這些概念應用到實際中。 🌟 什么是 MoE?——Mixture of Experts(專家混合模型&#x…

RabbitMQ 從入門到精通:從工作模式到集群部署實戰(五)

#作者:閆乾苓 系列前幾篇: 《RabbitMQ 從入門到精通:從工作模式到集群部署實戰(一)》:link 《RabbitMQ 從入門到精通:從工作模式到集群部署實戰(二)》: lin…

nodejs:express + js-mdict 網頁查詢英漢詞典,能播放.spx 聲音

向 DeepSeek R1 提問: 我想寫一個Web 前端網頁,后臺用 nodejs js-mdict , 實現在線查詢英語單詞,并能播放.spx 聲音文件 1. 項目結構 首先,創建一個項目目錄,結構如下: mydict-app/ ├── public/ │ …

Linux ftrace 內核跟蹤入門

文章目錄 ftrace介紹開啟ftraceftrace使用ftrace跟蹤指定內核函數ftrace跟蹤指定pid ftrace原理ftrace與stracetrace-cmd 工具KernelShark參考 ftrace介紹 Ftrace is an internal tracer designed to help out developers and designers of systems to find what is going on i…

【抽象代數】1.1. 運算及關系

集合與映射 定義1. 設 為 的子集,定義 到 的映射 : 使得 ,稱 為 到 的嵌入映射。 定義2. 設 為 的子集, 為 到 的映射, 為 到 的映射,如果 ,稱為的開拓, 為 的限制&…

pytest+request+yaml+allure 接口自動化測試全解析[手動寫的跟AI的對比]

我手動寫的:Python3:pytest+request+yaml+allure接口自動化測試_request+pytest+yaml-CSDN博客 AI寫的:pytest+request+yaml+allure 接口自動化測試全解析 在當今的軟件開發流程中,接口自動化測試扮演著至關重要的角色。它不僅能夠提高測試效率,確保接口的穩定性和正確性…

數據庫高安全—審計追蹤:傳統審計統一審計

書接上文數據庫高安全—角色權限:權限管理&權限檢查,從權限管理和權限檢查方面解讀了高斯數據庫的角色權限,本篇將從傳統審計和統一審計兩方面對高斯數據庫的審計追蹤技術進行解讀。 4 審計追蹤 4.1 傳統審計 審計內容的記錄方式通…

第三個Qt開發實例:利用之前已經開發好的LED驅動在Qt生成的界面中控制LED2的亮和滅

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我們是直接利用GPIO子系統控制了LED2的亮和滅,這篇博文中我們利用之前寫好的LED驅動程序在Qt的生成的界面中控制LED2的亮和滅。 之前已經在下面兩篇博文中實現了LED驅動…

deepseek來講lua

Lua 是一種輕量級、高效、可嵌入的腳本語言,廣泛應用于游戲開發、嵌入式系統、Web 服務器等領域。以下是 Lua 的主要特點和一些基本概念: 1. 特點 輕量級:Lua 的核心非常小,適合嵌入到其他應用程序中。高效:Lua 的執…

(動態規劃 leetcode377)組合求和IV

確立狀態轉移方程需要深入理解問題,合理定義子問題,找到邊界條件(比如dp[0]),分析狀態之間的轉移關系(dp和dp之間的關系),并進行驗證。 遞歸是自頂向下,而dp是自下而上 這里是i作為目標值&…

解決aspose將Excel轉成PDF中文變成方框的亂碼問題

原文網址:解決aspose將Excel轉成PDF中文變成方框的亂碼問題_IT利刃出鞘的博客-CSDN博客 簡介 本文介紹如何解決aspose將Excel轉成PDF中文變成方框的亂碼問題。 問題描述 用aspose將word、excel等轉成PDF后,英文展示正常,但中文全部變成了…

Netty 核心原理與高并發場景實踐

在當今的網絡編程領域,隨著互聯網應用的不斷發展,對高并發、高性能網絡通信的需求日益增長。Netty 作為一款基于 Java 的異步事件驅動的網絡應用框架,憑借其卓越的性能和豐富的功能,成為了實現高并發網絡應用的首選工具。無論是在…

問題大集04-瀏覽器阻止從 本地 發起的跨域請求,因為服務器的響應頭 Access-Control-Allow-Origin 設置為通配符 *

1、問題 localhost/:1 Access to XMLHttpRequest at xxx(請求) from origin http://localhost:xxx(本地) has been blocked by CORS policy: The value of the Access-Control-Allow-Origin header in the response must not be t…

判斷192.168.1.0/24網絡中,當前在線的ip有哪些

需求:判斷192.168.1.0/24網絡中,當前在線的ip有哪些,并編寫腳本打印出來。 [rootopenEuler ~]# cat 1.sh #!/bin/bash for ip in $(seq 1 254); do ping -c 1 -W 1 "192.168.1.$ip" > /dev/null 2>&1 if [ $? …

vue-vite axios bug

axios-bug http proxy error Error: write ECONNABORTED 代碼寫法 一般baseURL不是單寫前綴就可以了嗎,為何要寫死就不會出現以上錯誤,求解。

【Spring】_SpringBoot配置文件

目錄 1.Spring Boot配置文件 1.1 Spring Boot 的配置文件類型及命名 1.2 properties和yml的優先級 2. properties配置文件 1.1 properties語法格式 1.2 自定義配置及配置文件的讀取 1.3 properties的缺點 3. yml配置文件 3.1 yml語法格式 3.2 自定義配置及配置文件的…