Risponderemo a tutte le tue domande!

Applicazioni e Guide

Open WebUI: Tutto in uno

Open WebUI è stata originariamente sviluppata per Ollama, di cui abbiamo parlato in uno dei nostri articoli. In precedenza si chiamava Ollama WebUI, ma col tempo l'attenzione si è spostata sull'universalità dell'applicazione e il nome è stato cambiato in Open WebUI. Questo software risolve il problema fondamentale di lavorare comodamente con modelli di reti neurali di grandi dimensioni collocati localmente o su server controllati dall'utente.

Installazione

Il metodo di installazione principale e preferito è quello di distribuire un contenitore Docker. Questo permette di non pensare alla presenza di dipendenze o di altri componenti che garantiscono il corretto funzionamento del software. Tuttavia, è possibile installare Open WebUI clonando il repository del progetto da GitHub e costruendolo dal codice sorgente. In questo articolo prenderemo in considerazione entrambe le opzioni.

Prima di iniziare, assicuratevi che i driver della GPU siano installati sul server. La nostra istruzione Installare i driver NVIDIA® in Linux vi aiuterà a farlo.

Utilizzo di Docker

Se avete appena ordinato un server, vi mancheranno il motore Docker e il set di strumenti necessari per passare le GPU al container. Non consigliamo di installare Docker dal repository standard di Ubuntu, poiché potrebbe essere obsoleto e non supportare tutte le opzioni moderne. Sarebbe meglio utilizzare lo script di installazione pubblicato sul sito ufficiale:

curl -sSL https://get.docker.com/ | sh

Oltre a Docker, è necessario installare NVIDIA® Container Toolkit, quindi attivare il repository Nvidia:

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

Aggiornare la cache dei pacchetti e installare NVIDIA® Container Toolkit:

sudo apt update && sudo apt -y install nvidia-container-toolkit

Affinché la toolchain funzioni, è necessario riavviare il demone Docker:

sudo systemctl restart docker

Ora è possibile eseguire il contenitore desiderato. Si noti che il comando seguente non isola i contenitori dalla rete dell'host, perché in seguito si potranno attivare altre opzioni, come la generazione di immagini tramite la WebUI di Stable Diffusion. Questo comando scaricherà ed eseguirà automaticamente tutti i livelli dell'immagine:

sudo docker run -d --network=host --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama

Utilizzo di Git

Ubuntu 22.04

Per prima cosa, è necessario clonare il contenuto del repository:

git clone https://github.com/open-webui/open-webui.git

Aprire la cartella scaricata:

cd open-webui/

Copiare la configurazione di esempio (si può modificare se necessario), che imposterà le variabili d'ambiente per la compilazione:

cp -RPp .env.example .env

Installare il programma di installazione di NVM, che aiuterà a installare la versione richiesta di Node.js sul server:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

Successivamente, è necessario chiudere e riaprire la sessione SSH in modo che il comando successivo funzioni correttamente.

Installare Node Package Manager:

sudo apt -y install npm

Installare la versione 22 di Node.js (attuale al momento della stesura di questo articolo):

npm install 22

Installare le dipendenze necessarie per un ulteriore assemblaggio:

npm install

Avviamo la compilazione. Si noti che richiede più di 4 GB di RAM libera:

npm run build

Il frontend è pronto; ora è il momento di preparare il backend. Andare nella cartella con lo stesso nome:

cd ./backend

Installare i pacchetti pip e ffmpeg:

sudo apt -y install python3-pip ffmpeg

Prima dell'installazione, è necessario aggiungere un nuovo percorso alla variabile d'ambiente:

sudo nano ~/.bashrc

Aggiungere la seguente riga alla fine del file:

export PATH="/home/usergpu/.local/bin:$PATH"

Aggiorniamo all'ultima versione:

python3 -m pip install --upgrade pip

Ora è possibile installare le dipendenze:

pip install -r requirements.txt -U

Installare Ollama:

curl -fsSL https://ollama.com/install.sh | sh

Tutto è pronto per lanciare l'applicazione:

bash start.sh

Ubuntu 24.04 / 24.10

Quando installate OpenWebUI su Ubuntu 24.04/24.10, dovrete affrontare una sfida fondamentale: il sistema operativo utilizza Python 3.12 per impostazione predefinita, mentre OpenWebUI supporta solo la versione 3.11. Non è possibile effettuare un semplice downgrade di Python, perché ciò comporterebbe la rottura del sistema operativo. Non è possibile effettuare un semplice downgrade di Python, perché ciò comporterebbe la rottura del sistema operativo. Poiché il pacchetto python3.11 non è disponibile nei repository standard, dovrete creare un ambiente virtuale per utilizzare la versione corretta di Python.

La soluzione migliore è usare il sistema di gestione dei pacchetti Conda. Conda funziona come pip, ma aggiunge il supporto di un ambiente virtuale simile a venv. Poiché sono necessarie solo le funzionalità di base, si utilizzerà Miniconda, una distribuzione leggera. Scaricate l'ultima versione da GitHub:

curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"

Eseguire lo script:

bash Miniforge3-$(uname)-$(uname -m).sh
Creiamo un ambiente virtuale chiamato pyenv e specifichiamo la versione 3.11 di Python:
conda create -n pyenv python=3.11

Attivare l'ambiente creato:

conda activate pyenv

Ora si può procedere con i passaggi standard dell'installazione di OpenWebUI per Ubuntu 22.04. L'ambiente virtuale garantisce che tutti gli script di installazione vengano eseguiti senza conflitti di versione. L'ambiente virtuale garantisce che tutti gli script di installazione vengano eseguiti senza problemi e senza conflitti di versione dei pacchetti.

Modelli

Libreria Ollama

