Что есть сейчас — это установленные драйвера Nvidia Quadro P1000 на Ubuntu 24.04 LTS Server (ubuntu-24.04.5-live-server-amd64.iso) и в качестве железа выступает компьютер со следующими характеристиками:

  • Motherboard: Asus Prime H610M-R D4
  • Bios: Ver 3810
  • CPU: 12th Gen Intel® Core™i5-12400
  • Speed: 4000MHz
  • RAM: 16Gb (DDR4 3200MHz)
  • Storage: M.2 Apacer AS2280P4 512Gb

и сегодня задача: это разобрать как связать Quadro P1000 + Ollama (GPU) + Open WebUI (GPU) на Ubuntu 24.04 LTS Server.

Шаг №1: Драйвера для видеокарты Nvidia Quadro P1000 установлены опираясь на заметку: "Сборка и настройка выделенной станции для LLM: Ubuntu 24.04 + Ollama"

Шаг №2: Разворачиваем фреймворк Ollama + скачиваем языковую модель llama3.1:8b:

за основу берем заметку:

"Пробуем фреймворк Ollama + языковая модель llama3:8b на Ubuntu 24.04 Server"

ekzorchik@srv-s2404a:~$ wget https://ollama.ai/install.sh
ekzorchik@srv-us2404a:~$ sudo sh ./install.sh
>>> Installing ollama to /usr/local
>>> Downloading ollama-linux-amd64.tar.zst
############################################################################################################### 100.0%
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> NVIDIA GPU installed.
ekzorchik@srv-us2404a:~$

ekzorchik@srv-s2404a:~$ sudo nano /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
Environment="OLLAMA_HOST=0.0.0.0"

[Install]
WantedBy=default.target
ekzorchik@srv-us2404a:~$ sudo systemctl daemon-reload
ekzorchik@srv-us2404a:~$ sudo systemctl  restart ollama.service
ekzorchik@srv-us2404a:~$ sudo ss -tulpn | grep ollama
tcp   LISTEN 0      4096                      *:11434            *:*    users:(("ollama",pid=1633,fd=3))
ekzorchik@srv-us2404a:~$
ekzorchik@srv-us2404a:~$ sudo ollama pull llama3.1:8b
pulling manifest
pulling 667b0c1932bc: 100% ▕███████████████████████████████████████████████████████ ▏ 4.9 GB/4.9 GB  110 MB/s      0s
verifying sha256 digest
writing manifest
success
ekzorchik@srv-us2404a:~$
ekzorchik@srv-us2404a:~$ ollama list
NAME           ID              SIZE      MODIFIED
llama3.1:8b    46e0c10c039e    4.9 GB    28 seconds ago
ekzorchik@srv-us2404a:~$

Шаг №3: Устанавливаем в систему Docker & Docker Compose (на 22.09.2026):

опираемся на заметку: "Устанавливаем Docker & Docker Compose on Ubuntu 24.04 Server"

ekzorchik@srv-us2404a:~$ docker compose version
Docker Compose version v2.5.0
ekzorchik@srv-us2404a:~$ docker -v
Docker version 29.8.1, build 4a63305

Шаг №4: Прикручиваем взаимодействие с фреймворком ollama через Web—интерфейс посредством панели Open WebUI:

опираемся на заметку: "Взаимодействуем с ollama через Web-интерфейс на Ubuntu 24.04 LTS Server"

ekzorchik@srv-us2404a:~$ git config --global http.version HTTP/1.1
ekzorchik@srv-us2404a:~$ git config --global http.postBuffer 1572864
ekzorchik@srv-us2404a:~$ git clone https://github.com/open-webui/open-webui

т.к. у меня GPU есть в системе, то нужно запустить docker с его поддержкой:

