Cos’è Ollama
Ollama è un tool che permette di eseguire modelli LLM (Large Language Models) localmente sul proprio computer. Caratteristiche principali:
- Esecuzione locale senza dipendenze cloud
- Supporto per modelli popolari come Llama, Mistral, Gemma, Phi, e molti altri
- API REST compatibile con OpenAI
- Gestione semplificata di download e aggiornamento modelli
LLM (Large Language Models)
I Large Language Models sono modelli di intelligenza artificiale addestrati su grandi quantità di testo. Possono:
- Generare testo, rispondere a domande, riassumere documenti
- Assistere nella programmazione e debugging
- Tradurre tra lingue
- Analizzare e estrarre informazioni da testi
Accelerazione GPU (CUDA)
Per prestazioni ottimali, Ollama può sfruttare le GPU NVIDIA tramite CUDA:
- Inferenza molto più veloce rispetto alla CPU
- Richiede driver NVIDIA e toolkit CUDA
- La configurazione
acceleration = "cuda"abilita l’accelerazione hardware modesetting.enable = trueè necessario per il corretto funzionamento dei driver
Porte e Accesso
Ollama espone un’API REST sulla porta 11434:
host = "0.0.0.0"permette connessioni da altri dispositivi in rete- Utile per collegare interfacce web come Open WebUI o altri client
Configurazione
{ pkgs, ... }:
{
hardware.nvidia = {
modesetting.enable = true;
};
networking.firewall.allowedTCPPorts = [ 11434 ];
hardware.graphics.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
services.ollama = {
enable = true;
acceleration = "cuda";
host = "0.0.0.0";
port = 11434;
};
}Configurazione AMD (ROCm)
Per GPU AMD, Ollama utilizza ROCm (Radeon Open Compute) invece di CUDA:
acceleration = "rocm"abilita l’accelerazione per schede AMDrocmOverrideGfxspecifica l’architettura GPU (es. “11.0.0” per RDNA 3)- Richiede
nixpkgs.config.rocmSupport = trueper abilitare il supporto ROCm
{ config, pkgs, ... }:
{
nixpkgs.config.rocmSupport = true;
# Installazione dei Programmi
environment.systemPackages = with pkgs; [
pkgs.ollama
pkgs.alpaca
pkgs.rocmPackages.rocm-smi
];
# Enable OLLAMA per la GPU locale
services.ollama = {
enable = true;
openFirewall = true;
acceleration = "rocm";
rocmOverrideGfx = "11.0.0";
environmentVariables = {
HCC_AMDGPU_TARGET = "gfx1100"; # used to be necessary, but doesn't seem to anymore
};
# home = "/var/lib/ollama";
# models = "\${config.services.ollama.home}/models";
};
}