计算机系统应用教程网站

网站首页 > 技术文章 正文

新手将 DeepSeek 部署到本地的详细流程

btikc 2025-02-17 11:19:01 技术文章 8 ℃ 0 评论

为了让新手也能轻松部署 DeepSeek 模型到本地,以下是更详细的 **分步指南**,包含具体命令和常见问题的解决方案。假设你使用的是类似 **DeepSeek-7B** 的开源模型(以 Hugging Face 平台为例)。


---


### **1. 环境准备(逐条操作)**


#### **1.1 检查 GPU 驱动(如果使用 GPU)**

- 确保 NVIDIA 驱动已安装:

```bash

nvidia-smi # 查看 GPU 信息,确认 CUDA 版本(例如 12.2)

```

- 如果没有输出,需先安装 [NVIDIA 驱动](
https://www.nvidia.com/Download/index.aspx)。


#### **1.2 安装 Python 和 PyTorch**

- 推荐使用 **Python 3.10**:

```bash

# 安装 Python(如已安装可跳过)

sudo apt update

sudo apt install python3.10 python3.10-venv

```

- 创建虚拟环境(避免依赖冲突):

```bash

python3.10 -m venv deepseek-env

source deepseek-env/bin/activate # 激活环境

```

- 安装 PyTorch(根据 CUDA 版本选择):

- 到 [PyTorch 官网](https://pytorch.org/) 复制安装命令,例如:

```bash

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # CUDA 12.1

```


#### **1.3 安装依赖库**

```bash

pip install transformers accelerate sentencepiece huggingface_hub

```


---


### **2. 下载模型文件(适合新手的两种方法)**


#### **方法1:直接下载(无需 Git LFS)**

- 访问 Hugging Face 模型页(如 [DeepSeek-7B](
https://huggingface.co/deepseek-ai/deepseek-llm-7b-chat))。

- 点击右上角 **“Files and versions”**,手动下载所有文件(需登录 Hugging Face 账号)。

- 将文件保存到本地文件夹,例如 `./models/deepseek-7b`。


#### **方法2:使用 `huggingface_hub` 工具下载**

```python

from huggingface_hub import snapshot_download


model_id = "deepseek-ai/deepseek-llm-7b-chat"

snapshot_download(repo_id=model_id, local_dir="./models/deepseek-7b")

```


---


### **3. 运行最简单的推理代码**


#### **3.1 创建 Python 脚本 `demo.py`**

```python

import torch

from transformers import AutoTokenizer, AutoModelForCausalLM


# 模型路径(替换为你实际的路径)

model_path = "./models/deepseek-7b"


# 加载模型和分词器

tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

model = AutoModelForCausalLM.from_pretrained(

model_path,

torch_dtype=torch.float16, # 半精度减少显存占用

device_map="auto", # 自动分配到 GPU 或 CPU

trust_remote_code=True

)


# 输入文本

prompt = "你好,请介绍一下你自己。"

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)


# 生成回复

outputs = model.generate(**inputs, max_new_tokens=100)

response = tokenizer.decode(outputs[0], skip_special_tokens=True)


print("模型回复:", response)

```


#### **3.2 运行脚本**

```bash

python demo.py

```


---


### **4. 常见问题解决(新手必看)**


#### **问题1:显存不足(OOM)**

- **表现**:程序崩溃,报错 `CUDA out of memory`。

- **解决**:

- 减少生成长度:设置 `max_new_tokens=50`。

- 启用 4-bit 量化(需安装 `bitsandbytes`):

```bash

pip install bitsandbytes

```

修改模型加载代码:

```python

model = AutoModelForCausalLM.from_pretrained(

model_path,

load_in_4bit=True, # 启用 4-bit 量化

device_map="auto"

)

```


#### **问题2:模型下载失败**

- **表现**:`ConnectionError` 或下载速度慢。

- **解决**:

- 使用国内镜像源(如阿里云):

```bash

pip install huggingface_hub -i https://mirrors.aliyun.com/pypi/simple/

```

- 设置镜像下载(在代码中添加):

```python

import os

os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"

```


#### **问题3:缺少依赖库**

- **表现**:`ModuleNotFoundError: No module named 'xxx'`。

- **解决**:

```bash

pip install xxx # 根据报错提示安装缺失的库

```


---


### **5. 进阶:启动本地 API 服务(适合测试)**


#### **5.1 安装 FastAPI 和 Uvicorn**

```bash

pip install fastapi uvicorn

```


#### **5.2 创建 `api.py`**

```python

from fastapi import FastAPI

from pydantic import BaseModel

from demo import model, tokenizer # 导入之前加载的模型和分词器


app = FastAPI()


class Request(BaseModel):

prompt: str


@app.post("/chat")

def chat(request: Request):

inputs = tokenizer(request.prompt, return_tensors="pt").to(model.device)

outputs = model.generate(**inputs, max_new_tokens=100)

response = tokenizer.decode(outputs[0], skip_special_tokens=True)

return {"response": response}

```


#### **5.3 启动服务**

```bash

uvicorn api:app --host 0.0.0.0 --port 8000

```


#### **5.4 测试 API**

- 浏览器访问:`
http://localhost:8000/docs`

- 或用 `curl` 测试:

```bash

curl -X POST "
http://localhost:8000/chat" -H "Content-Type: application/json" -d '{"prompt": "你好!"}'

```


---


### **6. 最终检查清单**

1. [ ] 确认 GPU 驱动和 CUDA 已安装。

2. [ ] 虚拟环境激活并安装所有依赖。

3. [ ] 模型文件已完整下载到本地。

4. [ ] 尝试运行 `demo.py` 并得到回复。

5. [ ] 如果遇到错误,根据控制台输出调整参数(如减少 `max_new_tokens`)。


---


通过以上步骤,即使是新手也能顺利完成本地部署!如果遇到其他问题,欢迎提供具体报错信息进一步排查。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表