DeepSeek R1最全本地部署教程 适用于Mac/Windows/Linux平台

51cto   发布时间:2025-02-07 11:10:52   作者:IT运维技术圈   我要评论
本篇文章将以部署国产最新崛起的 AI 大模型 DeepSeek R1 为例,手把手教你如何利用 Ollama 在本地环境中快速搭建和运行这些先进的 AI 模型

模型下载 - 两种方式

  • 您应该至少有 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 变得更加简单和高效。现在就开始探索吧!

相关文章

最新评论