Software libero a scuola/Ollama

Indice del libro

È possibile provare a interagire con l'intelligenza artificiale in rete su siti come gemini di google oppure chatGPT. Grazie a ollama è possibile installare sul proprio pc in locale una istanza di intelligenza artificiale che permette attraverso una chat, ottenuta nel terminale su ubuntu, di fare richieste, domande, porre problemi ed ottenere risposte come se si stesse chiacchierando, per iscritto, con un essere umano. Sono necessari:

  • almeno 8GB di memoria ram
  • almeno 10Gb di spazio su disco
  • un po' di pazienza

Se, fortunatamente o per scelta, sul proprio pc si ha montata una scheda video Nvidia con una adeguata dotazione di ram i tempi di elaborazione e risposta dell'IA si riducono notevolmente.

Installazione su linux Ubuntu

modifica

Su linux ubuntu, per installare ollama si da il comando

sudo snap install ollama

Installazione alternativa

modifica

In alternativa è possibile installate Ollama con curl così come suggerito sul sito.

Sulla ubuntu 22.04 se non lo si ha già installato si può installare curl dal terminale con il comando

sudo apt install curl

in genere ubuntu suggerisce di utilizzare anche snap per l'installazione, ma per il momento il comando curl installato via snap non permette poi di installare ollama.

Una volta installato curl si procede all'installazione con il comando

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

Installazione di Ollama+OpenWebUI su Windows 11 con Docker

modifica

Prerequisiti per la virtualizzazione:

modifica
  • attivare Hyper-V da “Attivazione o disattivazione delle funzionalità Windows”
  • installare WSL: aprire una finestra di powershell come amministratore e lanciare i comandi
wsl --update
wsl –install

seguire le richieste impostando username e password dell'utente UNIX. Riavviare il sistema.

Installare Docker Desktop

modifica

Scaricare il paccheto da

https://www.docker.com/products/docker-desktop/

e avviare l'installazione. In caso di dubbi seguire le istruzioni su

https://docs.docker.com/desktop/install/windows-install/

Avviare Docker Desktop per verificare che l’installazione sia andata a buon fine.

Installare Ollama

modifica

Prerequisito se si vuole usare la GPU per le inferenze:Ollama identifica la presenza di una GPU ma è necessario installare prima i driver Nvidia per la propria scheda grafica e il Cuda Toolkit da https://developer.nvidia.com/cuda-downloads

Scaricare Ollama da https://ollama.com/download e lanciare l’installer.

Verificare che Ollama sia stato installato aprendo un browser e andando su

http://127.0.0.1:11434/

il browser dovrebbe rispondere con una schermata nera con in alto a sinistra la scritta “Ollama is running”.

Avviare il container docker con l’immagine di Open WebUI

modifica

Aprire un una finestra di powershell e digitare

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

Dopo l’avvio del container docker andare su http://localhost:3000 e creare l’utente admin cliccando su signup.

Fermare le applicazioni

modifica

