deepseek 本地部署后如何调用
时间: 2025-02-04 09:16:41 AIGC 浏览: 567
### 回答1:
在本地成功部署 DeepSeek 模型后,如何调用该模型进行推理(inference)是许多开发者和研究人员关注的核心问题。DeepSeek 是由深度求索(DeepSeek)推出的一系列大语言模型(如 DeepSeek-V1、DeepSeek-Chat、DeepSeek-Coder 等),支持自然语言理解、代码生成等多种任务。本地部署后,通常需要通过 API 接口或编程方式调用模型。以下是详细的调用方法与步骤说明:
---
### 一、确认本地部署环境
在调用前,确保已完成以下准备工作:
1. **模型已正确下载并加载**:包括模型权重、Tokenizer 和配置文件。
2. **运行环境已配置**:Python 环境、PyTorch / Transformers / vLLM / llama.cpp 等依赖库已安装。
3. **服务已启动**:如果使用 API 服务(如 FastAPI、OpenAI 兼容接口),需确认服务正在运行。
常见的部署方式包括:
- 使用 Hugging Face Transformers + Flask/FastAPI
- 使用 vLLM 部署高性能推理服务
- 使用 llama.cpp 进行轻量化 CPU/GPU 推理(适用于量化版本)
---
### 二、调用方式一:直接 Python 脚本调用(离线推理)
适用于无需网络接口的场景,直接在 Python 中加载模型并推理。
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# 加载本地模型路径
model_path = "./deepseek-ai/deepseek-coder-6.7b-instruct" # 替换为你的本地路径
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="auto", # 自动分配 GPU/CPU
torch_dtype=torch.float16 # 减少显存占用
)
# 输入文本
input_text = "写一个快速排序的 Python 函数"
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
# 生成输出
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.7,
do_sample=True
)
# 解码结果
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
```
> 注意:首次运行会从 Hugging Face 下载模型,若已本地部署,请确保 `model_path` 指向正确的本地目录。
---
### 三、调用方式二:启动本地 API 服务(推荐用于集成)
通过 FastAPI 或 vLLM 启动一个类 OpenAI 的 API 接口,便于前端或其他系统调用。
#### 示例:使用 vLLM 启动服务
vLLM 支持高吞吐量推理,并兼容 OpenAI API 格式。
1. 安装 vLLM:
```bash
pip install vllm
```
2. 启动 API 服务:
```bash
python -m vllm.entrypoints.openai.api_server \
--model ./deepseek-ai/deepseek-coder-6.7b-instruct \
--dtype half \
--gpu-memory-utilization 0.9
```
3. 调用 API(Python 客户端):
```python
import openai
client = openai.OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY"
)
response = client.chat.completions.create(
model="deepseek-coder-6.7b-instruct",
messages=[
{"role": "user", "content": "请用 Python 实现二分查找"}
],
temperature=0.7,
max_tokens=512
)
print(response.choices[0].message.content)
```
---
### 四、调用方式三:使用 Web UI(如 Text Generation WebUI)
适合非编程用户,可通过图形界面与模型交互。
1. 安装 Text-Generation-WebUI:
https://github.com/oobabooga/text-generation-webui
2. 将 DeepSeek 模型放入 `models/` 目录。
3. 启动 WebUI:
```bash
python server.py --model deepseek-coder-6.7b-instruct --load-in-8bit
```
4. 浏览器访问 `http://localhost:7860`,即可输入提问并获取回复。
---
### 五、常见问题与优化建议
| 问题 | 解决方案 |
|------|----------|
| 显存不足 | 使用量化(如 GPTQ、AWQ、GGUF)、`--load-in-8bit` 或切换到 CPU |
| 响应慢 | 使用 vLLM 提升推理速度,启用 Tensor Parallelism |
| Tokenizer 错误 | 确保使用官方 tokenizer,避免混用其他模型 tokenizer |
| CORS 阻止请求 | 若跨域调用,启动 API 时添加 `--allow-origin "*"` |
---
### 六、安全与生产建议
- **API 认证**:生产环境中应添加 API Key 验证机制。
- **限流控制**:防止滥用,可使用中间件限制请求频率。
- **日志记录**:记录调用日志以便调试与审计。
- **模型隔离**:多用户场景下,建议使用容器化部署(Docker)。
---
### 总结
本地部署 DeepSeek 模型后,调用方式灵活多样:
- **开发调试**:推荐使用 Python 脚本直接调用;
- **系统集成**:推荐使用 vLLM 或 FastAPI 提供 RESTful API;
- **非技术用户**:可使用 WebUI 进行交互。
只要模型正确加载、服务正常运行,即可通过编程或接口方式高效调用 DeepSeek 模型,实现本地化、私有化的大模型应用。
### 回答2:
### DeepSeek 本地部署完成后的调用方法
#### 安装并配置完成后调用 DeepSeek 模型
在成功安装 ollama 软件以及配置好适合的 DeepSeek 模型后,可以通过命令行工具来加载和查询模型。具体操作如下:
对于已经设置好的环境,在终端输入 `ollama run deepseek` 可启动服务[^1]。
为了向已运行的服务发送请求,可以利用 HTTP POST 请求携带 JSON 数据的方式实现交互。下面是一个 Python 的简单例子展示如何构建这样的请求:
```python
import requests
import json
url = "http://localhost:8080/v1/completions"
headers = {
'Content-Type': 'application/json'
}
data = {
"prompt": "你好",
"max_tokens": 50,
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
```
这段代码尝试连接到本地主机上的指定端口,并传递一段文本给 DeepSeek 进行处理,最后打印返回的结果。
此外,如果选择了安装 ChatBox 可视化界面,则可以直接通过图形界面上的相关按钮轻松发起对话或执行其他功能而无需编写额外代码[^2]。
阅读全文
相关推荐



















