--- license: apache-2.0 base_model: Qwen/Qwen2.5-32B-Instruct tags: - gguf - qwen2.5 - qwen - quantized - llama-cpp - sophia-ai - sophia-metal - edge-ai - jetson - imatrix - tool-calling library_name: llama.cpp model_type: qwen2 quantized_by: Sophia-AI --- # Qwen2.5-32B-Instruct GGUF (imatrix) Versione GGUF ottimizzata di [Qwen2.5-32B-Instruct](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct), quantizzata da **Sophia-AI** con **importance matrix (imatrix)** per inferenza efficiente su GPU consumer e server. Questi sono i modelli ufficiali utilizzati sui nostri progetti. > ๐Ÿง  **Quantizzazione con imatrix**: a differenza delle quantizzazioni standard, queste utilizzano una importance matrix generata su un dataset di calibrazione multilingue e multi-task. Questo preserva i pesi piรน critici del modello durante la compressione, con miglioramenti significativi soprattutto su Q2_K e Q3_K_M. --- ## ๐Ÿ“ฆ File disponibili | File | Quant | Dimensione | Score | Consigliato per | |------|-------|------------|-------|-----------------| | `Qwen2.5-32B-Instruct-F16.gguf` | F16 | ~65 GB | 8/8 โœ… | Massima qualitร  / Fine-tuning | | `Qwen2.5-32B-Instruct-Q8_0.gguf` | Q8_0 | ~34 GB | 8/8 โœ… | GPU con 48+ GB VRAM | | `Qwen2.5-32B-Instruct-Q6_K.gguf` | Q6_K | ~26 GB | 8/8 โœ… | GPU con 32+ GB VRAM | | `Qwen2.5-32B-Instruct-Q5_K_M.gguf` | Q5_K_M | ~23 GB | 8/8 โœ… | GPU con 24+ GB VRAM | | `Qwen2.5-32B-Instruct-Q4_K_M.gguf` | Q4_K_M | ~19 GB | 8/8 โœ… | โญ **Best balance** โ€” GPU 24 GB | | `Qwen2.5-32B-Instruct-Q3_K_M.gguf` | Q3_K_M | ~15 GB | 8/8 โœ… | ๐Ÿ”ฅ GPU 16 GB / Split GPU+CPU | | `Qwen2.5-32B-Instruct-Q2_K.gguf` | Q2_K | ~12 GB | 8/8 โœ… | GPU 16 GB / CPU con 32+ GB RAM | Tutti i quant passano **8/8 test funzionali** โ€” tool calling, JSON output, codice, italiano โ€” senza degradazione rispetto a F16. --- ## ๐Ÿง  Perchรฉ imatrix? La quantizzazione standard tratta tutti i pesi del modello allo stesso modo: li comprime uniformemente. Questo funziona bene per Q8 e Q6, ma a livelli aggressivi (Q3, Q2) i pesi critici per tool calling, JSON strutturato e ragionamento multilingue vengono compressi troppo. **L'importance matrix (imatrix)** risolve questo problema: 1. Eseguiamo un forward pass del modello F16 su un dataset di calibrazione rappresentativo 2. Misuriamo quali pesi si attivano maggiormente (= sono piรน importanti) 3. Durante la quantizzazione, i pesi importanti vengono compressi meno, quelli meno importanti di piรน Il risultato: **Q2_K con imatrix mantiene capacitร  che senza imatrix sarebbero perse**. ### Dataset di calibrazione Il nostro dataset รจ stato costruito specificamente per riflettere i casi d'uso reali di Sophia Metal: | Sezione | Contenuto | Scopo | |---------|-----------|-------| | ๐Ÿ‡ฎ๐Ÿ‡น Italiano (~30%) | Articoli Wikipedia italiani | Preservare capacitร  multilingue | | ๐Ÿ‡ฌ๐Ÿ‡ง Inglese (~30%) | WikiText (train + valid + test) | Baseline linguistica | | ๐Ÿ’ป Codice (~20%) | Python, JavaScript/Next.js, SQL, bash, YAML | Preservare generazione codice | | ๐Ÿ”ง Chat + Tools (~20%) | Conversazioni Qwen2.5 con tool calling, JSON output, multi-turn | Preservare tool calling e output strutturato | La sezione **Chat + Tools** รจ quella piรน critica: include esempi reali di ``, risposte JSON strutturate, tool definitions nei system prompt, parallel tool calls e conversazioni multi-turn. Senza questi pattern nel dataset di calibrazione, i pesi responsabili della generazione di `{"name": "get_weather", "arguments": ...}` verrebbero identificati come poco importanti e compressi troppo. --- ## โœ… Test di qualitร  Tutti i quant sono stati testati con una suite automatizzata che verifica le capacitร  core per l'uso in produzione: ``` Test F16 Q8_0 Q6_K Q5_K_M Q4_K_M Q3_K_M Q2_K โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ JSON output semplice โœ… โœ… โœ… โœ… โœ… โœ… โœ… Tool call - singolo โœ… โœ… โœ… โœ… โœ… โœ… โœ… Tool call - multiplo โœ… โœ… โœ… โœ… โœ… โœ… โœ… Tool call - scelta tool โœ… โœ… โœ… โœ… โœ… โœ… โœ… Tool follow-up โœ… โœ… โœ… โœ… โœ… โœ… โœ… Italiano - coerenza โœ… โœ… โœ… โœ… โœ… โœ… โœ… Codice Python โœ… โœ… โœ… โœ… โœ… โœ… โœ… JSON strutturato complesso โœ… โœ… โœ… โœ… โœ… โœ… โœ… โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Score 8/8 8/8 8/8 8/8 8/8 8/8 8/8 ``` I test verificano: - **Tool calling nativo** (singolo, multiplo, selezione del tool corretto) - **Tool follow-up** (interpretazione della risposta JSON del tool) - **JSON output** (semplice e strutturato complesso con nested arrays) - **Italiano** (coerenza linguistica) - **Codice** (generazione Python con logica corretta) --- ## ๐ŸŽฏ Quale scegliere? ### ๐Ÿ–ฅ๏ธ Desktop / Server GPU | La tua VRAM | Modello consigliato | Note | |-------------|---------------------|------| | 80 GB+ (A100/H100) | Q8_0 o Q6_K | Massima qualitร  | | 48 GB (A6000/RTX 6000 Ada) | Q8_0 | Full offload | | 32 GB (V100) | Q6_K o Q5_K_M | Ottimo compromesso | | 24 GB (RTX 3090/4090) | **Q4_K_M** โญ | Sweet spot | | 16 GB (RTX 4080/4070 Ti) | Q3_K_M o Q2_K | Partial offload consigliato | ### ๐Ÿ”ฅ Multi-GPU / Split GPU+CPU Per chi ha GPU con VRAM limitata ma vuole sfruttare la potenza di un 32B: | Setup | Modello | Note | |-------|---------|------| | 2x RTX 3090/4090 (48 GB tot) | **Q5_K_M** o **Q6_K** | Qualitร  eccellente | | RTX 4090 + CPU offload | **Q4_K_M** โญ | Buon compromesso velocitร /qualitร  | | RTX 4080 16 GB + CPU offload | Q3_K_M | Funziona bene | > ๐Ÿ’ก Usa `n_gpu_layers` per controllare quante layers caricare su GPU. Le layers rimanenti vengono eseguite su CPU. ### ๐Ÿ”ฅ Sophia Metal / Edge Computing (8GB unified memory) > โš ๏ธ Il modello 32B รจ troppo grande per dispositivi edge con 8GB di memoria unificata. > Per edge computing su Sophia Metal, consigliamo [Qwen3-4B-Instruct-2507-GGUF](https://huggingface.co/Sophia-AI/Qwen3-4B-Instruct-2507-GGUF) con Q3_K_M. Per dispositivi edge con **memoria unificata elevata** (32+ GB, es. Apple Silicon M2 Pro/Max/Ultra): | Setup | Modello | Note | |-------|---------|------| | 64 GB unified | **Q4_K_M** โญ | Best balance su Apple Silicon | | 32 GB unified | Q3_K_M o Q2_K | Funziona bene grazie a imatrix | ### ๐Ÿ’ป CPU Only | RAM disponibile | Modello | |-----------------|---------| | 64 GB+ | Q4_K_M | | 48 GB | Q3_K_M | | 32 GB | Q2_K | --- ## ๐Ÿ“ฅ Download ```bash # โญ Consigliato per la maggior parte degli utenti (RTX 3090/4090) huggingface-cli download Sophia-AI/Qwen2.5-32B-Instruct-GGUF \ Qwen2.5-32B-Instruct-Q4_K_M.gguf # ๐Ÿ”ฅ Per GPU 16 GB / Split GPU+CPU huggingface-cli download Sophia-AI/Qwen2.5-32B-Instruct-GGUF \ Qwen2.5-32B-Instruct-Q3_K_M.gguf # Massima qualitร  (48+ GB VRAM) huggingface-cli download Sophia-AI/Qwen2.5-32B-Instruct-GGUF \ Qwen2.5-32B-Instruct-Q6_K.gguf ``` --- ## ๐Ÿš€ Utilizzo ### llama-cpp-python ```python from llama_cpp import Llama llm = Llama.from_pretrained( repo_id="Sophia-AI/Qwen2.5-32B-Instruct-GGUF", filename="*Q4_K_M.gguf", n_ctx=4096, n_gpu_layers=-1, # -1 = tutte le layers su GPU ) response = llm.create_chat_completion( messages=[ {"role": "user", "content": "Ciao, come stai?"} ] ) print(response["choices"][0]["message"]["content"]) ``` ### Tool calling ```python response = llm.create_chat_completion( messages=[ {"role": "user", "content": "What's the weather in Rome?"} ], tools=[{ "type": "function", "function": { "name": "get_weather", "description": "Get weather for a city", "parameters": { "type": "object", "properties": { "city": {"type": "string"} }, "required": ["city"] } } }] ) ``` ### llama.cpp CLI ```bash ./llama-cli -m Qwen2.5-32B-Instruct-Q4_K_M.gguf \ -p "<|im_start|>user\nCiao!<|im_end|>\n<|im_start|>assistant\n" \ -n 256 -ngl 99 ``` ### Ollama ```bash ollama run hf.co/Sophia-AI/Qwen2.5-32B-Instruct-GGUF:Q4_K_M ``` --- ## ๐Ÿ“Š Specifiche modello | Parametro | Valore | |-----------|--------| | **Parametri** | 32.5B | | **Context length** | 131,072 tokens | | **Architettura** | Qwen2.5 | | **Vocab size** | 152,064 | | **Layers** | 64 | | **Attention heads** | 40 | | **KV heads** | 8 (GQA) | --- ## ๐Ÿ”ง Dettagli quantizzazione | Parametro | Valore | |-----------|--------| | **Sorgente** | Qwen2.5-32B-Instruct F16 (convertito da HuggingFace safetensors) | | **Tool** | llama.cpp `llama-quantize` con `--imatrix` | | **imatrix** | Generata con `llama-imatrix`, chunk size 512 | | **Calibration dataset** | ~10MB, multilingue (IT/EN), codice (Python/JS/SQL/bash), chat Qwen2.5 con tool calling | | **GPU per imatrix** | NVIDIA (full GPU offload) | --- ## ๐Ÿ”— Links - **Sophia Metal**: [metal.2sophia.ai](https://metal.2sophia.ai/) - **Sophia AI**: [2sophia.ai](https://2sophia.ai/) - **Modello base**: [Qwen/Qwen2.5-32B-Instruct](https://huggingface.co/Qwen/Qwen2.5-32B-Instruct) --- ## ๐Ÿ“œ Licenza Apache 2.0 โ€” Stesso del modello base Qwen2.5. --- ## ๐Ÿ™ Crediti - **Modello base**: [Qwen Team](https://huggingface.co/Qwen) - **Quantizzazione imatrix + test suite**: [Sophia-AI](https://huggingface.co/Sophia-AI)