deepseek的部署与使用
·
DeepSeek 是一个开源的大模型系列,包含 DeepSeek-R1、DeepSeek-MoE 等多个模型,支持文本生成、对话交互等功能。以下是关于 DeepSeek 模型的部署与使用指南:
一、环境准备
首先需要准备支持模型运行的环境:
-
硬件要求:
- 推荐使用 NVIDIA GPU(显存 ≥ 16GB,如 RTX 3090/4090 或 A100),支持 CUDA 加速。
- 若使用 CPU 运行,需足够内存(建议 ≥ 64GB),但速度会较慢。
-
软件依赖:
- Python 3.8+
- PyTorch 2.0+
- 其他依赖:
transformers、accelerate、sentencepiece等
二、模型下载
DeepSeek 模型可从 Hugging Face Hub 下载,以 DeepSeek-R1-6B 为例:
# 安装 git-lfs(用于下载大文件)
sudo apt-get install git-lfs
git lfs install
# 克隆模型仓库
git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-6B
三、模型部署
以下是两种常见的部署方式:
1. 基础 Python 部署(用于开发测试)
通过 transformers 库直接加载模型并运行:
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载模型和分词器
model_path = "./DeepSeek-R1-6B" # 模型本地路径
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="auto", # 自动分配设备(优先 GPU)
torch_dtype="auto" # 自动选择数据类型
)
# 生成文本
prompt = "请介绍一下人工智能的发展历程。"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=512, # 最大生成长度
temperature=0.7, # 随机性(0-1,值越小越确定)
do_sample=True # 启用采样生成
)
# 解码并打印结果
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
####** 2. 服务化部署(用于生产环境)** 使用 FastAPI 或 vLLM 等工具将模型封装为 API 服务:
示例:使用 vLLM 部署(高效推理)
-
安装 vLLM:
pip install vllm
2.启动 API 服务:
python -m vllm.entrypoints.api_server \
--model ./DeepSeek-R1-6B \
--port 8000 \
--device cuda
3.调用 API(使用 curl):
curl http://localhost:8000/generate \
-X POST \
-H "Content-Type: application/json" \
-d '{
"prompt": "请解释什么是机器学习。",
"max_tokens": 200,
"temperature": 0.7
}'
###** 四、对话模式使用 **DeepSeek 支持多轮对话,需按照模型要求的格式构造对话历史:
def chat(prompt, history=[]):
# 构造对话格式(参考模型文档)
conversation = "\n".join([
f"User: {h[0]}\nAssistant: {h[1]}"
for h in history
])
full_prompt = f"{conversation}\nUser: {prompt}\nAssistant:"
inputs = tokenizer(full_prompt, return_tensors="pt").to(model.device)
outputs = model.generate(** inputs, max_new_tokens=512, temperature=0.7)
response = tokenizer.decode(outputs[0], skip_special_tokens=True).split("Assistant:")[-1].strip()
return response, history + [(prompt, response)]
# 多轮对话示例
history = []
prompt1 = "推荐一本机器学习入门书籍。"
response1, history = chat(prompt1, history)
print(f"Assistant: {response1}")
prompt2 = "这本书适合零基础吗?"
response2, history = chat(prompt2, history)
print(f"Assistant: {response2}")
五、注意事项
- 模型大小: larger 模型(如 33B)需要更多显存,可能需要分布式推理(使用
accelerate或deepspeed)。 - 性能优化:
- 启用 FP16/FP8 精度:
torch_dtype=torch.float16 - 使用量化(如 AWQ/GPTQ)减小显存占用。
- 启用 FP16/FP8 精度:
- 安全与合规:部署时需注意内容过滤,避免生成有害信息
更多推荐



所有评论(0)