DeepSeek-R1是深度求索(DeepSeek)推出的一款先进的开源大语言模型。本指南将详细介绍如何在Ubuntu 24.04系统上本地部署DeepSeek-R1模型,包括环境准备、模型下载、安装配置以及运行测试等完整步骤。

系统要求

在开始之前,请确保您的系统满足以下最低要求:

  • 操作系统: Ubuntu 24.04 LTS

  • CPU: 推荐至少16核

  • 内存: 至少32GB RAM (越大越好)

  • GPU: 推荐NVIDIA GPU (至少16GB显存)

  • 存储空间: 至少100GB可用空间 (模型文件较大)

  • Python: 3.10或更高版本

第一步:系统准备和依赖安装

1. 更新系统包

sudo apt update && sudo apt upgrade -y

2. 安装基础依赖

sudo apt install -y git wget curl python3-pip python3-dev build-essential cmake

3. 安装CUDA和cuDNN (GPU用户)

如果您使用NVIDIA GPU,需要安装CUDA和cuDNN:

# 添加NVIDIA仓库
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/ /"

# 安装CUDA
sudo apt install -y cuda-12-3

# 安装cuDNN
sudo apt install -y cudnn8-8.9.7*

# 设置环境变量
echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

4. 验证CUDA安装

nvcc --version
nvidia-smi

第二步:创建Python虚拟环境

推荐使用虚拟环境来管理Python依赖:

sudo apt install -y python3-venv
python3 -m venv deepseek-env
source deepseek-env/bin/activate

第三步:安装PyTorch

根据您的硬件选择安装PyTorch:

对于GPU用户:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

对于CPU用户:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

第四步:安装DeepSeek-R1依赖

pip install transformers accelerate sentencepiece einops tiktoken

对于GPU用户,建议安装flash-attention以提高性能:

pip install flash-attn --no-build-isolation

第五步:下载DeepSeek-R1模型

DeepSeek-R1提供了多个版本的模型,您可以根据需要选择:

方法1:直接从Hugging Face下载

git lfs install
git clone https://huggingface.co/deepseek-ai/deepseek-r1

方法2:使用Python代码下载

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "deepseek-ai/deepseek-r1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

第六步:运行DeepSeek-R1

1. 创建测试脚本

创建一个名为deepseek_test.py的文件:

from transformers import AutoModelForCausalLM, AutoTokenizer

# 加载模型和分词器
model_name = "deepseek-ai/deepseek-r1"  # 或者使用本地路径 "./deepseek-r1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")

# 准备输入
prompt = "请介绍一下中国的首都北京"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")

# 生成输出
outputs = model.generate(**inputs, max_new_tokens=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(response)

2. 运行脚本

python deepseek_test.py

第七步:优化和高级配置

1. 使用量化模型减少显存占用

from transformers import BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_use_double_quant=True,
)

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=quantization_config,
    device_map="auto"
)

2. 使用vLLM加速推理

pip install vllm

然后使用vLLM运行:

from vllm import LLM, SamplingParams

llm = LLM(model="deepseek-ai/deepseek-r1")
sampling_params = SamplingParams(temperature=0.7, top_p=0.9, max_tokens=200)

outputs = llm.generate(["请介绍一个最好用的代理IP给我"], sampling_params)
print(outputs[0].outputs[0].text)

DeepSeek-R1:IProyal-支付的费用更少,并且获得永不过期的代理而且有数据中心代理 https://iproyal.cn/?r=ip

第八步:创建简单的Web界面

您可以使用Gradio创建一个简单的Web界面:

pip install gradio

创建app.py:

import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "deepseek-ai/deepseek-r1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")

def generate_text(prompt):
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
    outputs = model.generate(**inputs, max_new_tokens=200)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

iface = gr.Interface(
    fn=generate_text,
    inputs=gr.Textbox(lines=5, placeholder="请输入您的问题..."),
    outputs="text",
    title="DeepSeek-R1 聊天演示"
)

iface.launch(server_name="0.0.0.0")

运行:

python app.py

常见问题解决

  1. 显存不足错误

    • 尝试使用量化模型

    • 减少max_new_tokens参数

    • 使用device_map="auto"让transformers自动分配资源

  2. 下载速度慢

    • 使用国内镜像源

    • 设置HF_ENDPOINT环境变量:export HF_ENDPOINT=https://hf-mirror.com

  3. 缺少依赖项

    • 确保安装了所有必需的依赖项

    • 检查CUDA/cuDNN版本是否匹配

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