服务器Ubuntu22.04系统 使用dcocker部署安装ollama和搭配open_webui使用

news2024/11/24 8:39:00
服务器Ubuntu22.04系统 使用dcocker部署安装ollama和搭配open_webui使用

一、ubuntu和docker基本环境配置

1.更新包列表:
  • 打开终端,输入以下命令:
sudo apt-get update
sudo apt upgrade

更新时间较长,请耐心等待

2. 安装docker依赖
sudo apt-get install ca-certificates curl gnupg lsb-release
3. 添加docker密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4.添加阿里云docker软件源
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

如果是arm架构,命令换成下面这个,否则第5步会出错

sudo add-apt-repository "deb [arch=arm64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
5.安装docker
apt-get install docker-ce docker-ce-cli containerd.i
6.安装完成docker测试
docker -v

在这里插入图片描述

7. docker配置国内镜像源
  • 7.1 编辑配置文件
vi /etc/docker/daemon.json

按i进入编辑模式

加入以下内容:

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://docker.m.daocloud.io", 
    "https://ghcr.io",
    "https://mirror.baidubce.com",
    "https://docker.nju.edu.cn"
  ]
}

按ESC键退出编辑模式,接着输入:wq,保存并退出

  • 7.2 重新加载docker
sudo systemctl daemon-reload
  • 7.3 重启docker
sudo systemctl restart docker
2. 安装英伟达显卡驱动
2.1 使用wget在命令行下载驱动包

注意,这里是要根据自己的机器选择驱动版本进行安装,这里是选择的是aarch64架构的550.90.07驱动,其他的可以去英伟达官网自己找。官方高级驱动搜索 。注意,选择cuda的时候,要选择你要安装的版本(我这里是选择最新的12.4,除了12.4,还可以兼容12.4以下的。)

https://cn.download.nvidia.com/tesla/550.90.07/NVIDIA-Linux-aarch64-550.90.07.run
2.2 更新软件列表和安装必要软件、依赖
sudo apt-get update
sudo apt-get install g++
sudo apt-get install gcc
sudo apt-get install make
2.2 卸载原有驱动(如果执行nvidia-smi报错可以不用执行这一步)
sudo apt-get remove --purge nvidia* 

使用vim修改配置文件

sudo vim /etc/modprobe.d/blacklist.conf

按i键进入编辑模式,在文件尾增加两行:

blacklist nouveau
options nouveau modeset=0

按esc键退出编辑模式,输入:wq保存并退出
更新文件

sudo update-initramfs –u

重启电脑:

sudo reboot
2.3 安装驱动

授予执行权限(记得将文件名换成自己的驱动文件)

sudo chmod 777 NVIDIA-Linux-aarch64-550.90.07.run

执行安装命令

sudo ./NVIDIA-Linux-aarch64-550.90.07

检测显卡驱动是否安装成功

nvidia-smi

出现以下界面则证明驱动安装成功(注意,Processes是我在执行的进程,如果你是新安装的,应该是空白的。)

在这里插入图片描述

2.4 安装CUDA

注意:这里选择安装的版本一定要等于或者低于你执行nvidia-smi命令后显示的CUDA Version那个版本,比如我是显示12.4,则我可以安装12.4或者是之前的版本。驱动与CUDA版本对应关系,可以看官网这里介绍,驱动版本与CUDA版本的对应表

wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run

输出accept开始安装
在这里插入图片描述
注意这里要按enter取消勾选第一个选项,因为之前已经安装了驱动
在这里插入图片描述
然后选择Install开始安装

sudo sh cuda_12.4.0_550.54.14_linux.run
2.5 环境变量配置

以vim方式打开配置文件

sudo vim ~/.bashrc

在文件尾中加入以下两行:

export PATH="/usr/local/cuda-12.4/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH"

更新环境变量

source ~/.bashrc

检测CUDA是否安装成功

nvcc -V

出现下面的信息则证明CUDA安装成功

在这里插入图片描述

3. 安装conda
3.1 软件下载
wget -c https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
bash Anaconda3-2023.03-1-Linux-x86_64.sh
3.2 设置环境变量
vim /etc/profile

在末尾添加环境变量

export PATH="~/anaconda3/bin:$PATH"
vim ~/.bashrc
export PATH="~/anaconda3/bin:$PATH"

刷新环境变量

source /etc/profile
source ~/.bashrc

然后conda -V要是正常就安装成功了

conda -V
3.3 conda配置

配置清华镜像源
代码如下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

设置搜索时显示通道地址

conda config --set show_channel_urls yes

配置pip 镜像源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

三、使用docker安装ollama

1. 使用docker拉取ollama镜像
docker pull ollama/ollama:latest

国内镜像

docker pull dhub.kubesre.xyz/ollama/ollama:latest
2.使用docker运行以下命令来启动 Ollama 容器
docker run -d --gpus=all --restart=always -v /home/docker/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

使ollama保持模型加载在内存(显存)中

  • 参考文章
    ollama如何保持模型加载在内存(显存)中或立即卸载
  • 执行以下命令:
