Menu

WSL2 e Intelligenza Artificiale: eseguire modelli AI in ambiente Linux direttamente su Windows

11 min di lettura Manuel

WSL2 e Intelligenza Artificiale: eseguire modelli AI in ambiente Linux direttamente su Windows

L'Intelligenza Artificiale sta diventando parte integrante dei flussi di lavoro di sviluppatori, sistemisti e professionisti IT. Dall'esecuzione di modelli linguistici (LLM) all'elaborazione di immagini, fino agli esperimenti di machine learning, molti degli strumenti più utilizzati nascono e vengono sviluppati principalmente nell'ecosistema Linux.

Chi lavora su Windows non è però costretto a scegliere tra cambiare sistema operativo e utilizzare una macchina virtuale tradizionale. Windows Subsystem for Linux 2 (WSL2) mette a disposizione un ambiente Linux integrato in Windows, con un kernel Linux reale e una stretta integrazione con il sistema host. È una soluzione particolarmente interessante per creare ambienti di sviluppo, utilizzare framework AI e, con hardware e driver compatibili, sfruttare l'accelerazione GPU.

In questa guida vedremo come si inserisce WSL2 in un flusso di lavoro dedicato all'AI, quali sono i suoi vantaggi e quali strumenti è possibile utilizzare.

Perché scegliere WSL2 invece di una macchina virtuale tradizionale?

WSL2 utilizza una macchina virtuale leggera gestita da Windows, ma l'esperienza quotidiana è molto più integrata rispetto a quella di una VM tradizionale. Non occorre avviare e amministrare manualmente una seconda macchina con le stesse modalità di VirtualBox o VMware: la distribuzione Linux viene avviata e gestita attraverso gli strumenti WSL.

CaratteristicaWSL2Macchina virtuale tradizionale
Gestione delle risorseUtilizza risorse del sistema host e può essere configurato per limitarne l'impiegoRichiede la configurazione esplicita di CPU, RAM e disco virtuale
KernelKernel Linux reale, gestito e aggiornato tramite WSLKernel del sistema operativo installato nella VM
Integrazione con WindowsAccesso reciproco ai file, avvio di applicazioni e integrazione con gli strumenti WindowsIntegrazione variabile, spesso tramite cartelle condivise e configurazioni aggiuntive
GPUSupporta scenari di accelerazione GPU, inclusi CUDA su hardware e driver compatibiliDipende dal supporto di virtualizzazione e dalle funzionalità di passthrough o condivisione GPU
Avvio e gestioneAvvio e arresto integrati con Windows e con i comandi WSLGestione separata tramite il software di virtualizzazione

Non significa che WSL2 sia sempre più veloce di qualsiasi VM o che non utilizzi virtualizzazione: WSL2 si basa proprio su una macchina virtuale gestita da Windows. Il vantaggio è soprattutto l'integrazione e la semplicità operativa. Le prestazioni effettive dipendono dal carico di lavoro, dalla configurazione e da dove sono conservati i file.

Un consiglio importante: dove conservare i progetti

Per ottenere buone prestazioni nelle operazioni che coinvolgono molti file, come installazioni Python, repository Git e ambienti Node.js, è generalmente preferibile conservare i progetti nel filesystem Linux della distribuzione WSL2, ad esempio sotto ~/projects.

L'accesso ai file Windows attraverso /mnt/c/ è comodo, ma per carichi intensivi di operazioni sul filesystem può risultare meno efficiente rispetto al filesystem Linux nativo di WSL2. È possibile comunque accedere ai file Linux da Windows tramite Esplora file, digitando \\wsl$ oppure utilizzando l'indirizzo \\wsl.localhost.

WSL1 e WSL2: come si è evoluto il sottosistema Linux

La prima versione di Windows Subsystem for Linux è stata introdotta nel 2016 per consentire l'esecuzione di strumenti Linux direttamente su Windows. WSL1 non includeva un kernel Linux: utilizzava invece un livello di compatibilità che traduceva le chiamate di sistema Linux in operazioni comprensibili da Windows.

Questo approccio ha rappresentato un passo importante, ma presentava limiti di compatibilità e prestazioni, soprattutto con strumenti che richiedevano funzionalità specifiche del kernel Linux.

Nel 2019 Microsoft ha annunciato WSL2, basato su un vero kernel Linux eseguito in una macchina virtuale leggera, gestita attraverso la piattaforma di virtualizzazione di Windows. Il nuovo modello ha migliorato la compatibilità con il software Linux e ha reso possibile utilizzare strumenti che dipendono direttamente dal kernel, compresi molti scenari legati ai container.

WSL2 non è quindi un semplice emulatore di terminale: mette a disposizione un ambiente Linux vero e proprio, integrato nel desktop Windows.

Eseguire applicazioni e modelli di Intelligenza Artificiale con WSL2

Uno dei principali motivi per utilizzare WSL2 è la compatibilità con l'ecosistema di sviluppo AI. Molte librerie, applicazioni e guide tecniche sono progettate innanzitutto per Linux. Lavorare in un ambiente Linux consente quindi di utilizzare strumenti e procedure molto vicini a quelli impiegati su server e infrastrutture cloud.

