ubuntu 22.04 部署 ollama + deepseek + open webui

1. 环境:以下 kvm 虚拟机

系统CPU内存GPU
Ubuntu 22.0464 core512GBv100 * 3

2. 安装 V100 驱动

apt update aptinstall-y software-properties-common 
驱动包资源
add-apt-repository ppa:graphics-drivers/ppa -yaptinstall ubuntu-drivers-common 
查看可以安装的版本
ubuntu-drivers devices 
删除已经安装的驱动
apt-get remove --purge'^nvidia-.*'
自动安装最新版本
ubuntu-drivers install
或安装指定版本
aptinstall nvidia-driver-565 
重启
reboot
查看 GPU 信息
nvidia-smi Wed Feb 12 09:39:33 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 565.57.01 Driver Version: 565.57.01 CUDA Version: 12.7||-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |||| MIG M. ||=========================================+========================+======================||0 Tesla V100-PCIE-16GB-LS On | 00000000:00:07.0 Off |0|| N/A 36C P0 24W / 250W | 4MiB / 16384MiB |0% Default |||| N/A | +-----------------------------------------+------------------------+----------------------+ |1 Tesla V100-PCIE-16GB-LS On | 00000000:00:08.0 Off |0|| N/A 38C P0 24W / 250W | 4MiB / 16384MiB |0% Default |||| N/A | +-----------------------------------------+------------------------+----------------------+ |2 Tesla V100-PCIE-16GB-LS On | 00000000:00:09.0 Off |0|| N/A 36C P0 26W / 250W | 4MiB / 16384MiB |0% Default |||| N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=========================================================================================|| No running processes found | +-----------------------------------------------------------------------------------------+ 

3. 安装 CUDA

下载 CUDA 软件包源
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb 
加载资源包
dpkg -i cuda-keyring_1.1-1_all.deb 
查看 CUDA 版本
apt policy cuda-toolkit 
安装 CUDA
aptinstall cuda-toolkit 
配置 CUDA 环境变量
exportCUDA_HOME=/usr/local/cuda exportPATH=${CUDA_HOME}/bin:${PATH}exportLD_LIBRARY_PATH=${CUDA_HOME}/lib64:$LD_LIBRARY_PATH
查看 CUDA 信息
nvcc --version 

4. 安装 Ollama

安装命令
curl-fsSL https://ollama.com/install.sh |sh
安装完成后查看 Ollama 状态
service ollama status 

日志错误信息如下
Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.416+08:00 level=INFO source=routes.go:1238 msg="Listening on 127.0.0.1:11434 (version 0.5.7)" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.417+08:00 level=INFO source=common.go:131 msg="GPU runner incompatible with host system, CPU does not have AVX" runner=cuda_v11_avx Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.417+08:00 level=INFO source=common.go:131 msg="GPU runner incompatible with host system, CPU does not have AVX" runner=cuda_v12_avx Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.417+08:00 level=INFO source=routes.go:1267 msg="Dynamic LLM libraries" runners="[cpu_avx2 rocm_avx cpu cpu_avx]" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.417+08:00 level=INFO source=gpu.go:226 msg="looking for compatible GPUs" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.550+08:00 level=INFO source=gpu.go:283 msg="error looking up nvidia GPU memory" error="cuda driver library failed to get device context 801" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.553+08:00 level=INFO source=gpu.go:283 msg="error looking up nvidia GPU memory" error="cuda driver library failed to get device context 801" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.557+08:00 level=INFO source=gpu.go:283 msg="error looking up nvidia GPU memory" error="cuda driver library failed to get device context 801" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.558+08:00 level=INFO source=gpu.go:392 msg="no compatible GPUs were discovered" Feb 11 17:50:06 i-mvlzfacx ollama[6794]: time=2025-02-11T17:50:06.558+08:00 level=INFO source=types.go:131 msg="inference compute" id=0 library=cpu variant="no vector extensions" driver=0.0 total="503.7 GiB" available=> 

问题原因

GPU runner incompatible with host system, CPU does not have AVX 根据错误信息,虚拟机 VCPU 缺少 AVX 指令集,导致 GPU 不能使用。