ekzorchik@srv-us2404a:~$ cd open-webui/
ekzorchik@srv-us2404a:~/open-webui$
ekzorchik@srv-us2404a:~/open-webui$ docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
Unable to find image 'ghcr.io/open-webui/open-webui:ollama' locally
ollama: Pulling from open-webui/open-webui
a69cd39be090: Pull complete
551e251d236f: Pull complete
5607066c681f: Pull complete
4f4fb700ef54: Pull complete
2f14788b299d: Pull complete
246ac8b7cadc: Pull complete
2f49ca0457cc: Pull complete
b07a2d5ca901: Pull complete
f57cecf87087: Pull complete
9b30b134fd69: Pull complete
774043ccc8cc: Pull complete
dc22b8c341d9: Pull complete
ebdc97b065d2: Pull complete
5835db0f7345: Pull complete
fba636d4f755: Pull complete
c682813ed5d7: Pull complete
44136fa355b3: Download complete
d9f7dd8a8aa6: Download complete
0f352adffaa7: Download complete
Digest: sha256:8da1b14b73985f300daa9455efc325df1e21b7d3c399439e488a17e38f2eaf12
Status: Downloaded newer image for ghcr.io/open-webui/open-webui:ollama
0ced390116dc7903e855c2c0de60f575170368c0ae6eb3fec72c2ca8fa0677f2
docker: Error response from daemon: failed to discover GPU vendor from CDI: no known GPU vendor found
Run 'docker run --help' for more information
ekzorchik@srv-us2404a:~/open-webui$
ekzorchik@srv-us2404a:~/open-webui$ cd ~
ekzorchik@srv-us2404a:~$

Опачки, это что-то новое.

Ошибка здесь не в Open WebUI и не в образе. Образ успешно скачался, но Docker не может предоставить контейнеру NVIDIA GPU:

failed to discover GPU vendor from CDI: no known GPU vendor found

Скорее всего, на Ubuntu 24.04 установлен драйвер NVIDIA, но не установлен или неправильно настроен NVIDIA Container Toolkit.

ekzorchik@srv-us2404a:~$ nvidia-ctk --version

nvidia-ctk: command not found

ekzorchik@srv-us2404a:~$ nvidia-ctk cdi list

nvidia-ctk: command not found

ekzorchik@srv-us2404a:~$

Похоже, что не установлен пакет nvidia-container-toolkit

Устанавливаем:

ekzorchik@srv-us2404a:~$ 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/stable/deb/nvidia-container-toolkit.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
sudo sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/$(ARCH) /
#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/experimental/deb/$(ARCH) /
ekzorchik@srv-us2404a:~$
ekzorchik@srv-us2404a:~$ sudo apt-get update
ekzorchik@srv-us2404a:~$ export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.20.1-1
ekzorchik@srv-us2404a:~$ sudo apt-get install -y \
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
ekzorchik@srv-us2404a:~$ nvidia-ctk --version
NVIDIA Container Toolkit CLI version 1.20.1
commit: dffc40b4f820ce5c512633bac9e0418d0e05a2ee
ekzorchik@srv-us2404a:~$ nvidia-ctk cdi list
INFO[0000] Found 3 CDI devices
nvidia.com/gpu=0
nvidia.com/gpu=GPU-0fe62710-c0a2-f7e5-772e-7e83ff35f81c
nvidia.com/gpu=all
ekzorchik@srv-us2404a:~$

Шаг №5: Возвращаюсь к запуску Web—интерфейса в лице Open WebUI:

ekzorchik@srv-us2404a:~$ cd open-webui/
ekzorchik@srv-us2404a:~/open-webui$
ekzorchik@srv-us2404a:~/open-webui$ docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
docker: Error response from daemon: Conflict. The container name "/open-webui" is already in use by container "0ced390116dc7903e855c2c0de60f575170368c0ae6eb3fec72c2ca8fa0677f2". You have to remove (or rename) that container to be able to reuse that name.
Run 'docker run --help' for more information
ekzorchik@srv-us2404a:~/open-webui$

Нужно удалить контейнера и заново запустить его развертывание:

ekzorchik@srv-us2404a:~/open-webui$ docker rm -f open-webui
open-webui
ekzorchik@srv-us2404a:~/open-webui$ docker ps -a | grep open-webui
ekzorchik@srv-us2404a:~/open-webui$
ekzorchik@srv-us2404a:~/open-webui$ docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
c3cddcda3005eb50793c3718cad0c7d53f033f798ed7d48f4822cfbb6e6da7cf
docker: Error response from daemon: AMD CDI spec not found
Run 'docker run --help' for more information
ekzorchik@srv-us2404a:~/open-webui$

