💻 准备工作
硬件要求
- CPU: 推荐 8核以上(Intel i7 / AMD Ryzen 7)
- 内存: 最低16GB,建议32GB(模型加载需求)
- 显存: 若使用GPU加速,需要 NVIDIA显卡(≥8GB显存)
- 磁盘: 至少40GB可用空间(模型文件约20-30GB)
环境依赖
<BASH>
# 确认Docker已安装(可选) docker --version # 若使用GPU需安装NVIDIA驱动和CUDA nvidia-smi # 验证驱动
📥 步骤一:安装Ollama
Windows/macOS(桌面版)
- 官网下载安装包:Ollama官网
- 双击安装后启动服务,终端验证:
<BASH>
ollama --version # 显示版本即成功 # (可选) 后台服务启动 ollama serve
Linux(命令行)
<BASH>
curl -L https://ollama.ai/install.sh | sh
# 配置环境变量
echo 'export PATH="$PATH:/usr/local/bin/ollama"' >> ~/.bashrc
source ~/.bashrc
🔧 步骤二:部署DeepSeek-R1模型
拉取官方模型(如果存在)
<BASH>
ollama pull deepseek-r1
或自定义Modelfile(私有模型)
<DOCKERFILE>
# Modelfile(保存为deepseek-r1.Modelfile) FROM deepseek-r1-q4_0.gguf PARAMETER temperature 0.7 PARAMETER num_ctx 4096
- 生成模型包:
<BASH>
ollama create deepseek-r1 -f deepseek-r1.Modelfile
- 生成模型包:
运行模型服务
<BASH>
ollama run deepseek-r1 # 显示 ">>> Send a message (/? for help)" 即成功
⚙️ 步骤三:修改Java后端配置
调整AiChatServiceImpl
<JAVA>
// application.yml siliconflow: api-host: http://localhost:11434 # Ollama默认端口11434 model: deepseek-r1 # 对应模型名称
优化RestTemplate配置
<JAVA>
// OllamaConfig.java @Bean public RestTemplate ollamaRestTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(30_000); // 30秒超时 factory.setReadTimeout(120_000); // 长文本响应延长超时 return new RestTemplate(factory); }
🔍 步骤四:接口适配与测试
请求格式修正
Ollama API要求请求体结构:<JAVA>
// CompletionRequest.java @Data public class CompletionRequest { private String model; private String prompt; // 直接使用prompt字段(非messages) private boolean stream = false; // ... }
调用测试(CURL示例)
<BASH>
curl http://localhost:11434/api/generate -d '{ "model": "deepseek-r1", "prompt": "山东小麦的种植技巧", "stream": false }'
响应处理优化
<JAVA>
// CompletionResponse.java @Data public class CompletionResponse { private String response; // Ollama直接返回response字段 // 删去多层嵌套结构 }
🚀 高级配置(GPU加速)
启用CUDA支持(需NVIDIA显卡)
<BASH>
# 安装容器化版本(若用Docker) docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 ollama/ollama # 确认GPU识别 ollama ps # 显示GPU利用率
模型加载参数优化
<BASH>
# 启动时指定GPU层数(示例为20层卸载到GPU) OLLAMA_NUM_GPU=20 ollama run deepseek-r1
📝 部署验证清单
检查项 | 预期结果 | 命令/测试方法 |
---|---|---|
Ollama服务运行状态 | Active (running) | systemctl status ollama |
模型加载成功 | 返回模型描述信息 | ollama list |
后端API连通性 | 200 OK | curl -I http://localhost:8080/api/ai/chat |
完整问答测试 | 合理农业建议 | 前端发送"如何防治玉米病害" |
⚠️ 常见问题解决
Q1: 模型加载显示"insufficient memory"
- 方案:
- 关闭其他内存占用程序
- 使用量化版模型(如
deepseek-r1-q4_0
) - 添加SWAP空间:
<BASH>
sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Q2: 本地API请求超时
- 调整Spring超时设置:
<JAVA>
// OllamaConfig.java factory.setReadTimeout(180_000); // 延长至3分钟