目錄
一、環境配置
??????? 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-685B | 900G+ |
Deepseek-R1-70B | 137G+ |
Deepseek-R1-32B | 64G+ |
Deepseek-R1-14B | 30G+ |
Deepseek-R1-8B | 18G+ |
Deepseek-R1-7B | ? |
Deepseek-R1-1.5B | 4G+ |
???????? 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的部署方式更推薦,其內部有優化,推理過程更加迅速。