DeepSeek 是由中国杭州深度求索公司开发的智能 AI 助手,一个基于人工智能技术构建的假造助手,旨在通过天然语言处置惩罚和机器学习算法来理解并回应用户的题目与请求。它可以提供多种服务,包括但不限于信息检索、数据分析、语言翻译、知识问答以及一样平常生活的辅助建议等。
其实,早在春节期间就相识和学习过 DeepSeek,由于当时在极短的时间内就引起了国内外的广泛关注,根据官方的说法,它的综合性能可以与 ChatGPT 等熟知的 AI 大模子媲美,甚至在某些方面更加优秀,而且还是开源免费。后来,随着访问的人越来越多,以及可能受国外的某些因素影响,导致网页访问经常出现服务器繁忙,因此大家开始在本地部署 DeepSeek 大模子。所以,当时我也尝试在本地部署过,但是后来由于一些原因搁置了,本来不打算写出来发布的,现在想想既然都做了,不如就分享出来和大家讨论讨论。
准备必要运行 DeepSeek 的假造机操作系统,我这边使用基于 Ubuntu 系统,版本 23.10。
假造机的内存和硬盘分区设置,如果想运行比较大的 DeepSeek 参数模子,必要设置大一些。
假造机的 CPU 设置,由于没有 GPU,所以 DeepSeek 所有的盘算过程必要靠纯 CPU 来处置惩罚。
DeepSeek 支持多种运行方式,我这里使用到 Ollama,这是一款用于启动和运行大语言模子的开源工具,支持多种操作系统范例安装。其他不多作介绍,这个有点雷同于 Docker,DeepSeek 模子就是运行在上面的容器。
如果直接使用上图中的脚本安装,可能会遇到网络题目无法进行,众所周知的原因,所以下面就采用别的一种方式,使用离线安装包手动安装。你可以访问“https://gh.llkk.cc”代理下载安装包,或者使用以下下令直接在服务器上下载。- curl -O https://gh.llkk.cc/https://github.com/ollama/ollama/releases/download/v0.5.8/ollama-linux-amd64.tgz
复制代码 下载或上传安装包到服务器后,使用 tar 下令将安装包解压到 /usr 目次,然后运行 ollama serve 启动 Ollama。默认情况下,Ollama 服务侦听端口为 11434,如果必要从外部访问服务,则必要从防火墙放开该端口。- sudo tar -C /usr -xzf ollama-linux-amd64.tgz
复制代码
重新打开一个终端窗口,使用 ollama -v 下令验证 Ollama 版本。运行以下下令,为 Ollama 创建用户和组,创建自启动服务文件,最后启动 Ollama 服务。- sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
- sudo usermod -a -G ollama $(whoami)
- vim /etc/systemd/system/ollama.service
- //添加以下内容:
- [Unit]
- Description=Ollama Service
- After=network-online.target
- [Service]
- ExecStart=/usr/bin/ollama serve
- User=ollama
- Group=ollama
- Restart=always
- RestartSec=3
- Environment="PATH=$PATH"
- [Install]
- WantedBy=default.target
- sudo systemctl daemon-reload
- sudo systemctl enable ollama
- sudo systemctl start ollama
- sudo systemctl status ollama
复制代码
安装 Ollama 工具后,使用 ollama -h 可以查察下令帮助。
访问 Ollama 模子仓库,找到并点击 DeepSeek-R1 模子,这里列出有关 DeepSeek-R1 所有模子的介绍以及使用方法。最低是 1.5b 参数模子,最高是 671b 参数模子,b 是 billion,表示 10 亿,1.5b 就代表 15 亿参数模子。越低代表参数越少,所需资源就越少,智能水平相对也就越低,越高代表参数越多,所需资源就越多,智能水平相对也就越高。