查看 CPU 是否支持 AVX
lscpu |grep avx 

没有 AVX 信息。


5. 修改虚拟机 config.xml 配置

<cpu> 中添加如下内容:

<cpumode='custom'match='exact'check='full'><modelfallback='forbid'>Skylake-Server</model><topologysockets='4'cores='16'threads='1'/><featurepolicy='require'name='avx'/><featurepolicy='require'name='avx2'/><featurepolicy='require'name='hypervisor'/></cpu>

重新定义虚拟机,查看 AVX:

lscpu |grep avx 

查看输出:

Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat 

6. 再次查看 Ollama 已经正常

查看 Ollama 服务状态:

service ollama status 

输出状态:

ollama.service - Ollama Service Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2025-02-12 09:32:09 CST; 10min ago Main PID: 1529 (ollama) Tasks: 27 (limit: 618662) Memory: 8.1G CPU: 1min 21.889s CGroup: /system.slice/ollama.service └─1529 /usr/local/bin/ollama serve Feb 12 09:32:10 i-mvlzfacx ollama[1529]: [GIN-debug] HEAD /api/version --> github.com/ollama/ollama/server.(*Server).GenerateRoutes.func2 (5 handlers) Feb 12 09:32:10 i-mvlzfacx ollama[1529]: time=2025-02-12T09:32:10.875+08:00 level=INFO source=routes.go:1238 msg="Listening on 127.0.0.1:11434 (version 0.5.7)" Feb 12 09:32:10 i-mvlzfacx ollama[1529]: time=2025-02-12T09:32:10.885+08:00 level=INFO source=routes.go:1267 msg="Dynamic LLM libraries" runners="[cpu_avx2 cuda_v11_avx cuda_v12_avx rocm_avx cpu cpu_avx]" Feb 12 09:32:10 i-mvlzfacx ollama[1529]: time=2025-02-12T09:32:10.886+08:00 level=INFO source=gpu.go:226 msg="looking for compatible GPUs" Feb 12 09:32:12 i-mvlzfacx ollama[1529]: time=2025-02-12T09:32:12.464+08:00 level=INFO source=types.go:131 msg="inference compute" id=GPU-745b3d31-7b14-6335-7ea8-d27ea7261802 library=cuda variant=v12 compute=7.0 driver=12.7 name="Te> Feb 12 09:32:12 i-mvlzfacx ollama[1529]: time=2025-02-12T09:32:12.464+08:00 level=INFO source=types.go:131 msg="inference compute" id=GPU-bd0014a9-9fb8-ade2-6054-a721c20dbef1 library=cuda variant=v12 compute=7.0 driver=12.7 name="Te> Feb 12 09:32:12 i-mvlzfacx ollama[1529]: time=2025-02-12T09:32:12.464+08:00 level=INFO source=types.go:131 msg="inference compute" id=GPU-5cfd0bcc-c8c5-29ec-4f8d-630adb6d33b2 library=cuda variant=v12 compute=7.0 driver=12.7 name="Te> Feb 12 09:36:42 i-mvlzfacx ollama[1529]: [GIN] 2025/02/12 - 09:36:42 | 200 | 18.869142ms | 127.0.0.1 | HEAD "/" Feb 12 09:36:42 i-mvlzfacx ollama[1529]: [GIN] 2025/02/12 - 09:36:42 | 404 | 644.305µs | 127.0.0.1 | POST "/api/show" Feb 12 09:36:45 i-mvlzfacx ollama[1529]: time=2025-02-12T09:36:45.027+08:00 level=INFO source=download.go:175 msg="downloading 6e9f90f02bb3 in 16 561 MB part(s)" 

7. 使用 Ollama 下载 DeepSeek

运行命令:

