# llamacpp-qwen3.5-0.8b Un microservizio Docker standalone basato su `llama.cpp` per eseguire il modello Qwen 3.5 0.8B su GPU AMD (ottimizzato per architettura RDNA3 / gfx1100). Fornisce un'API HTTP nativa, compatibile al 100% con le specifiche OpenAI. Ideale per l'integrazione diretta con n8n e script Python, mantenendo un'architettura a microservizi pulita e priva di wrapper intermedi. ## Prerequisiti - Docker e Docker Compose installati. - GPU AMD con driver ROCm installati e funzionanti sul sistema host. - Accesso ai device `/dev/kfd` e `/dev/dri`. ## Setup (Little Often) 1. **Prepara l'ambiente:** Clona il repository e crea la directory dedicata ai modelli. ```bash mkdir models ``` 2. **Scarica il modello (formato GGUF):** Scarica i pesi quantizzati di Qwen 3.5 0.8B all'interno della cartella `models`. Ad esempio, per la versione Q8_0: ```bash wget [https://huggingface.co/Qwen/Qwen1.5-0.8B-Chat-GGUF/resolve/main/qwen1_5-0_8b-chat-q8_0.gguf](https://huggingface.co/Qwen/Qwen1.5-0.8B-Chat-GGUF/resolve/main/qwen1_5-0_8b-chat-q8_0.gguf) -P ./models/ ``` *Attenzione:* Se scarichi una quantizzazione diversa, aggiorna il nome del file all'interno del parametro `command` nel `docker-compose.yml`. 3. **Build e Avvio:** Lancia il container in background. La prima esecuzione compilerà `llama.cpp` dai sorgenti ottimizzandolo per la tua GPU. ```bash docker compose up --build -d ``` ## Test e Validazione (Double Check) Verifica che il server sia in ascolto e risponda correttamente utilizzando l'endpoint compatibile OpenAI: ```bash curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen", "messages": [ { "role": "system", "content": "Sei un assistente AI utile e conciso." }, { "role": "user", "content": "Quali sono i comandi base di Git?" } ] }' ``` ## Integrazione con n8n Per collegare questo servizio a n8n: 1. Aggiungi un nodo **OpenAI** nel tuo workflow. 2. Nelle impostazioni del nodo (Credentials), imposta l'URL di base dell'API in modo che punti a questo container: `http://:8000/v1` 3. Puoi inserire una stringa fittizia nel campo API Key (es. `sk-xxxx`), poiché il server locale non richiede autenticazione. ## Architettura e Sicurezza (Safety First) - **Isolamento:** Il container esegue esclusivamente il binario `llama-server`. - **Compatibilità RDNA3:** Il `Dockerfile` inietta `HSA_OVERRIDE_GFX_VERSION="11.0.0"` e `AMDGPU_TARGETS="gfx1100"` per forzare la compatibilità della iGPU 780M/RDNA3 con le librerie ROCm. - **Hardware Mapping:** Assicurati che l'utente che esegue Docker abbia i permessi per accedere ai device video (gruppi `render` e `video`).