DeepSeek R1最全本地部署教程 适用于Mac/Windows/Linux平台
IT运维技术圈
说到本地部署大模型,就不得不提到 Ollama。Ollama 是一个开源项目,旨在简化大语言模型(LLM)在本地环境中的部署和使用。它为用户提供了一个简单易用的接口,使得即使没有深厚技术背景的用户也能轻松地在自己的设备上运行和管理大模型。本篇文章将以部署国产最新崛起的 AI 大模型 DeepSeek R1 为例,手把手教你如何利用 Ollama 在本地环境中快速搭建和运行这些先进的 AI 模型。
一、DeepSeek R1 简介
DeepSeek R1 是一款开源 AI 模型,其性能可与 OpenAI 的 GPT-4 和 Claude 3.5 Sonnet 等顶级模型媲美,尤其在数学、编程和推理等任务上表现出色。最重要的是,它是免费、私密的,可以在本地硬件上离线运行。
DeepSeek R1 提供多个参数规模的版本,从轻量级的 1.5B 参数模型到高性能的 70B 版本。它基于 Qwen 7B 架构的精简优化版本,既保持强大性能,又具备更高的计算效率。
其主要亮点包括:
- 完全开源,可自由使用。
- 支持本地运行,无需依赖云服务器。
- 数据完全可控,确保隐私安全。
二、为什么选择本地部署?
本地运行 AI 模型有以下优势:
- 隐私保障:所有数据均存储在本地,避免敏感信息泄露。
- 零额外成本:DeepSeek R1 免费运行,无需订阅或额外费用。
- 完全控制:可以进行微调和本地优化,无需外部依赖。
三、硬件要求
四、安装步骤
步骤 1:安装 Ollama
Ollama 是一款本地 AI 运行工具,可帮助用户轻松运行 DeepSeek R1。
下载地址:https://ollama.com/download
安装完成后,Ollama 提供了在终端直接运行 AI 模型的功能。
Ollama 简介
Ollama 是一个专注于简化大语言模型(LLM)本地部署的开源工具。它的设计目标是让用户能够以最少的配置和操作,轻松在本地设备上运行和管理各种大模型。无论是开发者、研究者,还是普通用户,都可以通过 Ollama 快速体验大语言模型的强大能力,而无需依赖云端服务或复杂的部署流程。
Ollama 核心特点
- 开箱即用:提供了预配置的模型包,用户只需通过简单的命令即可下载和运行模型,无需手动配置环境或处理复杂的依赖关系。
- 跨平台支持:支持 Windows、macOS 和 Linux 系统,覆盖了大多数主流操作系统,满足不同用户的需求。
- 模型管理:用户可以轻松管理多个模型版本,包括下载、更新和切换模型。它还支持自定义模型配置。
- 资源优化:针对本地硬件进行了优化,能够在有限的资源下高效运行大模型。无论是高性能 GPU 还是普通 CPU,都能流畅的体验。
- 开发者友好:提供了丰富的 API 和详细的文档,方便开发者将其集成到自己的应用中,或者进行二次开发。
Ollama 的适用场景
- 个人学习与研究:非常适合个人用户在自己的电脑上探索大语言模型的能力,无需依赖云端服务。
- 本地开发与测试:开发者可以利用 Ollama 在本地快速测试和调试基于大模型的应用,提升开发效率。
- 隐私保护:由于模型完全运行在本地,Ollama 特别适合对数据隐私有较高要求的场景,例如医疗、金融等领域。
Ollama 安装
Ollama 的安装也特别的简单,基本上只需要鼠标点点点即可,以下是具体的安装步骤:
1、打开 Ollama 官网:https://ollama.com/download,根据自己的操作系统下载不同的安装程序包。
2、下载完成后,双开打开点击 “install” 即可,然后就是耐心等待几分钟。
3、经过了几分钟,你可能发现安装的界面不见了,不要慌这是正常的。接下来就是打开 CMD 命令窗口
(通过 Win + R
键可打开);
当出现运行窗口时,输入 cmd
点击确定即可,在命令窗口中再输入 ollama
如果输出结果跟我一样,那就表示成功安装了。
这里输出的是 ollama 命令的用法的,具体如下:
用法: ollama [flags] ollama [命令] 可用命令: serve 启动 ollama create 从 Modelfile 创建模型 show 显示模型信息 run 运行模型 stop 停止正在运行的模型 pull 从注册表拉取模型 push 将模型推送到注册表 list 列出模型 ps 列出正在运行的模型 cp 复制模型 rm 删除模型 help 获取命令帮助 标志: -h, --help 显示帮助信息 -v, --version 显示版本信息 使用 "ollama [命令] --help" 获取有关命令的更多信息。
Open - Webui 安装
什么是 Open WebUI ?
Open WebUI 是一个开源的、基于 Web 的用户界面(UI)框架,专为与大语言模型(LLM)交互而设计。它提供了一个直观、友好的图形界面,使用户能够通过浏览器轻松地与本地或远程部署的大语言模型进行交互,而无需依赖复杂的命令行工具。Open WebUI 支持多种功能,包括聊天、模型管理、历史记录查看等,极大地提升了用户的使用体验。
为什么将 Open WebUI 与 Ollama 结合使用?
Ollama主要是通过命令进行操作,对于不熟悉命令行的用户来说可能不够友好。而 Open WebUI 正好弥补了这一不足,它为用户提供了一个直观的图形界面,使得与 Ollama 部署的模型交互变得更加简单和高效。
Open - Webui 安装
Open - Webui 提供了多种安装方式,这里我用的是 Python pip。
如果你还没有安装 Python,可以查看下面这篇安装教程。注意:请确保安装的是 Python 3.11 版本避免兼容性问题。
Python安装教程:https://blog.csdn.net/Palpitate_2024/article/details/145406375?spm=1001.2014.3001.5501
通过 Python pip 安装
打开 CMD
命令窗口,执行以下命令即可安装。
pip install open-webui
安装完成后,执行以下命令即可运行。
open-webui serve
这将启动 Open WebUI 服务器,可以通过 http://localhost:8080 进行访问;首次启动后,需要注册一个管理账号;点击注册即可。
模型下载 - 两种方式
- 您应该至少有 8 GB 的 RAM 来运行 7B 模型,16 GB 的 RAM 来运行 13B 模型,32 GB 的 RAM 来运行 33B 模型。
- 您应该至少有 8 GB 的 RAM 来运行 7B 模型,16 GB 的 RAM 来运行 13B 模型,32 GB 的 RAM 来运行 33B 模型。
- 您应该至少有 8 GB 的 RAM 来运行 7B 模型,16 GB 的 RAM 来运行 13B 模型,32 GB 的 RAM 来运行 33B 模型。
5.1 直接使用 Ollama 下载
打开 Ollama 模型列表:https://ollama.com/search
在模型列表中,找到我们要下载的 Deep Seek -r1;
当然这里的模型都是可以下载的,比如千问,Gemma 2,Llama 3.3等,下载方法都是一样的。
这里我要安装的是 14B,选择好下载的模型后复制右边的安命令到 Cmd
中执行即可。
这里安装的时间取决于网速,耐心等待即可;安装完成后,我们再去 open webui 刷新一下就可以愉快的玩耍了。
5.2 使用 Open Webui 下载
打开 Open Webui 后,在模型搜索处输入需要下载的模型名称以及模型型号即可。
这里我的以千问的 2.5 7 B大模型为例,在搜索框输入需要下载的模型点击 从"Ollama.com" 拉取即可。
步骤 2:下载 DeepSeek R1 模型
在终端中运行以下命令,根据你的硬件选择合适的模型:
# 下载 1.5B 版本(适用于 CPU 及低配 GPU) ollama run deepseek-r1:1.5b # 下载 8B 版本 ollama run deepseek-r1:8b # 下载 14B 版本 ollama run deepseek-r1:14b # 下载 32B 版本 ollama run deepseek-r1:32b # 下载 70B 版本(最高性能) ollama run deepseek-r1:70b
如果你不确定选择哪个版本,可以运行默认指令:
ollama run deepseek-r1
默认情况下,该指令会下载 7B 版本。
模型下载速度取决于网络状况,可能需要几分钟到几十分钟不等。
步骤 3:安装 Chatbox(可选)
为了获得更好的交互体验,可以安装 Chatbox 作为 GUI 界面。
下载地址:https://chatboxai.app/en#
安装完成后,进行以下配置:
- 在“配置 API 模型”选项中选择 Ollama API。
- 设置 API 主机为:http://127.0.0.1:11434
- 选择 DeepSeek R1 作为默认模型。
- 保存设置。
五、功能演示
成功安装后,你可以测试 DeepSeek R1 的能力。例如,让它生成一个用 Python 编写的贪吃蛇游戏代码。
输入 Prompt:
帮我用python写个贪吃蛇的游戏
示例代码(优化修正版本):
import turtle import time import random # 窗口设置 window = turtle.Screen() window.title("贪吃蛇 by Python") window.bgcolor("black") window.setup(width=600, height=600) window.tracer(0) # 关闭自动刷新 # 蛇头 snake_head = turtle.Turtle() snake_head.speed(0) snake_head.shape("square") snake_head.color("white") snake_head.penup() snake_head.goto(0, 0) snake_head.direction = "stop" # 食物 food = turtle.Turtle() food.speed(0) food.shape("circle") food.color("red") food.penup() food.goto(0, 100) segments = [] # 蛇身体段 score = 0 # 得分 # 得分显示 pen = turtle.Turtle() pen.speed(0) pen.color("white") pen.penup() pen.hideturtle() pen.goto(0, 260) pen.write("得分: 0", align="center", font=("Arial", 24, "normal")) # 移动函数 def move(): if snake_head.direction == "up": y = snake_head.ycor() snake_head.sety(y + 20) if snake_head.direction == "down": y = snake_head.ycor() snake_head.sety(y - 20) if snake_head.direction == "left": x = snake_head.xcor() snake_head.setx(x - 20) if snake_head.direction == "right": x = snake_head.xcor() snake_head.setx(x + 20) # 方向控制函数 def go_up(): if snake_head.direction != "down": snake_head.direction = "up" def go_down(): if snake_head.direction != "up": snake_head.direction = "down" def go_left(): if snake_head.direction != "right": snake_head.direction = "left" def go_right(): if snake_head.direction != "left": snake_head.direction = "right" # 键盘绑定 window.listen() window.onkeypress(go_up, "w") window.onkeypress(go_down, "s") window.onkeypress(go_left, "a") window.onkeypress(go_right, "d") # 碰撞检测 def check_collision(): # 边界检测 if snake_head.xcor() > 290 or snake_head.xcor() < -290: return True if snake_head.ycor() > 290 or snake_head.ycor() < -290: return True # 身体碰撞检测 for segment in segments: if snake_head.distance(segment) < 20: return True return False # 主游戏循环 while True: window.update() # 检查是否吃到食物 if snake_head.distance(food) < 20: # 移动食物到随机位置 x = random.randint(-290, 290) y = random.randint(-290, 290) food.goto(x, y) # 增加身体段 new_segment = turtle.Turtle() new_segment.speed(0) new_segment.shape("square") new_segment.color("grey") new_segment.penup() segments.append(new_segment) # 增加得分 score += 10 pen.clear() pen.write(f"得分: {score}", align="center", font=("Arial", 24, "normal")) # 移动身体段(从后往前) for index in range(len(segments)-1, 0, -1): x = segments[index-1].xcor() y = segments[index-1].ycor() segments[index].goto(x, y) # 移动第一个身体段到头部位置 if len(segments) > 0: x = snake_head.xcor() y = snake_head.ycor() segments[0].goto(x, y) move() # 碰撞检测 if check_collision(): time.sleep(1) snake_head.goto(0, 0) snake_head.direction = "stop" # 隐藏身体段 for segment in segments: segment.goto(1000, 1000) segments.clear() score = 0 pen.clear() pen.write(f"得分: {score}", align="center", font=("Arial", 24, "normal")) time.sleep(0.1)
运行这个程序前需要确保:
- 已安装 Python 环境
- 需要安装 `turtle` 模块(通常 Python 标准库自带)
操作说明:
- W键:向上移动
- S键:向下移动
- A键:向左移动
- D键:向右移动
- 吃到红色食物会增长身体并加分
- 撞到墙壁或自己身体会游戏重置
游戏特点:
- 简单的图形界面
- 分数统计功能
- 碰撞检测
- 蛇身自动增长机制
- 游戏失败重置功能
你可以根据需求进一步添加以下功能:
- 添加开始/暂停按钮
- 增加难度等级
- 记录最高分
- 添加音效
- 设计更复杂的关卡
六、总结
通过本教程,你已经成功在本地部署了 DeepSeek R1,无论你是 AI 爱好者、开发者,还是仅仅对本地 AI 感兴趣,都可以尝试运行并训练自己的专属 AI 资料库。
借助 Ollama 和 Chatbox 等工具,本地运行 AI 变得更加简单和高效。现在就开始探索吧!