# ollama run deepseek-r1:14b pulling manifest pulling 6e9f90f02bb3... 100% ▕███████████████████████████████████████████████████▏ 9.0 GB pulling 369ca498f347... 100% ▕███████████████████████████████████████████████████▏ 387 B pulling 6e4c38e1172f... 100% ▕███████████████████████████████████████████████████▏ 1.1 KB pulling f4d24e9138dd... 100% ▕███████████████████████████████████████████████████▏ 148 B pulling 3c24b0c80794... 100% ▕███████████████████████████████████████████████████▏ 488 B verifying sha256 digest writing manifest success >>>

8. 监控 GPU 信息

watch-n1 nvidia-smi 

输出显示:

Every 1.0s: nvidia-smi i-mvlzfacx: Wed Feb 12 09:56:13 2025 Wed Feb 12 09:56:13 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 565.57.01 Driver Version: 565.57.01 CUDA Version: 12.7 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla V100-PCIE-16GB-LS On | 00000000:00:07.0 Off | 0 | | N/A 38C P0 38W / 250W | 10694MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 Tesla V100-PCIE-16GB-LS On | 00000000:00:08.0 Off | 0 | | N/A 37C P0 24W / 250W | 4MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 2 Tesla V100-PCIE-16GB-LS On | 00000000:00:09.0 Off | 0 | | N/A 35C P0 26W / 250W | 4MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 2151 C ...rs/cuda_v12_avx/ollama_llama_server 10690MiB | +-----------------------------------------------------------------------------------------+ 

此时发现只有一张 v100 在被使用


9. 环境变量中添加 CUDA_VISIBLE_DEVICES

exportCUDA_VISIBLE_DEVICES=0,1,2 

重启 Ollama:

service ollama restart 

再次运行 DeepSeek,并查看 GPU 监控,发现三张 GPU 都被使用了:

Every 1.0s: nvidia-smi i-mvlzfacx: Wed Feb 12 10:19:25 2025 Wed Feb 12 10:19:25 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 565.57.01 Driver Version: 565.57.01 CUDA Version: 12.7 | |-----------------------------------------+------------------------+----------------------| | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla V100-PCIE-16GB-LS On | 00000000:00:07.0 Off | 0 | | N/A 38C P0 38W / 250W | 14452MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 1 Tesla V100-PCIE-16GB-LS On | 00000000:00:08.0 Off | 0 | | N/A 39C P0 38W / 250W | 13804MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ | 2 Tesla V100-PCIE-16GB-LS On | 00000000:00:09.0 Off | 0 | | N/A 37C P0 38W / 250W | 14216MiB / 16384MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 6067 C ...rs/cuda_v12_avx/ollama_llama_server 14448MiB | | 1 N/A N/A 6067 C ...rs/cuda_v12_avx/ollama_llama_server 13800MiB | | 2 N/A N/A 6067 C ...rs/cuda_v12_avx/ollama_llama_server 14212MiB | +-----------------------------------------------------------------------------------------+ 

10. 安装 Open WebUI

环境安装:

Open WebUI 要求使用 Python 3.11。使用以下命令创建一个新的环境:

conda create --name open-webui python=3.11

进入环境:

conda activate open-webui 

使用 pip 安装 Open WebUI:

pip install open-webui 
启动服务:
RAG_EMBEDDING_MODEL="" ENABLE_OPENAI_API="false" CORS_ALLOW_ORIGIN="*" open-webui serve --host 0.0.0.0 --port 5000 
  • RAG_EMBEDDING_MODEL 不加载默认嵌入的模型。
  • ENABLE_OPENAI_API 禁止请求 OpenAI。
  • CORS_ALLOW_ORIGIN 开启跨域请求。
上传文件配置:

修改内容如下:

Google Chrome 2025-02-26 12.32.28.png

上传后,文件一直转圈,如下图。后台查看 GPU 监控和 Ollama 进程都是正常的。等待一会儿后,可以继续提交内容。应该是模型在进行推理。

image.png

Read more

使用 VS Code 将项目代码上传到 Gitee 的完整指南

使用 VS Code 将项目代码上传到 Gitee 的完整指南

