loading experience

AI

DesireeIA

Il motore di inferenza LLM locale ad alte prestazioni

DesireeIA

L'evoluzione dei modelli di intelligenza artificiale locali ha ridefinito il modo in cui le aziende gestiscono la privacy dei dati e le prestazioni applicative. In questo contesto nasce DesireeIA, un motore di inferenza per Large Language Model (LLM) concepito per l'ecosistema .NET, in grado di eseguire modelli quantizzati direttamente su hardware locale senza alcuna dipendenza da servizi esterni o chiamate di rete.

Attualmente in Versione 0.1 (Beta), il progetto si trova in una fase di sviluppo e stabilizzazione, focalizzandosi sull'ottimizzazione per l'hardware aziendale standard.

Le origini del progetto: Dalla necessità all'indipendenza

Il progetto nasce nel 2023 dall'esigenza concreta di disporre di un motore di inferenza locale di proprietà, ottimizzato per .NET ma strutturato per essere portabile su altri runtime.

Sulla base dell'esperienza maturata nella valutazione di migliaia di modelli in formato GGUF dall'ecosistema Hugging Face, la scelta architetturale è ricaduta sull'implementazione del core nativo in C++17. Questa decisione ha garantito un controllo preciso sulla memoria, le massime prestazioni su hardware convenzionale e una completa portabilità multipiattaforma.

Dopo una fase iniziale, lo sviluppo è ripreso per supportare un assistente IA personale (Kodinn IA, precedentemente noto come Offgrid). Con la maturazione delle librerie interne, DesireeIA è stato scorporato diventando un progetto indipendente.

Architettura a tre livelli

DesireeIA adotta un'architettura modulare progettata per separare la gestione hardware a basso livello dall'interfaccia di programmazione utilizzata dagli sviluppatori:

[ Hardware Probe & Exec Plan ] ──> [ Native C++17 Core (C ABI) ] ──> [ Idiomatic .NET Wrapper (C#) ]
  1. Core Nativo (C++17 / C ABI): Gestisce il profiling dell'hardware, il pianificatore di esecuzione, i kernel di quantizzazione delle matrici, il caricamento dei formati GGUF/safetensors, la gestione della KV cache, i tokenizer (SentencePiece Unigram e byte-level BPE), il sampler e la formattazione dei template di chat.
  2. Layer di adattamento hardware: Profila la macchina all'avvio identificando core fisici della CPU (escludendo i thread hyperthreading per evitare la contesa delle risorse di memoria AVX2), istruzioni SIMD (AVX/AVX2/AVX512/NEON), accelerazione GPU/NPU e RAM disponibile, generando un piano di esecuzione ottimizzato.
  3. Wrapper .NET: Fornisce un'interfaccia C# idiomatica basata sui binding P/Invoke esposti dal layer nativo.

Supporto ad architetture e formati

DesireeIA supporta nativamente i formati GGUF e safetensors (incluso lo streaming di pesi Mixture-of-Experts da disco). Il motore gestisce una vasta gamma di architetture tramite un sistema a quirks comportamentali:

  1. Transformer Densi: Gemma (1, 2, 3), Qwen (1, 2, 3), Mistral, Llama e derivati (InternLM2, Exaone, SmolLM3, Baichuan, ecc.), Starcoder2, Nemotron, Olmo2, Cohere2, Falcon, GPT-2, BLOOM, MPT.
  2. Architetture Ibride e Speciali:
  3. Spark2_5: Attention con sliding-window ibrida, dual RoPE e fused QKV.
  4. DeepSeek2: Multi-head Latent Attention (MLA) con cache KV compressa e Mixture-of-Experts (MoE) con gating a sigmoide e scaling YaRN.
  5. Mamba2: Modello a stati nello spazio (SSM) puro con scansione selettiva e stato ricorrente a dimensione costante.
  6. BERT: Encoder-only con attenzione bidirezionale.
  7. Multimodalità (Visione): Quando un modello GGUF include metadati clip.vision.*, il modulo encoder per immagini viene caricato automaticamente. Il modello è in grado di comprendere e analizzare immagini iniettando i vettori di embedding nel token placeholder.

Prestazioni ed esecuzione GPU: Benchmark CUDA

L'accelerazione CUDA in DesireeIA è direttamente integrata nella libreria nativa, senza richiedere dipendenze esterne al di fuori dei driver NVIDIA installati.

I pesi quantizzati dei modelli più comuni (Q4_0, Q4_1, Q8_0, Q4_K, Q5_K, Q6_K) dispongono di kernel dedicati ad esecuzione diretta su GPU, evitando qualsiasi passaggio intermedio di dequantizzazione in RAM. L'intera sequenza di layer del transformer viene gestita tramite CUDA Graph, consentendo l'elaborazione dei token con un singolo passaggio Host/Device per token.

Test comparativo su laptop enterprise

Di seguito sono riportati i dati rilevati su una GPU di classe laptop (NVIDIA RTX 1000 Ada 6 GB, bus a 96-bit, bandwidth reale registrata 164 GB/s):

ModelloQuantizzazioneCPU DecodeCUDA DecodeSpeedup
Gemma 2B ITQ4_K_M27.2 tok/s~80 tok/s2.9x
Spark-X2.5 4BQ4_K_M17.2 tok/s~50 tok/s2.9x

Nota di confronto: Mentre i motori di inferenza tradizionali registrano mediamente circa 30 tok/s sullo stesso hardware, DesireeIA ha raggiunto quasi 80 tok/s su modello Gemma 2B, mantenendo identiche impostazioni termiche e di alimentazione.

Funzionalità avanzate e ottimizzazioni di memoria

DesireeIA integra diverse soluzioni tecniche per contesti con risorse ridotte:

  1. Storage Tiering (SSD Streaming): Permette di eseguire modelli di dimensioni superiori alla memoria RAM disponibile leggendo i pesi direttamente da disco SSD tramite una cache LRU integrata.
  2. Adattatori Recover-LoRA: Consente di applicare adattatori LoRA a runtime al di sopra di un modello base quantizzato, recuperando la perdita di qualità dovuta alla quantizzazione senza alterare i pesi originali.
  3. Prerouter Prediction per MoE: Implementa algoritmi di predizione per anticipare il caricamento degli esperti dei layer successivi durante l'esecuzione di modelli Mixture-of-Experts.
  4. Memory Locking (MLOCK): Supporta il blocco in memoria fisica (VirtualLock su Windows, mlock su Linux/macOS) dei tensor più critici per prevenire fenomeni di paging su disco.

Ecosistema: Python Server e Web UI

Per estendere l'interoperabilità oltre l'ambiente C#/.NET, il progetto include la componente DesireeIAServer, un server FastAPI che espone un'API compatibile con lo standard OpenAI (/v1/chat/completions, /v1/embeddings, ecc.) e un’interfaccia grafica web standalone.

Bash


# Installazione tramite PyPI
pip install desireeia-server

# Avvio del server con modello GGUF
desireeia-server --model /percorso/modello.gguf --port 8080

Caratteristiche del Server:

  1. Router Mode: Rilevamento e caricamento dinamico di modelli da una cartella dedicata con gestione automatica del ciclo di vita in VRAM.
  2. Tool Calling e Sandbox: Supporto alla chiamata di funzioni (ricerca web, meteo) ed esecuzione di codice Python in ambiente protetto.


Galleria
Commenti (0)

Nessun commento ancora.

Lascia un commento