docker run -d --gpus=all -e OLLAMA_KEEP_ALIVE=-1 --restart=always -v /home/docker/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
  • 错误信息

    如果在启动容器的时候,提示:Error response from daemon: could not select device driver “” with capabilities: [[gpu]]

    这是由于没有配置好docker运行环境导致的,执行安装容器运行环境(Ubuntu为例),参考docker 报错:不能选择设备驱动 could not select device driver 的解决方法

# 确保显卡驱动已安装
nvidia-smi

# 创建包仓库和GPG key
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
       && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
       && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
             sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
             sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 更新包列表之后安装 nvidia-docker2 包(以及依赖)
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# 安装完毕重启容器
sudo systemctl restart docker
3.使用ollama下载模型
  • 这里示例下载阿里的通义千问
docker exec -it ollama ollama run qwen2
  • 运行效果如图:
    在这里插入图片描述

  • 模型库

模型参数数量大小下载方式
Llama 27B3.8GBdocker exec -it ollama ollama run llama2
Mistral7B4.1GBdocker exec -it ollama ollama run mistral
Dolphin Phi2.7B1.6GBdocker exec -it ollama ollama run dolphin-phi
Phi-22.7B1.7GBdocker exec -it ollama ollama run phi
Neural Chat7B4.1GBdocker exec -it ollama ollama run neural-chat
Starling7B4.1GBdocker exec -it ollama ollama run starling-lm
Code Llama7B3.8GBdocker exec -it ollama ollama run codellama
Llama 2 Uncensored7B3.8GBdocker exec -it ollama ollama run llama2-uncensored
Llama 213B7.3GBdocker exec -it ollama ollama run llama2:13b
Llama 270B39GBdocker exec -it ollama ollama run llama2:70b
Llama 3.18B4.7GBdocker exec -it ollama ollama run llama3.1:70
Orca Mini3B1.9GBdocker exec -it ollama ollama run orca-mini
Vicuna7B3.8GBdocker exec -it ollama ollama run vicuna
LLaVA7B4.5GBdocker exec -it ollama ollama run llava
Gemma2B1.4GBdocker exec -it ollama ollama run gemma:2b
Gemma7B4.8GBdocker exec -it ollama ollama run gemma:7b
4.使用ollama下载模型

