本地化部署 DeepSeek 模型的具体步骤:

1. 硬件要求

  • 最低配置
    • RAM: 至少 16GB
    • GPU: 推荐 NVIDIA GPU,显存至少 8GB (如 RTX 3080, A4000 等)
    • 存储空间: 至少 40GB 可用空间 (用于模型权重和依赖)
  • 推荐配置
    • RAM: 32GB 或以上
    • GPU: 显存 16GB 或以上 (如 RTX 3090/4090, A5000/A6000, Tesla V100/A100)
    • 存储空间: 建议 SSD,空间 100GB 以上

2. 环境准备

  1. 安装 Python: 确保系统已安装 Python (推荐 Python 3.8, 3.9 或 3.10)。
  2. 创建虚拟环境 (推荐)
    python -m venv deepseek-env
    source deepseek-env/bin/activate  # Linux/macOS
    # 或 deepseek-env\Scripts\activate  # Windows
    

  3. 安装 PyTorch: 访问 PyTorch 官网,根据你的 CUDA 版本选择合适的安装命令。例如:
    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118  # 以 CUDA 11.8 为例
    

  4. 安装 Transformers 库
    pip install transformers
    

  5. 安装其他依赖 (可选): 可能需要 accelerate (用于分布式/混合精度推理) 和 bitsandbytes (用于量化):
    pip install accelerate
    pip install bitsandbytes  # 仅用于 4-bit/8-bit 量化
    

3. 获取模型权重

  • 方式一:Hugging Face Hub
    1. 访问 DeepSeek 模型在 Hugging Face Hub 的页面 (例如 deepseek-ai/deepseek-llm-7b-basedeepseek-ai/deepseek-llm-7b-chat)。
    2. 确保你有权限访问该模型 (可能需要登录 Hugging Face 账号,并可能需申请授权)。
    3. 模型将首次运行时自动下载,或使用以下代码预下载:
      from transformers import AutoModelForCausalLM, AutoTokenizer
      model_name = "deepseek-ai/deepseek-llm-7b-chat"  # 替换为实际模型名
      tokenizer = AutoTokenizer.from_pretrained(model_name)
      model = AutoModelForCausalLM.from_pretrained(model_name)
      

  • 方式二:本地已有权重 如果你已将模型权重文件 (pytorch_model.bin, config.json, tokenizer.json 等) 下载到本地目录 (例如 ./models/deepseek-7b-chat),后续加载时指向该路径即可。

4. 加载模型与 Tokenizer

在你的 Python 脚本中加载模型和分词器:

from transformers import AutoModelForCausalLM, AutoTokenizer

# 指定模型路径 (可以是 Hugging Face Hub 的标识符或本地文件夹路径)
model_path = "deepseek-ai/deepseek-llm-7b-chat"  # 或 "./models/deepseek-7b-chat"

# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_path)

# 加载模型
# 根据硬件选择 device_map 和 torch_dtype
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    device_map="auto",  # 自动分配可用设备 (GPU/CPU)
    torch_dtype=torch.float16,  # 使用半精度 (FP16) 节省显存,如果 GPU 支持 BF16 可改为 torch.bfloat16
    # trust_remote_code=True,  # 如果模型需要自定义代码,可能需要此项
    # load_in_4bit=True,        # 使用 4-bit 量化 (需要 bitsandbytes),显存不足时可考虑
    # load_in_8bit=True,        # 使用 8-bit 量化
)
model.eval()  # 设置为评估模式

5. 进行推理 (示例)

以下是一个简单的文本生成示例:

import torch

# 准备输入
prompt = "你好,DeepSeek!"
messages = [
    {"role": "user", "content": prompt}
]

# 使用 ChatML 格式 (DeepSeek-Chat 模型使用)
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

# 分词并转换为模型输入
model_inputs = tokenizer(text, return_tensors="pt").to(model.device)

# 生成配置
gen_config = {
    "max_new_tokens": 1024,  # 最大生成长度
    "do_sample": True,       # 使用采样
    "temperature": 0.7,      # 采样温度
    "top_p": 0.9,            # Top-p (nucleus) 采样
    # "top_k": 50,           # Top-k 采样
    # "repetition_penalty": 1.1, # 重复惩罚
}

# 生成文本
with torch.no_grad():
    outputs = model.generate(**model_inputs, **gen_config)

# 解码并打印输出 (跳过输入部分)
response = outputs[0][model_inputs.input_ids.shape[1]:]
print(tokenizer.decode(response, skip_special_tokens=True))

6. 运行脚本

保存上述代码到一个 Python 文件 (如 deepseek_inference.py),然后在你的虚拟环境中运行它:

python deepseek_inference.py

注意事项

  • 显存管理:如果遇到显存不足 (OOM) 错误,尝试:
    • 使用 load_in_4bit=Trueload_in_8bit=True (需要安装 bitsandbytes)。
    • 降低 max_new_tokens
    • 使用 torch.float32 (但会显著增加显存消耗)。
    • 考虑使用 CPU 卸载 (更慢)。
  • 模型版本:确保你加载的模型名称或路径与你下载的模型权重一致。
  • 首次运行:第一次运行时会下载模型权重和分词器文件,需要较长时间和稳定网络。
  • 安全:本地部署意味着你需要自行负责模型使用的安全和合规性。

按照这些步骤,你应该能够在本地环境中成功部署并运行 DeepSeek 模型进行推理。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