当前位置: 首页 > article >正文

【Docker】ollama部署deepseek

        随着deepseek的大火,dp模型的开源导致越来越多的人投身AI,并进行本地化部署。事实上,之前我在学习docker时,曾尝试过基于docker部署本地化模型,利用ollama部署的阿里云模型qwen2:0.5b。具体部署过程可以参考我csdn上的博文:

玩转Docker:Lsky pro图床+私有化部署大模型(Ollama+Openwebui)

所以,根据以往的经验,如今来尝试deepseek模型的部署,应该也算不上什么难事。deepseek-r1的模型类型及部署要求如下:

        R1满血版不敢想,但是太低的也不想考虑,起码部署个中等的吧,所以我首先考虑的是14b和32b。当然,这里的部署并不是说就是拿来用,主要是想体验下部署的过程,更多的是学习和了解。因此最近一直在留意有没有高内存的测试服务器。但是大多数都是8g以下的一个月几百上千。我只是想学习学习~不是真的要买啊。就没有免费试用或者便宜点的吗?

终于,机缘巧合下出现了契机。一元/天试用尝鲜版:

image.png

一天就一天吧,都这个配置了,要啥自行车啊。开搞!

1.安装docker及ollama

docker安装不用说了,主要就是基于docker安装ollama。

###docker下载ollama部署
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama --restart always ollama/ollama
 
##使用docker部署webUi页面,${inner_ip}替换为你的本地ip
docker run -d -p 3000:8080 -e 
OLLAMA_BASE_URL=http://${inner_ip}:11434 -v open-webui:/app/backend/data --name 
open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:main

在下载ollama可能会出现找不到镜像的情况,所以这里需要设置apt镜像,进入daemon.json文件配置镜像源,没有就创建。

vi /etc/docker/daemon.json

然后使用 systemctl restart docker命令重启Docker即可。然后使用docker info命令查看镜像仓库信息,如果出现你所配置的源地址,就说明成功了。

{
  "registry-mirrors": [
    "https://2cc2e98fbd5b4ca482a3faf3884425e2.mirror.swr.myhuaweicloud.com",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu"
  ]
}

2.进入容器安装模型

        在安装ollama之后就可以通过 http:your_ip:3000 进行访问了。但是这个时候还没有模型。所以需要给ollama安装你想要的模型

终端输入:docker exec -it  <container-id> /bin/bash     

container-id为ollama容器id,进入到容器内。后面可输入以下命令进行对应操作:

###    安装模型
ollama pull qwen2:0.5b
 
###    启动模型
ollama run qwen2:0.5b
 
###    列出所有安装的模型
ollama list
 
###    移除模型,NAME模型名称
ollama rm <NAME>

因为这里我们是想利用ollama来部署deepseek。所以可选模型就是:deepseek-r1:32b  deepseek-r1:14b   deepseek-r1:8b 等等  

3.模型下载|中断|网速慢|问题解决

在下载模型过程中,会发现一个有意思的事,刚开始会比较快,后面随着时间的流逝下载速度会越来愈慢。

我刚开始是选择ollama push deepseek-r1:32b ,眼睁睁的看着它从开始的下载完要3小时到8小时。我放弃了...

然后是  ollama push deepseek-r1:14b 2小时到4小时,果断放弃

最后是  ollama push deepseek-r1:8b  2小时左右波动

后面经过查询,发现一个有意思的解决办法。

  1. 通过Ctrl+C组合键中断下载之后,再次运行ollama run命令,发现刚开始速度快,后面慢下来了。
  2. 重复使用该操作,实现模型高速下载,通过脚本自动循环实现该操作。

于是,有意思的事情开始了~~

1739780342701688.png

linux循环下载脚本bash(亲测):

#!/bin/bash
 
while true; do
    # 检查模型是否已下载完成
    modelExists=$(ollama list | grep "deepseek-r1:8b")
 
    if [ -n "$modelExists" ]; then
        echo "模型已下载完成!"
        break
    fi
 
    # 启动ollama进程并记录
    echo "开始下载模型..."
    ollama run deepseek-r1:8b &  # 在后台启动进程
    processId=$!  # 获取最近启动的后台进程的PID
 
    # 等待60秒
    sleep 60
 
    # 尝试终止进程
    if kill -0 $processId 2>/dev/null; then
        kill -9 $processId  # 强制终止进程
        echo "已中断本次下载,准备重新尝试..."
    else
        echo "进程已结束,无需中断"
    fi
done

window循环下载脚本(未尝试,自测):

# 引入 Windows Forms 命名空间
Add-Type -AssemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms
# 弹出输入框,获取用户输入的模型名称
$modelName = [Microsoft.VisualBasic.Interaction]::InputBox(
"请输入要下载的模型名称(例如:deepseek-r1:32b):",
"模型名称输入",
"deepseek-r1:32b" # 默认值
)
if ([string]::IsNullOrWhiteSpace($modelName)) {
Write-Host "未输入有效的模型名称,脚本已退出。"
exit
}
while ($true) {
# 检查模型是否已下载完成
$modelExists = ollama list | Select-String $modelName
if ($modelExists) {
Write-Host "模型已下载完成!"
break
}
# 启动ollama进程并记录
Write-Host "开始下载模型..."
$process = Start-Process -FilePath "ollama" -ArgumentList "run", $modelName -PassThru -NoNewWindow
# 等待60秒
Start-Sleep -Seconds 60
# 尝试终止进程
try {
Stop-Process -Id $process.Id -Force -ErrorAction Stop
Write-Host "已中断本次下载,准备重新尝试..."
}
catch {
Write-Host "进程已结束,无需中断。"
}
}

        有点不当人,但出乎意料的好用。8b的在运行时发现cpu都快拉满了,看来还是我想简单了。14b及以上的应该需要更高的配置才行。不过最后也是成功的运行出来了。效果如下:

image.png

4.初识LM Studio

        本地运行大语言模型框架除了ollama之外,还有LM Studio。从LM Studio的官方来看,都是支持window及linux环境下的部署,可以直接通过下载对应模型文件进行可视化本地部署。本来也是想尝试的,但是考虑到一天尝鲜版时间来不及,第二个就是通过linux线上部署的话,下载deepseek模型貌似需要"魔法"。所以暂时不考虑了。

        当然,我只是说暂时不考虑。没准哪天心血来潮呢!


http://www.kler.cn/a/551257.html

相关文章:

  • HDFS是如何存储和管理大数据
  • 移动通信发展史
  • 【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调【完整教程】
  • mysql多主集群 galera cluster for mysql 8安装配置启动重启集群
  • 动手实现自己的 JVM——Go!(ch03)
  • 烧烤炉出口亚马逊欧盟站CE认证EN1860安全标准
  • Golang的并发编程案例详解
  • LeetCode1287
  • 【SpringBoot苍穹外卖】debugDay04
  • TikTok 多账号管理与自动化运营:矩阵系统功能全解析
  • 国产编辑器EverEdit - 括号匹配检查
  • Unity DeepSeek API 聊天接入教程(0基础教学)
  • 国产编辑器EverEdit - “切换文件类型”的使用场景
  • 使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(数据分析篇)
  • PiscTrace:让计算机视觉变得简单而高效
  • Oracle视图(基本使用)
  • 解决 `pip install open-webui` 时的编译错误:Microsoft Visual C++ 14.0 或更高版本缺失
  • PHP关键字入门指南:分类与功能全解析
  • Linux /dev/null
  • Java 并发编程知识点