Tra gli strumenti che si possono utilizzare in WSL2 troviamo:

  • Ollama, per scaricare ed eseguire modelli linguistici in locale, nei limiti delle risorse hardware disponibili.
  • PyTorch, framework utilizzato per machine learning e deep learning.
  • TensorFlow, piattaforma per la costruzione e l'addestramento di modelli.
  • Docker, per eseguire applicazioni e servizi in container.
  • Hugging Face Transformers, libreria per lavorare con modelli pre-addestrati e pipeline di AI.

La compatibilità e le prestazioni dipendono dalle versioni dei pacchetti, dai driver, dall'hardware e dalle istruzioni di installazione di ciascun progetto.

GPU NVIDIA e CUDA: accelerare i carichi di lavoro AI

L'accelerazione GPU può fare una grande differenza nell'esecuzione dei modelli AI. Operazioni come l'inferenza di modelli linguistici, l'elaborazione di immagini e l'addestramento di reti neurali possono beneficiare dell'elaborazione parallela offerta dalle GPU.

Su sistemi Windows compatibili, WSL2 può esporre alla distribuzione Linux le funzionalità di calcolo della GPU. Per le schede NVIDIA, questo consente di utilizzare CUDA in WSL2, a condizione di avere una GPU supportata e un driver Windows compatibile con WSL.

È importante seguire la documentazione NVIDIA specifica per WSL: in genere si installa il driver NVIDIA per Windows che include il supporto WSL e, all'interno di Linux, si installano i componenti CUDA richiesti dagli strumenti utilizzati. Non bisogna installare all'interno di WSL un driver Linux NVIDIA tradizionale, perché la gestione del driver GPU è affidata al driver Windows.

Dopo la configurazione, il comando seguente può essere utile per verificare che la GPU sia visibile dall'ambiente Linux:

nvidia-smi

La presenza del comando e il suo risultato dipendono dal driver e dalla configurazione. Anche PyTorch, TensorFlow, Ollama e i container Docker richiedono versioni compatibili con la specifica piattaforma GPU.

Nota: WSL2 non garantisce automaticamente che ogni applicazione possa utilizzare la GPU. Occorre verificare i requisiti del framework, la versione CUDA supportata e la compatibilità del driver. Per GPU AMD o Intel la procedura e il supporto sono differenti.

Modelli AI locali: Ollama, PyTorch e TensorFlow

Esistono due modalità principali per utilizzare l'AI da WSL2: eseguire i modelli direttamente sul proprio computer oppure collegarsi a servizi esterni tramite API.

Ollama: eseguire LLM sul proprio computer

Ollama semplifica il download e l'esecuzione di modelli linguistici in locale. Una volta installato secondo le istruzioni ufficiali, è possibile scaricare un modello e avviarlo da terminale.

Ad esempio:

ollama pull llama3.2
ollama run llama3.2

Il modello indicato è un esempio: la disponibilità, la dimensione e i requisiti cambiano in base alla versione e al catalogo di Ollama. Prima di scaricare un modello è opportuno controllare la memoria RAM, la memoria GPU disponibile, la dimensione dei pesi e la licenza.

L'esecuzione locale offre maggiore controllo sui dati e non richiede necessariamente l'invio dei prompt a un servizio remoto. D'altra parte, le prestazioni e la dimensione dei modelli utilizzabili dipendono dall'hardware disponibile.

PyTorch e TensorFlow: sviluppo e sperimentazione

Chi sviluppa applicazioni AI può utilizzare WSL2 come ambiente Python per installare PyTorch, TensorFlow e le relative dipendenze. È consigliabile creare un ambiente virtuale per ogni progetto, così da mantenere separate le versioni delle librerie.

Esempio di creazione e attivazione di un ambiente virtuale:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip

Per installare PyTorch o TensorFlow con accelerazione GPU, è necessario scegliere il pacchetto e le versioni indicate nella documentazione ufficiale in base al sistema, alla GPU e alla versione CUDA supportata. Un comando generico copiato da una guida non aggiornata potrebbe installare una build non compatibile.

Modelli con contesto esteso e gateway API: il ruolo di OpenRouter

Non tutti i modelli AI devono essere eseguiti localmente. Quando la memoria o la potenza di calcolo del computer non sono sufficienti, è possibile utilizzare modelli ospitati da provider esterni attraverso API.

Un gateway come OpenRouter permette di accedere, attraverso un'interfaccia unificata, a modelli offerti da provider differenti. In questo modo un'applicazione o uno script può interagire con diversi modelli senza dover integrare ogni singolo servizio da zero.

Questa soluzione è utile anche quando si vogliono sperimentare modelli con finestre di contesto ampie o modelli disponibili in specifici cataloghi. La disponibilità dei modelli, i limiti di utilizzo, i prezzi e le condizioni dei modelli gratuiti possono cambiare: è quindi necessario controllare la scheda del modello e le condizioni del provider prima di basare su di essi un flusso di lavoro.

