DeepSeek 本地部署全攻略:从安装到知识库、微调、实战配置
DeepSeek 本地部署全攻略:从安装到知识库、微调、实战配置
想把 DeepSeek 跑在自己机器上,又不想被云 API 的限流和隐私问题困扰?本文给你一条完整路径:环境 → 量化加载 → API 服务 → 本地知识库 → 微调,每一步都附可直接改的代码。
一、环境准备
建议使用 conda 隔离环境,Python 3.8+:
conda create -n deepseek python=3.10 -y
conda activate deepseek
安装 PyTorch(去 pytorch.org 按 CUDA 版本选命令),以及 Hugging Face 相关库:
# 量化与加载核心依赖
pip install "bitsandbytes>=0.43.0" # 8bit/4bit 量化
pip install "transformers>=4.38.0" # 新版模型加载
pip install "accelerate>=0.27.0" # 显存优化调度
pip install sentence-transformers faiss-cpu pypdf # 知识库用
国内建议配 HF 镜像:
export HF_ENDPOINT=https://hf-mirror.com,避免下载模型超时。
二、模型加载与量化
显存不够又想跑大模型,量化是第一招。DeepSeek 系列(如 7B/67B)可用 bitsandbytes 做 8bit 或 4bit 加载。
2.1 8bit 量化(显存 16~24GB 适用)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
quant_config = BitsAndBytesConfig(load_in_8bit=True)
model = AutoModelForCausalLM.from_pretrained(
"deepseek-ai/deepseek-llm-7b-chat",
quantization_config=quant_config,
device_map="auto",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(
"deepseek-ai/deepseek-llm-7b-chat", trust_remote_code=True
)
2.2 4bit 极致压缩(显存 < 16GB 适用)
quant_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4", # 推荐 nf4
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True, # 嵌套量化,再省显存
bnb_4bit_quant_storage=torch.uint8,
)
model = AutoModelForCausalLM.from_pretrained(
"/path/to/your/model",
device_map="auto",
quantization_config=quant_config,
trust_remote_code=True,
)
2.3 基础对话
inputs = tokenizer("请介绍一下你自己", return_tensors="pt").to("cuda")
out = model.generate(**inputs, max_new_tokens=512)
print(tokenizer.decode(out[0], skip_special_tokens=True))
三、封装成 API 服务
本地玩不如做成服务,方便前端/其他系统调用。用 FastAPI 包一层:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Req(BaseModel):
prompt: str
@app.post("/chat")
def chat(req: Req):
inputs = tokenizer(req.prompt, return_tensors="pt").to("cuda")
out = model.generate(**inputs, max_new_tokens=512)
return {"answer": tokenizer.decode(out[0], skip_special_tokens=True)}
pip install fastapi uvicorn
uvicorn main:app --host 0.0.0.0 --port 8000
生产环境建议加 API Key 校验(
@require_api_key装饰器)和并发限流,避免被刷显存。
四、接入本地知识库(RAG)
让模型「懂你的私有文档」,用检索增强生成(RAG):把文档切分、向量化存进 Faiss,问答时先检索相关片段再喂给模型。
4.1 依赖与初始化
from sentence_transformers import SentenceTransformer
import faiss, os
embedder = SentenceTransformer("BAAI/bge-small-zh") # 中文 embedding
index = faiss.IndexFlatL2(embedder.get_sentence_embedding_dimension())
4.2 文档处理与检索
from pypdf import PdfReader
def load_pdf(path):
reader = PdfReader(path)
return "\n".join(p.extract_text() for p in reader.pages)
def add_to_index(text, chunk_size=500):
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
vectors = embedder.encode(chunks)
index.add(vectors)
return chunks
def search(query, chunks, top_k=3):
q = embedder.encode([query])
_, idx = index.search(q, top_k)
return [chunks[i] for i in idx[0]]
检索到的片段拼进 prompt,模型就能基于你的文档作答,有效缓解幻觉。
五、微调入门
如果只是想让模型学特定风格/领域,不必全参训练,优先用 LoRA / QLoRA:
- QLoRA:4bit 量化基座 + LoRA 适配器,单张 24GB 卡即可微调 7B;
- 工具链:
peft+trl+datasets,准备 JSONL 格式指令数据即可开训; - 经验:先小数据(几百条)验证 pipeline,再放量,切忌一上来全量。
六、显存配置对照
| 模型 | 精度 | 显存需求 | 推荐卡 |
|---|---|---|---|
| 7B | FP16 | ~14 GB | 3090/4090 24GB |
| 7B | 4bit | ~5 GB | 消费级 8GB 也能跑 |
| 67B | 4bit | ~35 GB | A100 40/80GB 或双卡 |
| 67B | FP16 | ~134 GB | 多卡 A100 集群 |
七、小结
DeepSeek 本地部署的骨架就是:量化加载降本 → API 服务化 → RAG 接私有知识 → LoRA 微调定制。每一步都不复杂,难点在显存与数据质量。先把 7B 4bit 跑通一个聊天 API,再逐步加知识库和微调,你会发现「私有化大模型」离生产并不远。
参考资料
- Hugging Face Transformers 文档
- bitsandbytes 量化指南
- 个人部署记录整理

浙公网安备 33010602011771号