Open WebUI consente di caricare i modelli direttamente dall'interfaccia web, specificando solo il nome nel formato model:size. A tal fine, navigare in http://192.168.88.20:8080/admin/settings e fare clic su Connections. Quindi fare clic sull'icona della chiave inglese di fronte alla stringa http://localhost:11434. Dopo aver consultato i nomi dei modelli presenti nella libreria, inserire il nome e fare clic sull'icona di caricamento:

Open WebUI manage models

Il sistema scaricherà automaticamente il modello richiesto, che sarà immediatamente disponibile per l'uso. A seconda delle dimensioni selezionate, il download può richiedere un tempo diverso. Prima di effettuare il download, assicurarsi che ci sia spazio sufficiente sul disco. Per ulteriori informazioni, consultare l'articolo Partizionamento del disco in Linux.

Modelli personalizzati

Se è necessario integrare un modello di rete neurale non presente nella libreria di Ollama, è possibile utilizzare la funzione sperimentale e caricare qualsiasi modello arbitrario in formato GGUF. A tale scopo, accedere a Settings - Admin Settings - Connections e fare clic sull'icona della chiave inglese di fronte a http://localhost:11434. Fare clic su Show nella sezione Experimental. Per impostazione predefinita, è attivata la modalità file, che consente di caricare un file dal computer locale. Facendo clic su File Mode, si passa a URL Mode, che consente di specificare l'URL del file del modello e il server lo scaricherà automaticamente:

Open WebUI upload gguf model

RAG

Oltre a un'interfaccia web comoda e funzionale, Open WebUI aiuta a espandere le capacità dei diversi modelli, garantendone l'uso congiunto. Ad esempio, è facile caricare documenti per formare un database vettoriale RAG (Retrieval-augmented generation). Nel processo di generazione di una risposta all'utente, LLM potrà fare affidamento non solo sui dati ottenuti direttamente come risultato dell'addestramento, ma anche su quelli inseriti in un database vettoriale simile.

Documenti

Per impostazione predefinita, Open WebUI scansiona la directory /data/docs alla ricerca di file che possono essere inseriti nello spazio vettoriale del database ed esegue la trasformazione utilizzando il modello integrato all-MiniLM-L6-v2. Questo non è l'unico modello adatto a questo compito, quindi è opportuno provare altre opzioni, ad esempio da questo elenco.

I documenti di testo, privi di tag e altri caratteri speciali, sono i più adatti per RAG. Naturalmente, è possibile caricare i documenti così come sono, ma questo può influire notevolmente sull'accuratezza delle risposte generate. Ad esempio, se si dispone di una base di conoscenza in formato Markdown, si può prima ripulirla dalla formattazione e solo successivamente caricarla in /data/docs.

Ricerca sul Web

Oltre ai documenti locali, il modello di rete neurale può essere istruito a utilizzare qualsiasi sito web come fonte di dati. Questo gli consentirà di rispondere alle domande utilizzando non solo i dati su cui è stato addestrato, ma anche quelli ospitati sui siti web specificati dall'utente.

In realtà, si tratta di un tipo di RAG, che riceve in ingresso pagine HTML e le trasforma in modo speciale, inserendole in un database vettoriale. La ricerca all'interno di tale database sarà molto veloce; pertanto, il modello di rete neurale sarà in grado di generare rapidamente una risposta in base ai risultati ottenuti. Open WebUI supporta diversi motori di ricerca, ma può lavorare solo con uno alla Volta™, che viene specificato nelle impostazioni.

Per includere i risultati della ricerca sul Web nelle risposte della rete neurale, fare clic su + (simbolo più) e far scorrere l'interruttore Ricerca Web:

Open WebUI enable Web Search

Generazione di immagini

Il punto forte di Open WebUI è che questo software consente di combinare più reti neurali con compiti diversi per risolvere un singolo problema. Ad esempio, Llama 3.1 è in grado di dialogare perfettamente con l'utente in diverse lingue, ma le sue risposte saranno esclusivamente testuali. Non può generare immagini, quindi non c'è modo di illustrare le sue risposte.

Stable Diffusion, di cui abbiamo spesso scritto, è l'opposto: questa rete neurale genera perfettamente immagini, ma non è in grado di lavorare con i testi. Gli sviluppatori di Open WebUI hanno cercato di combinare i punti di forza di entrambe le reti neurali in un unico dialogo e hanno implementato il seguente schema di lavoro.

Quando si conduce un dialogo in Open WebUI, accanto a ogni risposta della rete neurale appare un pulsante speciale. Facendo clic su di esso, si riceve un'illustrazione di questa risposta direttamente nella chat:

Open WebUI images in dialogue

Questo si ottiene chiamando l'API di Stable Diffusion WebUI; al momento sono disponibili una connessione con le versioni di Automatic1111 e una connessione con ComfyUI. È anche possibile generare immagini tramite la rete neurale Dall-E, che però non può essere distribuita localmente: si tratta di un servizio di generazione di immagini a pagamento con codice sorgente chiuso.

Questa funzione funziona solo se, oltre a Open WebUI con Ollama, sul server è installata Stable Diffusion WebUI. Le istruzioni per l'installazione sono disponibili qui. L'unica cosa che vale la pena menzionare è che quando si esegue lo script ./webui.sh, è necessario specificare una chiave aggiuntiva per abilitare l'API:

./webui.sh --listen --api --gradio-auth user:password

Un'altra insidia può essere rappresentata dalla mancanza di memoria video. In questo caso, si possono usare due chiavi utili: --medvram e --lowvram. In questo modo si eviterà l'errore di memoria esaurita all'avvio della generazione.

Vedi anche:



Aggiornato: 12.08.2025

Pubblicato: 20.01.2025