)
保姆级教程在Ubuntu 22.04上用Ollama一键部署DeepSeek-R1模型附Python调用代码最近在折腾AI模型本地部署的朋友们应该都听说过Ollama这个神器。作为一个专门为本地运行大型语言模型而设计的工具Ollama让模型部署变得前所未有的简单。今天我们就来手把手教大家如何在Ubuntu 22.04系统上用Ollama快速部署DeepSeek-R1模型并提供一个可直接使用的Python调用示例。1. 环境准备与Ollama安装在开始之前确保你的Ubuntu 22.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -y1.1 系统依赖检查DeepSeek-R1模型运行需要一些基础依赖我们先来安装这些必要的软件包sudo apt install -y curl wget git build-essential libssl-dev对于使用NVIDIA显卡的用户还需要确保CUDA驱动已正确安装。可以通过以下命令检查nvidia-smi如果看到显卡信息输出说明驱动安装正常如果没有需要先安装NVIDIA驱动和CUDA工具包。1.2 Ollama一键安装Ollama提供了极其简便的安装方式只需一行命令curl -fsSL https://ollama.com/install.sh | sh这个脚本会自动完成以下工作下载最新版Ollama设置系统服务配置环境变量启动Ollama服务安装完成后可以通过以下命令验证是否安装成功ollama --version如果看到版本号输出说明安装成功。此时Ollama服务已经自动启动并监听在本地11434端口。提示如果遇到网络问题导致下载缓慢可以考虑使用国内镜像源或者代理加速下载。2. DeepSeek-R1模型部署2.1 模型下载与安装Ollama支持多种模型的一键下载和部署。对于DeepSeek-R1模型执行以下命令ollama pull deepseek-r1这个命令会自动从Ollama的模型仓库下载DeepSeek-R1的最新版本。根据网络状况不同下载可能需要一些时间。模型大小约为几个GB请确保磁盘空间充足。下载完成后可以通过以下命令查看已安装的模型ollama list2.2 模型运行测试为了验证模型是否正常工作我们可以直接在命令行中与模型交互ollama run deepseek-r1进入交互模式后可以输入任何问题或指令例如你好介绍一下你自己。模型会立即给出响应。输入/bye可以退出交互模式。3. 服务配置与优化3.1 修改监听地址可选默认情况下Ollama只监听本地回环地址(127.0.0.1)这意味着只能从本机访问。如果需要从其他机器访问需要修改监听地址。编辑Ollama的服务配置文件sudo systemctl edit ollama.service在打开的编辑器中添加以下内容[Service] EnvironmentOLLAMA_HOST0.0.0.0:11434保存退出后重新加载并重启服务sudo systemctl daemon-reload sudo systemctl restart ollama注意将服务暴露在公网存在安全风险建议仅在可信网络环境下使用或配置适当的防火墙规则。3.2 性能优化建议根据硬件配置可以通过以下环境变量优化模型性能export OLLAMA_NUM_GPU1 # 使用GPU数量 export OLLAMA_KEEP_ALIVE5m # 模型在内存中保留时间可以将这些设置添加到~/.bashrc文件中使其永久生效。4. Python调用示例现在我们已经成功部署了DeepSeek-R1模型接下来看看如何通过Python代码与模型交互。4.1 基础调用首先安装必要的Python库pip install requests然后使用以下代码进行基本调用import requests import json url http://localhost:11434/api/generate headers {Content-Type: application/json} data { model: deepseek-r1, prompt: 请用中文解释量子计算的基本原理, stream: False } response requests.post(url, headersheaders, jsondata) result response.json() print(result[response])4.2 流式响应处理对于较长的响应使用流式处理可以实时获取部分结果import requests url http://localhost:11434/api/generate data { model: deepseek-r1, prompt: 写一篇关于人工智能未来发展的短文, stream: True } with requests.post(url, jsondata, streamTrue) as response: for line in response.iter_lines(): if line: decoded_line json.loads(line.decode(utf-8)) print(decoded_line.get(response, ), end, flushTrue)4.3 高级功能实现我们可以封装一个更完整的Python类来方便地调用模型import requests import json from typing import Generator class DeepSeekClient: def __init__(self, base_urlhttp://localhost:11434): self.base_url base_url def generate(self, prompt: str, model: str deepseek-r1, stream: bool False, **kwargs) - Generator[str, None, None]: url f{self.base_url}/api/generate data { model: model, prompt: prompt, stream: stream, **kwargs } response requests.post(url, jsondata, streamstream) if not stream: yield response.json()[response] return for line in response.iter_lines(): if line: decoded json.loads(line.decode(utf-8)) yield decoded.get(response, ) # 使用示例 client DeepSeekClient() for chunk in client.generate(用Python实现快速排序算法, streamTrue): print(chunk, end, flushTrue)5. 常见问题排查在实际部署过程中可能会遇到各种问题。以下是几个常见问题及其解决方法5.1 模型下载失败如果ollama pull命令失败可以尝试检查网络连接更换下载源如果有国内镜像手动下载模型文件后导入5.2 内存不足问题DeepSeek-R1模型需要较大的内存如果遇到内存不足错误关闭其他占用内存的程序考虑使用较小版本的模型如果有增加交换空间sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile5.3 GPU加速问题如果希望使用GPU加速但遇到问题确认CUDA驱动正确安装检查Ollama是否检测到GPUollama list输出中应该显示GPU信息 3. 确保安装了对应版本的CUDA工具包6. 安全注意事项虽然Ollama让模型部署变得简单但在生产环境中使用时仍需注意安全访问控制不要将服务直接暴露在公网或至少配置基本的认证资源限制设置合理的并发请求限制防止资源耗尽日志监控记录所有API请求便于审计和问题排查定期更新保持Ollama和模型版本为最新获取安全修复可以通过Nginx反向代理添加基本认证location /api { proxy_pass http://localhost:11434; auth_basic Restricted Content; auth_basic_user_file /etc/nginx/.htpasswd; }在实际项目中我发现最实用的做法是将Ollama部署在内网通过API网关对外提供有限制的访问。这样既保证了安全性又能充分利用模型的强大能力。