Modelli gratuiti, sperimentali e disponibilità degli endpoint

Nel panorama dei modelli accessibili tramite gateway possono comparire modelli gratuiti, versioni sperimentali o endpoint che cambiano nel tempo. Nomi e identificativi come quelli di modelli precedentemente disponibili — ad esempio Space Bunny Alpha o modelli indicati come stealth — non devono essere considerati endpoint permanenti.

Prima di utilizzare un modello in uno script è opportuno verificare:

  • che il modello sia ancora presente nel catalogo;
  • che l'endpoint o l'identificativo API siano corretti;
  • che il modello sia effettivamente gratuito e quali limiti siano applicati;
  • la dimensione della finestra di contesto e gli eventuali limiti di output;
  • le condizioni di utilizzo, la privacy e le politiche di conservazione dei dati.

Un modello con una finestra di contesto molto ampia può essere utile per analizzare documenti lunghi, repository di codice o conversazioni articolate. Tuttavia, una finestra di contesto dichiarata non equivale a memoria permanente: il contesto disponibile dipende dalla singola richiesta e dalle funzionalità dell'applicazione che la gestisce.

Usare OpenRouter da riga di comando

Da WSL2 è possibile interagire con un servizio API tramite strumenti standard come curl, Python o applicazioni compatibili con API in formato OpenAI. La chiave API deve essere trattata come una password: non inserirla direttamente nel codice sorgente, nei repository Git o negli screenshot.

Un esempio essenziale con curl è il seguente:

export OPENROUTER_API_KEY="inserisci_la_tua_chiave"

curl https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ID_MODELLO_DISPONIBILE",
    "messages": [
      {
        "role": "user",
        "content": "Spiega in breve i vantaggi di WSL2 per lo sviluppo AI."
      }
    ]
  }'

ID_MODELLO_DISPONIBILE è un segnaposto: va sostituito con l'identificativo esatto di un modello presente nel catalogo OpenRouter. La richiesta può inoltre richiedere parametri o intestazioni aggiuntive in base al modello e alle funzionalità utilizzate.

Per un utilizzo più stabile, è preferibile caricare la chiave da una variabile d'ambiente o da un sistema di gestione dei segreti, evitando di salvarla in file condivisi o versionati.

Docker e container AI su WSL2

Docker è un altro componente importante per chi sviluppa applicazioni AI. I container permettono di isolare dipendenze e servizi, rendendo più semplice riprodurre un ambiente su computer differenti.

Docker Desktop può utilizzare il backend WSL2 e integrarsi con una o più distribuzioni Linux. In alternativa, è possibile adottare una configurazione Docker direttamente nella distribuzione, seguendo la documentazione ufficiale e scegliendo un solo metodo di gestione per evitare conflitti tra installazioni.

Per i container che devono utilizzare una GPU NVIDIA occorre verificare anche la configurazione del NVIDIA Container Toolkit e la compatibilità tra driver, runtime e immagini Docker. La semplice presenza di Docker in WSL2 non abilita automaticamente l'accelerazione GPU.

Risorse hardware e limiti da considerare

Prima di scegliere un modello locale è importante valutare le risorse del computer:

  • RAM: deve essere sufficiente per il sistema, WSL2 e il modello in esecuzione.
  • VRAM: determina in larga misura quali modelli possono essere caricati interamente o parzialmente sulla GPU.
  • CPU: resta importante per la gestione del sistema e per l'inferenza che non viene accelerata dalla GPU.
  • Spazio su disco: i modelli possono occupare diversi gigabyte e richiedere ulteriore spazio per cache e dipendenze.
  • Raffreddamento e consumi: carichi AI prolungati possono mantenere CPU e GPU sotto stress per periodi estesi.

Non esiste un requisito hardware universale: un modello piccolo per test e prototipi può funzionare su un computer comune, mentre modelli più grandi o attività di addestramento possono richiedere GPU e memoria considerevoli.

Conclusioni: WSL2 come ponte tra Windows, Linux e AI

WSL2 rappresenta una soluzione pratica per chi desidera utilizzare gli strumenti Linux senza rinunciare all'ambiente desktop Windows. Il kernel Linux reale, l'integrazione con il filesystem e la possibilità di utilizzare l'accelerazione GPU su configurazioni compatibili lo rendono un ambiente interessante per sviluppatori, data scientist e appassionati di Intelligenza Artificiale.

La scelta tra modelli locali e servizi remoti dipende dagli obiettivi: strumenti come Ollama permettono di sperimentare sul proprio hardware, mentre gateway API come OpenRouter offrono accesso a modelli ospitati da provider differenti. Le due modalità possono anche convivere nello stesso flusso di lavoro.

Il vantaggio più grande di WSL2 è proprio questa flessibilità: un unico computer Windows può diventare un ambiente di sviluppo Linux completo, adatto a sperimentare, integrare e utilizzare strumenti di AI, mantenendo la libertà di scegliere di volta in volta dove eseguire i propri modelli.

Documentazione e approfondimenti


TAG: #wsl2 #ai #linux #windows-11 #cuda #nvidia #ollama