Хм, почему AMD? Это означает, что Docker пытается использовать AMD CDI, хотя у тебя NVIDIA Quadro P1000. Похоже, в конфигурации Docker/Container Toolkit осталась неправильная настройка CDI.

ekzorchik@srv-us2404a:~/open-webui$ grep -Rni amd /etc/docker /etc/cdi /etc/containerd 2>/dev/null
ekzorchik@srv-us2404a:~/open-webui$ sudo systemctl restart docker
ekzorchik@srv-us2404a:~/open-webui$ docker rm -f open-webui
open-webui
ekzorchik@srv-us2404a:~/open-webui$ docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
3a7729f1a2e3915e812c41cbac620b60527e82a7ad5b862be17ab413af99eb2d
ekzorchik@srv-us2404a:~/open-webui$

Ура! Ошибок нет.

ekzorchik@srv-us2404a:~/open-webui$ sudo docker ps
CONTAINER ID   IMAGE                                  COMMAND           CREATED          STATUS                    PORTS                                         NAMES
3a7729f1a2e3   ghcr.io/open-webui/open-webui:ollama   "bash start.sh"   41 seconds ago   Up 40 seconds (healthy)   0.0.0.0:3000->8080/tcp, [::]:3000->8080/tcp   open-webui
ekzorchik@srv-us2404a:~/open-webui$
ekzorchik@srv-us2404a:~/open-webui$ cd ~
ekzorchik@srv-us2404a:~$

Шаг №6: Теперь дальнейшее взаимодействие через Web-браузер, узнаем IP адрес этой системы Ubuntu 24.04 LTS Server

ekzorchik@srv-us2404a:~$ ip r | head -n1 | awk '{print $9}'
192.168.10.15
ekzorchik@srv-us2404a:~$

и с основной системы в локальной сети запускаем браузер и в строке адреса указываем URL: http://192.168.10.15:3000

нажимаем "Давайте начнем"

Регистрируем администратора

  • Имя (Введите ваше полное имя): указываем, к примеру ekzorchik
  • Электронная почта (Введите вашу электронную почту): указываем, к примеру support@ekzorchik.com
  • Пароль (Введите ваш пароль): указываем, к примеру 712mbddr@

и нажимаем "Создать аккаунт Администратора"

Далее производим настройки подключения к фреймворку и языковой модели:

в левом нижнем углу нажимаем на ekzorchik (это администратор) - Настройки

(ИИ) Подключения

Через (ИИ) Подключения нацеливаем Open WebUI на API Ollama

и нажимаем "Сохранить"

(ИИ) Модели

В (ИИ) Модели - оставляем только одну: llama3.1:8b

переходим в модель llama3.1:8b через нажатие на "Карандашик"

и отключаем "Встроенные инструменты" путем снятия галочек со всего выбора, остаются только следующие возможности:

Отключаем "Встроенные инструменты" в моделе llama3.1:8b

и нажимаем "Сохранить и обновить"

Шаг №7: Хотите видеть в консоли на сколько языковая модель нагружает Вашу видеокарту при обработке вашего запроса при работе в Web-интерфейсе или консоли командной строки:

ekzorchik@srv-us2404a:~$ apt-cache search nvtop
nvtop - Interactive NVIDIA GPU process monitor
ekzorchik@srv-us2404a:~$ sudo apt-get install -y nvtop

Через утилиту nvtop можно смотреть за загрузкой GPU при работе с языковой моделью.

Ну что по итогу, даже на такой слабенькой видеокарте можно уже с чем-то да работать и тестировать, как наиграюсь то будет ли желание приобрести что-то более производительное. Нужно только понять для чего мне в практическом применение можно, как системному администратору взять на вооружение эти языковые модели.

Ну как бы опять и собственно и все что я хотел показать на этот раз, с уважением автор блога ekzorchik.