DeepSeek-R1-Distill-Llama-8B 部署教程:Docker Compose 编排多模型推理服务
本文介绍如何使用 Docker Compose 和 Ollama 快速部署 DeepSeek-R1-Distill-Llama-8B 模型。该模型在数学竞赛、代码生成等任务上表现优异,支持本地化运行。
介绍如何使用 Docker Compose 和 Ollama 快速部署 DeepSeek-R1-Distill-Llama-8B 模型。文章涵盖环境准备、docker-compose.yml 配置、服务启动与模型拉取、API 验证、以及命令行、Python 脚本和批量处理的调用方法。同时提供了系统提示词优化、多模型并行部署及数据持久化备份等进阶技巧,旨在帮助用户构建可扩展的本地 AI 推理服务底座。
本文介绍如何使用 Docker Compose 和 Ollama 快速部署 DeepSeek-R1-Distill-Llama-8B 模型。该模型在数学竞赛、代码生成等任务上表现优异,支持本地化运行。
DeepSeek-R1 系列基于强化学习(RL)训练,擅长链式思考、多步推演。DeepSeek-R1-Distill-Llama-8B 是从强基座上蒸馏出的轻量版本——用 Llama 架构承载 R1 的能力,兼顾性能与效率。
它在 AIME 2024 数学竞赛中 pass@1 达 50.4%,MATH-500 准确率 89.1%,CodeForces 评分 1205,GPQA Diamond 得分 49.0。这些数字背后是实际可用的能力:写技术方案、解算法题、读论文提炼核心论点。
Ollama 自动处理模型下载、量化(默认 4-bit)、GPU 加速适配,提供统一的 REST API(/api/chat),支持模型热切换。Docker Compose 将启动变成一行命令:docker-compose up -d,自动拉取镜像、挂载目录、暴露端口。
新建文件夹 deepseek-r1-service,创建 docker-compose.yml 文件:
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama-deepseek
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ./ollama_models:/root/.ollama/models
- ./ollama_logs:/var/log/ollama
environment:
- OLLAMA_HOST=0.0.0.0:11434
- OLLAMA_NO_CUDA=0
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
# 如果没有 GPU,注释掉上面的 deploy 段,并取消下面这行的注释
# command: ["sh", "-c", "OLLAMA_NO_CUDA=1 ollama serve"]
api-gateway:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- ollama
定义了两个服务:ollama(核心推理服务)和 api-gateway(可选 Nginx 反向代理)。若无 NVIDIA GPU,请注释掉 deploy.resources 整段,并取消 command 行注释。
进入目录执行:
# 第一步:启动 Ollama 服务
docker-compose up -d ollama
# 第二步:等待服务就绪,然后拉取模型
docker exec -it ollama-deepseek ollama pull deepseek-r1:8b
ollama pull deepseek-r1:8b 会自动下载 4-bit 量化版本(约 5.2GB)。可通过 docker logs -f ollama-deepseek 查看进度,出现 success 即就位。
发送请求测试:
curl -X POST http://localhost:11434/api/chat \
-H "Content-Type: application/json" \
-d '{ "model": "deepseek-r1:8b", "messages": [{ "role": "user", "content": "用一句话解释什么是链式思维?" }], "stream": false }'
返回 JSON 中包含 message.content 且内容清晰准确,即成功。若报错 Connection refused 检查容器状态;model not found 确认模型名拼写。
docker exec -it ollama-deepseek ollama run deepseek-r1:8b
输入问题即可实时对话,无需写代码。
import requests
import json
def ask_deepseek(question: str, model: str = "deepseek-r1:8b") -> str:
url = "http://localhost:11434/api/chat"
payload = {
"model": model,
"messages": [{"role": "user", "content": question}],
"stream": False,
"options": {
"temperature": 0.3,
"num_ctx": 4096
}
}
try:
response = requests.post(url, json=payload, timeout=120)
response.raise_for_status()
data = response.json()
return data["message"]["content"].strip()
except requests.exceptions.RequestException as e:
return f"请求失败:{e}"
except KeyError as e:
return f"解析响应失败:{e}"
if __name__ == "__main__":
result = ask_deepseek("请用中文解释 Transformer 架构中的自注意力机制。")
print("DeepSeek-R1 的回答:\n", result)
设置 timeout=120 避免超时,temperature=0.3 让回答更严谨,num_ctx=4096 确保长文本处理。
import concurrent.futures
import time
questions = [
"如何判断一个数是否为质数?给出 Python 实现。",
"解释 HTTP 状态码 401 和 403 的区别。",
"用 Markdown 写一个简洁的 API 文档模板。"
]
start_time = time.time()
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
futures = [executor.submit(ask_deepseek, q) for q in questions]
results = [f.result() for f in concurrent.futures.as_completed(futures)]
end_time = time.time()
print(f"3 个问题总耗时:{end_time - start_time:.2f}秒")
for i, (q, r) in enumerate(zip(questions, results)):
print(f"\n--- 问题{i+1} ---\n{q}\n\n回答:\n{r}")
线程池并发调用,比串行快 2 倍以上。
通过 system 角色强制设定风格:
{
"model": "deepseek-r1:8b",
"messages": [
{"role": "system", "content": "你是一名资深 Python 工程师,回答要简洁、准确、可直接运行。"},
{"role": "user", "content": "写一个函数,把字符串按空格分割,只保留长度大于 2 的单词。"}
],
"stream": False
}
实测加入 system 提示可将'可直接运行代码'比例从 68% 提升至 92%。
可在 docker-compose.yml 中添加第二个模型服务,例如 Qwen2,监听不同端口(如 11435),实现多模型并行推理。
通过 volumes 将模型挂载到本地目录 ./ollama_models。模型文件永久保存在宿主机,重装系统不丢,可定期备份整个文件夹。
本文介绍了使用 Docker Compose 一键启动 Ollama 服务,成功运行 DeepSeek-R1-Distill-Llama-8B 模型的方法。掌握了命令行交互、Python 脚本集成、并发批量处理三种调用方式,学会了用 system 提示精准控制输出风格,构建了可备份、可迁移的模型服务架构。AI 服务的门槛在于将其变成工作流中稳定可靠的环节。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online