在现代软件开发流程中,版本控制是不可或缺的一环。 Gitee(码云)作为国内领先的代码托管平台,为开发者提供了稳定、快速的 Git 服务。 本文将详细介绍如何使用 Visual Studio Code(VS Code)将本地项目代码上传至 Gitee 仓库,涵盖从环境配置、初始化仓库到推送代码的完整流程。 一、准备工作 1. 安装必要工具 * Git:确保你的系统已安装 Git。 可通过终端运行 git --version  或 git -v 验证是否安装成功。 * VS Code:下载并安装 Visual Studio Code。 * Gitee 账号:前往 Gitee 官网 注册账号(如尚未注册)。 2. 安装 VS

By Ne0inhk
使用Git将代码从远程仓库拉取到本地(详细图解、简单易懂)

使用Git将代码从远程仓库拉取到本地(详细图解、简单易懂)

目录 一、前言 二、全流程 一、前言 本博客主要记录一下使用Git将代码从远程仓库拉取到本地的全流程,使用Git拉取代码在学校内多同学合作开发项目或者是实习拉取公司代码等场景都很常见,单纯记录希望对你有帮助 二、全流程 首先在你想要存放代码的位置新建一个文件夹并改名 进入刚刚创建的空文件中,右键然后点击显示更多选项 然后点击Git Bash Here 然后就会出现如图所示的命令行窗口 此时先不用管命令行窗口,找到你要远程仓库所在的平台(我这里以Gitee演示),如图点击克隆/下载按钮 HTTPS下方就是远程仓库的url地址,只要有远程仓库的url地址,只需要在刚刚的命令行窗口打上git clone在将url地址复制在后面再回车即可(Gitee下面的提示也给了,直接复制带git clone的命令就行,没有的话就自己敲git clone) 复制到命令行窗口之后,等待片刻即可 然后点开刚刚创建的文件夹就可以看到拉取下来的代码了,后续用IDEA打开该文件就可以在本地进行开发了

By Ne0inhk

Zvec 架构深度解析:阿里巴巴开源的轻量级进程内向量数据库

Zvec 架构深度解析:阿里巴巴开源的轻量级进程内向量数据库 Zvec 是阿里巴巴开源的一个轻量级、闪电般快速的进程内向量数据库。本文将深入分析 Zvec 的代码架构,揭示其核心设计理念和技术实现细节。 一、项目概览 1.1 核心特性 Zvec 基于 Alibaba 久经考验的 Proxima 向量搜索引擎构建,提供生产级的低延迟、可扩展的相似度搜索能力: * 极致性能:毫秒级搜索数十亿级向量 * 简单易用:无需服务器配置,零依赖安装 * 混合向量支持:同时支持稠密向量(Dense)和稀疏向量(Sparse) * 混合搜索:语义相似度 + 结构化过滤 * 随处运行:嵌入到应用进程内运行 1.2 技术栈 组件技术语言C++17构建系统CMakePython绑定Pybind11存储引擎RocksDB向量索引Proxima (IVF, HNSW, Flat)序列化Protobuf压缩LZ4位图CRoaring距离计算SIMD 加速 1.3

By Ne0inhk

GitHub机器人故障处理:从403错误到权限重构

GitHub机器人故障处理:从403错误到权限重构 【免费下载链接】LightGBMmicrosoft/LightGBM: LightGBM 是微软开发的一款梯度提升机(Gradient Boosting Machine, GBM)框架,具有高效、分布式和并行化等特点,常用于机器学习领域的分类和回归任务,在数据科学竞赛和工业界有广泛应用。 项目地址: https://gitcode.com/GitHub_Trending/li/LightGBM 在开源项目协作中,自动化工具是提升管理效率的关键。LightGBM项目近期遭遇了"no-response"机器人功能异常,导致issue标签管理失效。本文将系统分析这一故障从发现到解决的全过程,揭示GitHub工作流权限管理的核心要点,为同类项目提供可复用的故障处理方案。 故障表现:标签管理失控的真实场景 用户反馈聚焦三大异常现象 项目维护者@guolinke首先注意到异常:在issue #4589中,用户@数据分析菜鸟已提供详细的日志信息,但"awaiting response"标签仍然存在。

By Ne0inhk