Ollama server rimane attivo ma non dovrebbe consumare risorse. Se tuttavia vuoi fermare Ollama server, clicca sull’icona di Ollama nel Centro notifiche (all'estremità destra della barra delle applicazioni, se non è visibile cliccare sull’icona a forma di freccia “Mostra icone nascoste”) e cliccare su “Quit Ollama”.

 
StopOllamaServer


Se Ollama server si dovesse riavviare, è possibile forzare l'arresto aprendo una finestra di powershell e digitando

Get-Process | Where-Object {$_.ProcessName -like '*ollama*'} | Stop-Process

Per fermare il container OpenWebUI: aprire DockerDesktop e cliccare su STOP sulla linea corrispondente.

 
StopDockerOpenwebui


Per riavviare le applicazioni

  • lanciare l’applicazione Ollama
  • aprire Docker Desktop e avviare il container di OpenWebUI

Installazione di Ollama+OpenWebUI su Debian "bookworm" con Docker

modifica

Installare Docker e docker-compose

modifica

Aggiungere la chiave GPG ufficiale Docker, come utente con permessi sudo, da terminale:

sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Aggiungere il repository APT:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Installare la versione più recente di docker e docker compose

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 
sudo apt-get update

Verificare che l'installazione abbia avuto successo avviando l'immagine "hello-world":

sudo docker run hello-world

fonte: https://docs.docker.com/engine/install/debian/#install-using-the-repository

Installare i Driver NVIDIA e il CUDA toolkit (facoltativo)

modifica

Passo da seguire se si vuole usare la GPU per le inferenze e velocizzare l'uso di Ollama.

Controllare se i driver della GPU sono installati, da terminale:

nvidia-smi

Se si ottiene una schermata come quella che segue, i driver sono già installati.

 
ControlloDriverNvidia

Altrimenti installare i driver (TO DO...)

Controllare se è installato il CUDA toolkit digitando

nvcc --version

altrimenti, autenticarsi come root

su -

e installare il CUDA toolkit da terminale digitando :

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey > /etc/apt/keyrings/nvidia-docker.key
curl -s -L https://nvidia.github.io/nvidia-docker/debian11/nvidia-docker.list > /etc/apt/sources.list.d/nvidia-docker.list
sed -i -e "s/^deb/deb \[signed-by=\/etc\/apt\/keyrings\/nvidia-docker.key\]/g" /etc/apt/sources.list.d/nvidia-docker.list
apt update
apt -y install nvidia-container-toolkit

Riavviare il servizio docker

service docker restart

Avviare i container docker

modifica

Creare una cartella Ollama, ad esempio, sotto la cartella home del proprio utente (e.g. myuser) ed accederci:

mkdir /home/myuser/ollama
cd ollama

Creare un file denominato docker-compose.yaml

nano docker-compose.yaml

Creare un file denominato docker-compose.yaml e incollare il seguente testo:

version: '3.8'

services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - /home/ollama:/root/.ollama
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: ["gpu"]
    # For older versions of Docker, you might need to use the environment method
    # environment:
    #   - NVIDIA_VISIBLE_DEVICES=all

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "8282:8080"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - open-webui:/app/backend/data
    restart: unless-stopped

volumes:
  open-webui:

Chiudere il file con CTRL+X e salvarne il contenuto.

Per avviare i container digitare:

docker compose up -d
 
Risultato del comando

Andare su http://localhost:8282/ (o inserire il proprio ip al posto di localhost) per accedere all'interfaccia grafica di Open WebUI.

Per fermare i container senza perdere dati (modelli LLM scaricati e dati utente) digitare:

docker compose stop

Uso di ollama

modifica

Per avviare ollama si deve scegliere un modello di linguaggio, una volta scelto il modello, ad esempio llama3, si lancia il prompt con il comando

ollama run llama3

Alla prima esecuzione ollama scarica sul pc una file di circa 5 gb, nel caso di llama3, e quindi si deve avere la pazienza, e lo spazio su disco, per concludere il download.

 
ollama chat

Una volta avviato ollama presenta un prompt in colore grigio

>>>Send a message (/? for help)

scrivendo sopra al prompt si possono fare domande e presentare problemi in italiano oppure in inglese e, dopo un attimo di elaborazione, si ottiene una risposta.

Per uscire dal prompt si deve dare il comando

/bye


Per avere una lista dei comandi prima di attivare il prompt nel terminale si lancia

ollama help

Che il server di ollama sia attivo e funzionante lo si può controllare dal browser andando all'indirizzo

http://127.0.0.1:11434

la scritta Ollama is running ci garantisce che ollama sia in funzione.

Se ci fosse la necessità di spegnerlo si può ricorrere al comando

systemctl stop ollama

Ollama interfaccia web

modifica

Una volta installato Ollama risponde anche su una interfaccia web

localhost:8080

ed ovviamente se cercato da un pc in rete locale

ip_del_server:8080
 
OllamaOpenwebuiInizio

Se sono stati scaricati diversi modelli di linguaggio è possibile scegliere con quale modello interagire ed avviare poi una chat semplicemnte inserendo la richiesta nella casella in basso.

Nella chat si possono anche caricare file, ad esempio un pdf, che l'AI leggerà ed imparerà permettendoci così di farle richieste a riguardo del testo che le abbiamo passato. Per caricare i file basta trascinarli sulla casella della chat.

In questo modo però il testo passato all'AI sarà disponibile solo per la chat in corso. Ollama permette però di fornire dei testi al server che possono essere richiamati e messi a disposizione dell'AI per migliorare le proprie risposte.

Allenare Ollama RAG

modifica

A seconda del modello di linguaggio scelto Ollama può dare risposte più o meno precise.

E' possibile però mettere sul server dei testi che possono essere facilmente richiamati a seconda del bisogno inserendo nella casella della chat il simbolo #.

Innanzitutto ci si deve procurare dei testi che parlino dell'argomento che vogliamo sia imparato dall'AI, ad esempio dei libri in formato pdf.

Poi facendo la login sull'interfaccia web di Ollama, in modalità amministratore, si deve aprire la scheda documenti che si trova clikkando su Area di lavoro/documenti.

Un evidente tasto + in alto a destra permette il caricamento dei documenti che avviene trascinando il file sulla casella di inserimento.

 
OllamaOpenwebuiAreadiLavoro

Una volta caricato il documento è buona cosa andare nella finestra di impostazioni/documenti e clikkare sul tasto scansiona.

 
OllamaOpenwebuiScansioneDoc

A questo punto Ollama mette a disposizione di chiunque si colleghi la possibilità di utilizzare i testi caricati come propria conoscenza. Se si vuole che l'AI risponda utilizzando il contenuto del file si deve semplicemente iniziare la chat con un # e scegliere i file che si vuole sia imparato dalla AI.

Creare un modello Ollama personalizzato (es. Dante Alighieri chatbot)

modifica

Creare un modello personalizzato, a partire da un LLM precedentemente caricato su Ollama, per creare un chatbot che dialoghi con l'utente impersonando, ad esempio, Dante Alighieri è semplice.

Andare in "Area di lavoro" (in alto a sinistra nella schermata principale) e dalla finestra "Modelli" fare click su "Creare un modello: personalizza i modelli per uno scopo specifico". Apparirà una finestra come quella nella figura che segue: inserire un nome, un ID del modello e una descrizione a piacere, scegliere il modello base tra quelli precedentemente caricati su Ollama.

 
Esempio di finestra per creare il chatbot Dante Alighieri

Inserire il prompt di sistema per personalizzare il modello. Nell'esempio del chatbot di Dante Alighieri il prompt potrebbe essere:

"You are Dante Alighieri, the famous italian poet, act and write as him. Make it like the Dante is talking to me in the way they would at the time and place they lived. Do not write mechanically like you are stating facts. Write like the person would. Write always in italian language. Double-check the grammatical and linguistic correctness of the answer before sending it to the user. Double-check the correctness of informations. Doesn't reply with another question. Don't start the reply always with the same words."

Cliccare su "Salva e aggiorna". Creare una "Nuova chat" e selezionare il modello appena creato. Di seguito un esempio di conversazione:

 
Esempio di conversazione con il chatbot Dante Alighieri

Collegamenti esterni

modifica

AI opensource a scuola

modifica