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 量化指南
  • 个人部署记录整理
posted @ 2026-08-12 09:21  钱栈up  阅读(32)  评论(0)    收藏  举报