下载微调版本的,可以看这篇文章,[HuggingFace + Ollama + Llama 3.1:轻松搞定Llama 3.1中文微调版本安装](
四、使用docker安装open-webui

1. docker部署ollama web ui

main版本

docker run -d -p 30131:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:main

cuda版本

docker run -d -p 30131:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.nju.edu.cn/open-webui/open-webui:cuda
  • 安装成功后,可以在另一台计算机进行访问,如下:
    在这里插入图片描述
2.注册账号
  • 默认第一个账号是管理员
    在这里插入图片描述
3.成功进入:

在这里插入图片描述

4. 聊天界面

在这里插入图片描述
在这里插入图片描述

参考来源:https://blog.csdn.net/weixin_62798503/article/details/140658151

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[MOCO] Momentum Contrast for Unsupervised Visual Representation Learning

1、目的 无监督表示学习在自然图像领域已经很成功,因为语言任务有离散的信号空间(words, sub-word units等),便于构建tokenized字典 现有的无监督视觉表示学习方法可以看作是构建动态字典,字典的“keys”则是从数据&am…

测评了几百款素材管理软件,新手设计师如何进行高效的素材管理?附教程

设计师朋友们,大家在日常工作中肯定积累了各种各样的素材,大家都保存在哪里呢?是散落在电脑磁盘里,还是用一个专门的素材管家管理呢?作为新手设计师,目前是在使用一款经典好用的素材管理软件—Eagle&#x…

Java学习_17_集合综合练习(待更新)

文章目录 前言一、自动点名器二、斗地主小游戏1、准备牌2、洗牌3、发牌4、理牌 总结 前言 博客仅记录个人学习进度和一些查缺补漏。 学习内容:BV17F411T7Ao 部分内容因没有学到,等待后续更新 一、自动点名器 /**** 点名器1,N个学生随机点名…

Edge-TTS:微软推出的,免费、开源、支持多种中文语音语色的AI工具[工具版]

Edge-TTS,由微软推出的这款免费、开源的AI工具,为用户带来了丰富多样的中文语音体验。它不仅支持多种中文语音语色,还能实现流畅自然的语音合成。Edge-TTS凭借其高度可定制化的特点,广泛应用于智能助手、语音播报、教育培训等领域…

商业软件许可证介绍|简单原理探究

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 引入话题 既然是商业软件,涉及到商业,那目的就是赚钱。 就拿IDEA举例&#x…

Linux系统中的常见操作命令

目录 命令总结: 一、目录处理命令 二、文件处理命令 三、权限管理命令 四、其它实用命令 命令总结: (目录) ls [参数] 目录、(查看目录)pwd、(切换目录)cd [目录路径]、&…

4.1栈和队列基本概念+经典OJ题

本篇博客来梳理栈和队列基本概念以及一道经典OJ题,题目已插入超链接,点击即可跳转~ 一、栈的相关概念 1.栈 一种特殊的线性表,只允许在固定的一端插入和删除元素,栈中的数据遵循后进先出原则 (1&#x…

Pytorch添加自定义算子之(12)-开闭原则设计tensorrt和onnxruntime推理语义分割模型

一、开闭原则 开闭原则是SOLID原则中的一个,指的是尽量使用开放扩展,关闭修改的设计原则。 在C++中如何使用开闭原则导出动态库,可以按照以下步骤进行: 定义抽象基类:定义动态库中的抽象基类,该基类应该封装可扩展的接口。 实现派生类:实现基类的派生类,这些派生类将封…

Vue 导航条+滑块效果

目录 前言代码效果展示导航实现代码导航实现代码导航应用代码前言 总结一个最近开发的需求。设计稿里面有一个置顶的导航条,要求在激活的项目下面展示个下划线。我最先开始尝试的是使用 after 的伪类选择器,直接效果一样,但是展示的时候就会闪现变化,感觉不够自然,参考了一…

继承(下)【C++】

文章目录 子类继承父类之后,子类的默认成员函数的变化构造函数编译器自动生成的构造函数程序员手动写的构造函数 拷贝构造编译器自动生成的拷贝构造函数程序员手动写的拷贝构造函数 赋值重载编译器自动生成的赋值重载程序员手动写的赋值重载 析构函数 继承与友元菱形…

vm安装mac虚拟机

vm安装mac虚拟机 简介实操 简介 教程:完全面向萌新的黑苹果安装教学:黑苹果安装从入门到入白,借助VMware虚拟机给实体机硬盘按照macOS黑苹果系统 实操 下载unlocker,之后运行vm就可以新建mac虚拟机了 新建一个没有选择镜像的…

【Electron】桌面应用开发快速入门到打包Windows应用程序

electron 实现桌面应用开发快速入门到打包Windows应用程序 一、基本介绍 ‌‌Electron 是一个使用‌ JavaScript、‌HTML 和‌ CSS 构建桌面应用程序的框架。它通过将‌Chromium和‌Node.js嵌入到其二进制文件中,允许开发者使用JavaScript代码库创建跨平台的桌面应…

汽车冷却液温度传感器

1、冷却液温度传感器的功能 发动机冷却液温度传感器,也称为ECT,是帮助保护发动机,提高发动机工作效率以及帮助发动机稳定运行的非常重要的传感器之一。 发动机冷却液温度 (ECT) 传感器用于测量发动机的冷却液温度&…

IO进程线程 0822作业

作业 使用write和read完成文件的拷贝。 将1.txt文件内容拷贝到2.txt中 #include <myhead.h> int main(int argc, const char *argv[]) {if(argc ! 3){printf("外部传参错误\n");return -1;}int fd1;fd1 open(argv[1],O_RDONLY);if(fd1 -1){perror("op…

Java基础——自学习使用(static关键字)

一、static关键字是什么&#xff1f; static修饰的代码属于类&#xff0c;定义的变量存储在方法区的静态常量池当中 二、static可以修饰什么 1.static修饰变量 static修饰的变量叫做类变量&#xff0c;被所有该类产生的对象所共享&#xff0c;存储在方法区的静态常量池中 2…

Java巅峰之路---进阶篇---面向对象(二)

Java巅峰之路---进阶篇---面向对象&#xff08;二&#xff09; 多态介绍多态调用成员的特点多态的优势、弊端以及解决方案综合练习 包和final包的介绍使用其他类的规则&#xff08;导包&#xff09;final关键字final的用途常量 权限修饰符和代码块权限修饰符的介绍四个权限修饰…

给跨行或同行转岗产品经理的几点建议

转岗不但要勇气还需要方法。现在&#xff0c;从其他职位转岗成为产品经理并不罕见。交互设计师&#xff0c;UI设计师&#xff0c;测试&#xff0c;开发&#xff0c;运营和用户研究都有大量转岗到产品经理的事例&#xff0c;甚至还有客户服务&#xff0c;销售转岗产品的。 一方面…

关于智能编码助手【通义灵码】,开发者们这么说...

自通义灵码发布以来&#xff0c;不停地有开发者朋友为我们送上通义灵码的测评反馈。 关于通义灵码&#xff0c;开发者这样说 墨问西东 CEO 池建强&墨问研发团队 “通义灵码有一个强大的功能就是企业知识库检索增强&#xff0c;我们只需要上传团队的代码规范&#xff0c;…

TS之 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }

1、Vue3 结合 TS 获取 HTMLElement 时报“未定义” 简单粗暴的处理就是在后面加一个【 ! 】感叹号&#xff0c;告诉 TS 引擎此元素存在&#xff0c;有点类似于 as xxx 的意思&#xff01; 2、使用声明的可选属性时&#xff0c;报“未定义” 使用 TS 我们经常会声明一些泛型&a…

AI学习记录 - 如何快速构造一个简单的token词汇表

创作不易&#xff0c;有用的话点个赞 先直接贴代码&#xff0c;我们再慢慢分析&#xff0c;代码来自openai的图像分类模型的一小段 def bytes_to_unicode():"""Returns list of utf-8 byte and a corresponding list of unicode strings.The reversible bpe c…