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

nix
{ 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 AMD
  • rocmOverrideGfx specifica l’architettura GPU (es. “11.0.0” per RDNA 3)
  • Richiede nixpkgs.config.rocmSupport = true per abilitare il supporto ROCm
nix
{ 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";

        };

}