直接运行以下下令,默认是下载 DeepSeek-R1 7b 模子,Ollama 会将模子拉取到本地仓库,然后直接运行该模子。在消息对话框中,我向它打个招呼,然后问问它叫什么,它会给出简单的回答。
在消息对话框中,运行 /?或 /help 可以查察帮助,运行 /set 下令可以对模子设置一些参数,运行 """ 可以输入多行进行提问。

运行 /show info 下令查察当前模子的详细信息。

可以安装使用 htop 工具相识系统的负载情况,DeepSeek-R1 7b 模子加载所斲丧的系统内存为 6G 左右。

实际上,7b 参数的 DeepSeek-R1 模子根本不能用。根据官方的说法,DeeSeek-R1 模子在综合性能上(数学、代码和推理等方面)可以和 OpenAI-o1 相媲美,DeeSeek-R1 32b 参数模子优于 OpenAI-o1-mini,所以下面看看运行 32b 参数模子的效果。

可能大家通过 Ollama 运行 AI 模子,在下载模子的时候,会遇到开始下载速度比较快,但是过一会儿后,下载速度却变得越来越慢,你必须使用 Ctrl + C 强制克制,然后再重新运行下令,速度才会升起来,如下图所示。

对于此题目,我让 DeepSeek 写了一个自动化脚本,只必要在脚本中定义你要拉取的模子名字,当运行脚本后,它会自动检测下载的速度,一旦低于设置的阈值(比如 10 MB/s),则会克制下载并重新执行使命。- #!/bin/bash
- # 定义需要拉取的模型
- IMAGE="your-model-name"
- # 拉取的命令
- COMMAND="ollama pull $IMAGE"
- # 设定最低速度阈值 (10MB/s),单位 KB/s
- THRESHOLD=10240
- # 执行拉取并获取初始时间
- start_time=$(date +%s)
- # 执行拉取命令
- $COMMAND &
- # 记录拉取任务的进程ID
- PULL_PID=$!
- # 等待 1 分钟(60 秒),确保有足够的时间进行初始下载
- echo "等待 1 分钟开始判断下载速度..."
- sleep 60
- # 记录开始时间后,监控下载速度
- while true; do
- # 从命令输出文件 pull_output.log 中获取下载速度信息
- speed=$(grep -oP '\d+\sKB/s|\d+\sMB/s' pull_output.log | tail -n 1)
- # 如果没有获取到速度信息,跳过
- if [ -z "$speed" ]; then
- echo "无法获取下载速度,等待下次检查..."
- sleep 60
- continue
- fi
- # 打印获取到的速度信息(调试)
- echo "检测到下载速度:$speed"
- # 提取速度的数值和单位
- speed_value=$(echo $speed | awk '{print $1}')
- speed_unit=$(echo $speed | awk '{print $2}')
- # 将单位转换为统一的单位 KB/s
- if [[ "$speed_unit" == "MB/s" ]]; then
- speed_value=$(echo "$speed_value * 1024" | bc)
- fi
- # 打印转换后的速度(调试)
- echo "转换后的下载速度:$speed_value KB/s"
- # 如果速度低于设定的阈值,重新执行任务
- if (( speed_value < THRESHOLD )); then
- echo "下载速度低于阈值(${speed_value}KB/s),正在重新拉取任务..."
- # 终止当前拉取任务
- kill $PULL_PID
- # 重新开始拉取
- $COMMAND &
- # 获取新的进程ID
- PULL_PID=$!
- # 重新开始计时
- start_time=$(date +%s)
- fi
- # 休眠 1 分钟(60 秒),然后继续监控
- sleep 60
- done
复制代码 将以上脚本内容粘贴到脚本文件内(比如 auto_pull_model.sh),赋予执行权限并运行脚本,最终的执行效果如下所示。使用 ollama list 列出本地仓库中所有的模子,确保已成功下载,使用以下下令运行 DeepSeek-R1 32b 模子,添加 --verbose 参数可以在每次回答后都表现详细处置惩罚信息,比如相识生成 token 的速度,固然也可以在对话框中开启该参数。- ollama run deepseek-r1:32b --verbose
复制代码
运行 32b 参数模子后,使用 htop 工具查察模子所占用的系统资源情况。
向它打个招呼并让它介绍一下本身,根据复兴可以发现这个模子的思考过程更加全面,差不多每秒 3 个 token。
当我发送题目给它时,它会先进行深度思考,这个盘算过程会将系统的 CPU 全部拉慢,然后思考完复兴时,CPU 会降到 80% 左右。
我让它描写一篇春天的文章,要求字数500,含有花、草、树木、小动物。
以下是它的复兴:
春天,是一年中最富有生机与渴望的季节。当最后一丝寒意退去,大地仿佛被按下了一键启动,开始了一场生命的大狂欢。
清晨,阳光温柔地洒在大地上,万物都笼罩在这金色的薄纱中。远处的山坡上,迎春花已经迫不及待地绽放了,金黄的小花朵像一个个小铃铛,在微风中轻轻摇晃,仿佛在欢快地歌唱。不远处的桃树也开了,粉嫩的花瓣像是少女的面颊,羞涩而温柔。樱花不甘示弱,纷纷扬扬地洒落着粉色的花雨,空气中弥漫着淡淡的花香。
草地上,嫩绿的小草顽强地从土里钻出来,为大地铺上了一层极新的地毯。蒲公英的种子随风飘散,在阳光下像一群tiny的伞兵,轻盈地起舞。偶然有几只小兔子从草丛中窜出,它们的耳朵竖得笔直,警惕地四处张望,随后又蹦蹦跳跳地钻进了另一片草丛。
树木也不甘寂寥,纷纷抽出了新芽。柳树最先换上了嫩绿的新装,柔软的枝条在东风中轻轻摇曳,像是在向路人招手。梧桐树也不甘落后,在枝头挂满了淡紫色的花序,远远望去,仿佛是一串串风雅的风铃。
小动物们也纷纷出动了。蜜蜂忙着在花间采蜜,翅膀发出“嗡嗡”的声音,不时停在花朵上,沾满花粉的身体显得格外忙碌。蝴蝶也不甘寂寥,在花丛中翩翩起舞,红的、黄的、蓝的,像是给春天增添了一道流动的彩虹。
鸟儿们更是活跃。麻雀在枝头跳跃,叽叽喳喳地唱着欢快的歌谣;燕子从南方飞回,在空中划出优美的弧线,不时俯冲下来啄食昆虫;画眉鸟也不甘示弱,在树林中梳理羽毛,准备迎接春天的到来。
春天不仅是一个季节,更是一种心情。它带来了渴望、生机与活力,让我们感受到了大天然的鬼斧神工和生命的奥妙。走在如许的春日里,仿佛每一处风景都在向我们诉说着生命的故事,让人不由得停下脚步,静静地感受这份优美。
我让它用 Python 写一个简单的贪吃蛇游戏。

以下是它的复兴(我没有验证,接待有朋友验证后告诉我精确性):- 以下是一个用 Python 编写的简单贪吃蛇小游戏的代码示例。我们将使用 `pygame` 库来实现这个游戏。
- ### 代码:
- ```python
- import pygame
- import random
- import time
- # 初始化 Pygame
- pygame.init()
- # 设置窗口大小
- width = 800
- height = 600
- window = pygame.display.set_mode((width, height))
- pygame.display.set_caption("贪吃蛇游戏")
- # 定义颜色
- BLACK = (0, 0, 0)
- WHITE = (255, 255, 255)
- RED = (255, 0, 0)
- GREEN = (0, 255, 0)
- # 蛇的大小和速度
- snake_block = 20
- snake_speed = 15
- # 初始化字体
- font = pygame.font.SysFont(None, 50)
- def our_snake(snake_block, snake_list):
- for x in snake_list:
- pygame.draw.rect(window, GREEN, [x[0], x[1], snake_block, snake_block])
- def message(msg, color):
- mesg = font.render(msg, True, color)
- window.blit(mesg, [width/6, height/3])
- def gameLoop():
- game_over = False
- game_close = False
- x1 = width / 2
- y1 = height / 2
- x1_change = 0
- y1_change = 0
- snake_List = []
- Length_of_snake = 1
- foodx = round(random.randrange(0, width - snake_block) / snake_block) * snake_block
- foody = round(random.randrange(0, height - snake_block) / snake_block) * snake_block
- clock = pygame.time.Clock()
- while not game_over:
- while game_close:
- window.fill(BLACK)
- message("你输了!按 Q 退出或 C 重新开始", RED)
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_q:
- game_over = True
- game_close = False
- if event.key == pygame.K_c:
- gameLoop()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- game_over = True
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_LEFT:
- x1_change = -snake_block
- y1_change = 0
- elif event.key == pygame.K_RIGHT:
- x1_change = snake_block
- y1_change = 0
- elif event.key == pygame.K_UP:
- y1_change = -snake_block
- x1_change = 0
- elif event.key == pygame.K_DOWN:
- y1_change = snake_block
- x1_change = 0
- if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
- game_close = True
- x1 += x1_change
- y1 += y1_change
- window.fill(BLACK)
- pygame.draw.rect(window, RED, [foodx, foody, snake_block, snake_block])
-
- snake_Head = []
- snake_Head.append(x1)
- snake_Head.append(y1)
- snake_List.append(snake_Head)
-
- if len(snake_List) > Length_of_snake:
- del snake_List[0]
- for x in snake_List[:-1]:
- if x == snake_Head:
- game_close = True
- our_snake(snake_block, snake_List)
- pygame.display.update()
- if x1 == foodx and y1 == foody:
- foodx = round(random.randrange(0, width - snake_block) / snake_block) * snake_block
- foody = round(random.randrange(0, height - snake_block) / snake_block) * snake_block
- Length_of_snake += 1
- clock.tick(snake_speed)
- pygame.quit()
- quit()
- # 运行游戏循环
- gameLoop()
- ```
- ### 说明:
- 1. **初始化**:首先导入所需的库并初始化 Pygame。
- 2. **窗口设置**:设置游戏窗口的大小和标题。
- 3. **颜色定义**:定义游戏中的几种基本颜色(黑色、白色、红色、绿色)。
- 4. **蛇的属性**:定义蛇的大小和移动速度。
- 5. **绘制函数**:
- - `our_snake`:用于在屏幕上绘制蛇的身体。
- - `message`:用于显示游戏消息。
- 6. **游戏循环**:
- - 处理游戏结束和重新开始的情况。
- - 获取键盘输入,控制蛇的方向。
- - 检测边界碰撞。
- - 更新蛇的位置并重新绘制屏幕。
- - 检测蛇是否吃到食物,并增加长度。
- 7. **运行游戏**:调用 `gameLoop` 函数开始游戏。
- ### 如何运行:
- 1. 确保你已经安装了 Pygame 库。如果没有安装,可以使用以下命令进行安装:
- ```bash
- pip install pygame
- ```
- 2. 将上述代码保存为一个 Python 文件(例如:`snake_game.py`)。
- 3. 在终端中运行该文件:
- ```bash
- python snake_game.py
- ```
- ### 控制方式:
- - 使用方向键控制蛇的移动。
- - 按下 `Q` 键退出游戏。
- - 按下 `C` 键重新开始游戏。
- 希望你喜欢这个简单的贪吃蛇小游戏!如果需要调整速度或增加难度,可以修改 `snake_speed` 的值。
复制代码 然后,我又转变话题,问它有关《三体》的题目。从这里回答来看,效果不尽人意......,可能它比较适合数学或代码类题目,像知识类则必要更大的参数目或者联网才行。

运行 ollama ps 下令可以查察正在运行的 AI 模子,能够看到该模子完全由 CPU 进行盘算处置惩罚。

默认情况下,使用 Ollama 运行模子,模子加载生成响应后只会在内存中保留 5 分钟,然后就会释放掉,如许的话如果重新发起提问,就会再次等待模子加载,如果渴望保持长时间的加载,可以添加 --keepalive 参数。

究竟上,32b 参数目也就勉强够用,要想使用更智慧的 DeepSeek,你必要运行完整版的 DeepSeek-R1 671b 参数模子。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |