Scopri YOLO26: vision AI di prossima generazione.
Ultralytics
Ultralytics YOLO

Come in Ultralytics rendiamo i modelli YOLO più veloci sul tuo chip preferito

Come Ultralytics ottimizza i modelli YOLO per la velocità su CPU, GPU e dispositivi edge. Spiegheremo chip, memoria e tecniche intelligenti come quantizzazione, fusione e pruning.

FRFrancesco Mattioli
8 min read
Ottimizzazione dei modelli YOLO su CPU, GPU e chip edge

In Ultralytics creiamo modelli di computer vision; in pratica, insegniamo ai computer a vedere! Pensa a questi modelli come a gigantesche ricette matematiche. Sono composti da operazioni (che chiamiamo livelli) e da un'enorme mole di numeri che chiamiamo pesi.

I nostri modelli Ultralytics YOLO elaborano le immagini per quello che sono realmente: array di numeri! Ogni pixel è solo un insieme di valori di colore, la quantità di Rosso, Verde e Blu (ovvero RGB) per ogni singolo punto che compone l'immagine. Chiamiamo questi array di numeri "tensori" perché suona molto meglio di "matrici multidimensionali", che a sua volta suona meglio di "numeri impilati su numeri impilati su numeri".

Quando fornisci un'immagine al nostro modello, questa intraprende un viaggio epico attraverso la rete. Immagina il tuo tensore che surfa attraverso un livello dopo l'altro, venendo trasformato, convoluto e matematicamente stravolto nel modo più bello possibile. Pensala come a una festa da ballo dove i numeri si mescolano e interagiscono, estraendo l'essenza di ciò che rende un gatto un gatto o un'auto un'auto. Chiamiamo questo processo estrazione delle caratteristiche.

Cosa ne esce alla fine? Altri numeri! Numeri significativi. Nelle attività di rilevamento, ti dicono esattamente dove si trovano gli oggetti nella tua immagine e cosa sono probabilmente. "Ehi, c'è una probabilità del 95% che quello sia un cane alle coordinate (x, y)!" Chiamiamo questo magico processo inferenza.

Ora, prima che i nostri modelli possano compiere la loro magia, devono andare a scuola; devono essere addestrati. La parte dell'addestramento è dove le cose si fanno intense.

Durante l'addestramento, ogni volta che presentiamo un'immagine alla rete, non otteniamo solo una risposta. Eseguiamo due operazioni estremamente gravose. Primo, calcoliamo quanto la rete ha sbagliato (lo chiamiamo loss, sostanzialmente la distanza dal centro del bersaglio). Secondo, e questa è la parte importante, aggiorniamo ogni singolo numero (o peso) nella rete in base a tale loss. Immaginalo come regolare migliaia di piccole manopole tutte in una volta, dove ogni regolazione è calcolata per rendere la rete più precisa ogni volta.

Stiamo essenzialmente addestrando la rete attraverso la correzione: ogni errore le insegna cosa NON fare, e modifichiamo tutti quei pesi in modo che, quando vedrà di nuovo un'immagine simile, si avvicinerà alla risposta corretta. In sostanza, la rete impara venendo spinta nella direzione giusta, errore dopo errore, finché non inizia ad azzeccare le previsioni.

Di quanti numeri stiamo parlando? Beh, il nostro piccolo e grazioso YOLO11n ha qualche milione di parametri. Ma YOLO11x? Quel mostro vanta oltre 50 milioni di parametri! Più parametri significano più dettagli che puoi codificare, come la differenza tra disegnare con i pastelli o avere a disposizione l'intera tavolozza di un artista.

Durante l'inferenza, questo conteggio dei parametri diventa cruciale. Eseguire una rete da 3 milioni di parametri è come fare jogging intorno all'isolato. Eseguire una rete da 50 milioni di parametri? È più come correre una maratona mentre si gioca con torce infuocate.

Quindi cos'È esattamente il calcolo? Come avviene concretamente tutto questo elaborare di numeri? Come lo rendiamo più veloce? E cosa significa anche solo "ottimizzare il calcolo"?

Link to this sectionCome i chip eseguono i calcoli#

Il calcolo avviene tramite i chip. Questi piccoli quadrati di silicio sono fondamentalmente i castelli di sabbia più organizzati dell'universo. Ogni singola operazione che il tuo computer compie, ogni addizione, ogni confronto, ogni "se questo allora quello", è scolpito fisicamente nel silicio. Ci sono circuiti fisici reali in aree specifiche del chip dedicate all'aggiunta di numeri e altri per le operazioni logiche. È come avere una minuscola città in cui quartieri diversi si specializzano in diversi tipi di matematica.

Questo probabilmente suona bizzarro, anche se sei un informatico. È perché abbiamo passato gli ultimi 40 anni a costruire strati su strati di astrazione, come una lasagna tecnologica diventata così alta che non riusciamo nemmeno più a vedere la teglia di base. Abbiamo semplificato le cose così tanto che la maggior parte dei programmatori oggi non ha idea di come avvenga effettivamente il calcolo nel silicio. Non per loro colpa, ma per design!

Sbucciamo questi strati. Prendi questo semplicissimo codice Python:

x = 1
if x == 1:
    y = x + 1

Stiamo creando una variabile x, impostandola a 1, e se x è uguale a 1 (spoiler: lo è), creiamo y con il valore di x più 1. Tre righe. Facile.

Ma qui è dove diventa interessante. Tra quelle tre righe innocenti e gli elettroni che si muovono fisicamente attraverso il silicio, avvengono ALMENO quattro enormi strati di traduzione (in realtà ce ne sono di più, ma il nostro Digital Content Manager dice che il mio conteggio delle parole le sta già causando ansia). Lascia che ti accompagni in questo viaggio strabiliante:

Livello 1: Python → Bytecode Innanzitutto, Python legge il tuo codice e lo compila in qualcosa chiamato bytecode, un linguaggio intermedio più facile da digerire per i computer ma che ti farebbe sanguinare gli occhi se provassi a leggerlo.

Livello 2: Bytecode → Codice Macchina L'interprete Python (come CPython) prende quel bytecode e lo traduce in codice macchina, le istruzioni effettive che il tuo processore comprende. È qui che il tuo elegante "if x == 1" diventa qualcosa come "CARICA registro, CONFRONTA registro, SALTA se flag zero impostato".

Livello 3: Codice Macchina → Microcodice Colpo di scena! I processori moderni non eseguono nemmeno direttamente il codice macchina. Lo scompongono ulteriormente in microcodice, operazioni ancora più minuscole che i componenti interni del chip possono gestire. La tua singola istruzione "ADD" potrebbe diventare molteplici micro-operazioni.

Livello 4: Microcodice → Elettronica Fisica Finalmente, arriviamo al silicio. Quelle micro-operazioni innescano segnali elettrici reali che scorrono attraverso i transistor. Miliardi di minuscoli interruttori si accendono e si spengono, gli elettroni danzano attraverso percorsi progettati con cura e, in qualche modo, magicamente, 1 + 1 diventa 2.

Ogni livello esiste per nascondere l'insana complessità del livello sottostante. È come quelle matrioske russe, solo che ogni bambola parla una lingua completamente diversa e la bambola più piccola è fatta letteralmente di fulmini intrappolati nella sabbia.

L'ironia? Quelle tre righe di Python probabilmente attivano MILIONI di interruttori a transistor. Ma grazie a queste astrazioni, non hai bisogno di pensare a nulla di tutto ciò. Scrivi semplicemente "y = x + 1" e confidi che da qualche parte, nel profondo del silicio, la magia accada.

Link to this sectionL'architettura#

Ogni singola operazione è implementata fisicamente nel silicio e il DOVE accade sul chip dipende interamente dalla topologia del chip. È come la pianificazione urbana, ma per gli elettroni. Il sommatore vive qui, il moltiplicatore vive là, e tutti devono comunicare tra loro in modo efficiente.

Abbiamo centinaia di chip diversi sul mercato, ognuno progettato per scopi diversi. Cosa cambia tra loro? La topologia, come le operazioni sono posizionate e implementate nel dominio fisico. Questo è ciò che chiamiamo architettura, e ragazzo, ne abbiamo un sacco:

  • x86 (Intel e AMD) - Il nonno del desktop computing, complesso ma potente
  • ARM - Alimenta il tuo telefono e sempre più spesso il tuo portatile, progettato per l'efficienza
  • RISC-V - Il ribelle open-source, che guadagna terreno ovunque
  • PowerPC - La bestia di IBM, ancora in funzione in console di gioco e server
  • MIPS - Il preferito accademico, semplice ed elegante
  • SPARC - Il contributo di Sun Microsystems (ora Oracle) all'high-performance computing
  • Architetture GPU (CUDA cores di NVIDIA, RDNA di AMD) - Mostri dell'elaborazione parallela

Ogni architettura non solo dispone i propri transistor in modo diverso, ma parla anche una lingua diversa. Le astrazioni che usiamo per inviare istruzioni a queste macchine sono completamente differenti. È come dover scrivere indicazioni stradali per qualcuno, ma a seconda della sua auto, potresti aver bisogno di scrivere in francese, mandarino o danza interpretativa.

Link to this sectionIl battito cardiaco del silicio#

Il carburante dei nostri chip sono gli elettroni, l'elettricità che scorre nel chip fornendo l'energia per il calcolo. Ma l'energia da sola non basta. Affinché un chip funzioni davvero, per spostare i dati attraverso la sua intricata topologia, tutto dipende da un componente critico: il clock. È ciò che fa scorrere gli elettroni attraverso percorsi specifici in momenti specifici. Senza di esso, avresti solo silicio alimentato che non fa nulla.

Immagina di provare a coordinare una performance massiccia in cui miliardi di componenti devono muoversi in perfetta sincronia. Senza un battito, sarebbe il caos. Questo è esattamente ciò che fa il clock per il tuo processore. È un cristallo che vibra a un ritmo incredibilmente costante, inviando impulsi elettrici miliardi di volte al secondo.

Quando senti "processore da 3.5 GHz", quel GHz (gigahertz) è la velocità di clock, 3.5 miliardi di battiti al secondo. Ogni battito è chiamato ciclo di clock, ed è l'unità fondamentale del tempo nell'informatica.

NON succede NULLA tra i cicli di clock. L'intero computer si blocca, in attesa del prossimo battito. È come il gioco più estremo dell'universo di "un, due, tre, stella!". Ad ogni "via libera" (impulso di clock):

  • I dati si spostano tra i componenti
  • I calcoli vengono eseguiti
  • Le decisioni logiche vengono prese
  • La memoria viene letta o scritta

Alcune operazioni richiedono un ciclo (una semplice addizione), mentre altre ne richiedono molti (una divisione o il recupero di dati dalla RAM). È coreografato con precisione, miliardi di componenti che eseguono le loro operazioni specifiche, tutte sincronizzate con questo battito implacabile.

Puoi fare overclocking al tuo processore facendo vibrare il cristallo più velocemente; tutto accade più velocemente, ma genera anche più calore, diventando meno stabile. Spingiti troppo oltre e il tuo computer va in crash perché gli elettroni non riescono letteralmente a stare al passo con il battito.

Ai vecchi tempi, queste operazioni venivano implementate con macchine grandi quanto stanze. Ma i componenti che svolgono tutto questo calcolo sono straordinariamente semplici: sono solo interruttori. Interruttori di accensione/spegnimento.

Collega abbastanza di questi interruttori insieme nel modello giusto e avrai il calcolo. L'intera rivoluzione digitale si riduce a un sofisticato sistema di interruttori.

Questa semplicità significa che se hai degli interruttori, qualsiasi tipo di interruttore, puoi costruire un computer. La gente ha costruito computer funzionanti con tubi dell'acqua e valvole, tessere del domino, mattoncini LEGO, biglie e persino con la redstone in Minecraft.

I principi non sono cambiati dagli anni '40. Siamo solo diventati incredibilmente bravi a rendere gli interruttori estremamente piccoli. Il tuo telefono ha più potenza di calcolo di tutti i computer che hanno mandato l'uomo sulla luna, e sta in tasca perché abbiamo capito come realizzare interruttori a scala atomica.

Quando eseguiamo reti neurali con milioni di parametri, stiamo attivando questi minuscoli interruttori miliardi di volte al secondo, tutto perfettamente sincronizzato con quel battito cristallino. Ogni aggiornamento dei pesi, ogni moltiplicazione di matrici, ogni funzione di attivazione, marciano tutti al ritmo del clock.

Non c'è da stupirsi che l'addestramento dei modelli faccia sembrare che il tuo computer stia cercando di decollare!

Link to this sectionFar andare le Reti Neurali al massimo (BRRRRR)#

Bene, abbiamo questi chip con miliardi di interruttori che danzano al ritmo di un cristallo, e vogliamo far girare reti neurali con milioni di parametri su di essi. Dovrebbe essere facile, giusto? Lancia solo i numeri al chip e lascialo correre!

Far correre le reti neurali velocemente è come cercare di cucinare un pasto di cinque portate in una cucina dove il frigorifero è a tre isolati di distanza, hai solo una padella e ogni ingrediente pesa 500 libbre. La matematica in sé non è il problema principale; è tutto il resto.

Link to this sectionIl disallineamento dell'architettura#

La maggior parte dei chip è stata progettata per far girare Microsoft Word, non reti neurali. La tua CPU è stata costruita pensando che avrebbe passato la vita a eseguire if-statement, cicli e occasionalmente a calcolare le tue tasse (l'unico calcolo che persino i supercomputer trovano emotivamente estenuante). È ottimizzata per operazioni sequenziali: fai questo, poi quello, poi l'altra cosa.

Ma le reti neurali sono completamente diverse. Vogliono fare TUTTO IN UNA VOLTA. Durante l'addestramento, stai aggiornando milioni di pesi in base a quanto erano sbagliate le tue previsioni. Durante l'inferenza (usando effettivamente il modello addestrato), stai spingendo i dati attraverso milioni di calcoli simultaneamente. Immagina di dover moltiplicare un milione di numeri per un altro milione di numeri. La tua CPU, poverina, vuole farli uno alla volta, come un contabile molto veloce ma molto metodico.

Questo è il motivo per cui le GPU sono diventate la spina dorsale del calcolo AI. Le GPU sono state progettate per i videogiochi, dove devi calcolare il colore di milioni di pixel simultaneamente. Si scopre che calcolare i colori dei pixel ed eseguire la matematica delle reti neurali sono sorprendentemente simili: entrambi implicano l'esecuzione della stessa operazione su enormi quantità di dati in parallelo.

Ma anche le GPU non sono perfette per le reti neurali. Ecco perché le aziende ora stanno costruendo chip AI specializzati (TPU, NPU e ogni altro acronimo che finisce in PU). Questi chip sono progettati fin dalle fondamenta con un unico compito: far andare veloci le reti neurali. Sono come assumere uno chef che sa cucinare solo un piatto, ma lo cucina a velocità sovrumana. Mentre la tua CPU fatica con le operazioni di matrice in sequenza e la tua GPU le gestisce abbastanza bene in parallelo, questi chip specializzati mangiano matrici a colazione, pranzo e cena.

Link to this sectionIl muro della memoria (O: Perché spostare Bit è più difficile che fare calcoli)#

Nel moderno calcolo delle reti neurali, spendiamo più tempo ed energia a SPOSTARE dati che a CALCOLARE effettivamente con essi.

Pensa al chip del tuo computer come a un matematico brillante che lavora alla velocità della luce, ma tutti i suoi libri di riferimento sono conservati in edifici diversi in giro per la città. Possono risolvere qualsiasi equazione istantaneamente, ma prima devono recuperare i numeri, e quel viaggio richiede un'eternità.

Il tuo chip può moltiplicare due numeri in un ciclo di clock (ricorda, è uno di quei miliardi di battiti al secondo). Velocissimo! Ma recuperare quei numeri dalla memoria al chip? Potrebbe richiedere CENTINAIA di cicli. È come se il tuo matematico potesse risolvere un problema in un secondo, ma avesse bisogno di cinque minuti per andare in biblioteca e tornare.

Il motivo è la distanza (e lo spazio). L'elettricità si muove velocemente, ma non infinitamente veloce. Più lontano devono viaggiare i dati sul chip, più tempo ci vuole. I progettisti di computer hanno risolto questo creando una gerarchia di memoria, come avere più posizioni di archiviazione a distanze diverse:

  • Registri (integrati direttamente nelle unità di calcolo): La scrivania del tuo matematico. Accesso istantaneo! Ma è minuscola, puoi tenere solo circa 32 numeri qui. È come avere dei post-it proprio davanti a te.
  • Cache L1 (a micrometri di distanza): Lo scaffale nell'ufficio. Ci vogliono 3-4 cicli per afferrare qualcosa. Qui, puoi far stare alcune migliaia di numeri.
  • Cache L2 (a millimetri di distanza): Lo schedario in corridoio. Richiede 10-15 cicli e può contenere alcuni milioni di numeri.
  • Cache L3 (attraverso il chip): Il magazzino al piano di sotto. Richiede 30-50 cicli, contenendo decine di milioni di numeri.
  • RAM (su un chip completamente diverso): Il magazzino dall'altra parte della città. Richiede 100-300 cicli. È qui che vivono i tuoi miliardi di numeri.
  • SSD/Hard Drive (collegato via cavi): Un'altra città interamente. Richiede milioni di cicli. Archiviazione massiccia, velocità glaciale.

Le strutture esatte variano, il chip del tuo telefono potrebbe saltare la cache L3, mentre una CPU server potrebbe averne enormi quantità. Il principio, tuttavia, rimane lo stesso: la memoria più vicina è più veloce ma più piccola.

Ora qui è dove diventa doloroso per le reti neurali. Immagina che il tuo modello Ultralytics YOLO abbia 50 milioni di parametri (ChatGPT ne ha miliardi, a proposito). Sono 50 milioni di numeri che devono viaggiare dalla memoria alle unità di calcolo e ritorno. Anche se ogni numero fosse di soli 4 byte, sono 200 megabyte di dati che devono passare attraverso il tuo sistema.

Il chip potrebbe elaborare ogni numero in un singolo ciclo, ma se ci vogliono 100 cicli per recuperare quel numero dalla RAM, stai spendendo il 99% del tuo tempo ad aspettare la consegna. È come avere un'auto da corsa di Formula 1 bloccata nel traffico. Tutta quella potenza di calcolo, seduta lì, in attesa che arrivino i dati.

Ecco l'intuizione cruciale: questo è IL collo di bottiglia del calcolo moderno. Si chiama collo di bottiglia di von Neumann. Rendere i chip più veloci nella matematica è relativamente facile. Rendere la memoria più veloce significa colpire limiti fisici. Questo è il motivo per cui quasi TUTTA l'ottimizzazione delle prestazioni nell'AI avviene a livello di memoria. Quando gli ingegneri velocizzano le reti neurali, raramente rendono la matematica più veloce; trovano modi intelligenti per spostare meno dati, memorizzarli meglio o accedervi in modo più intelligente.

I moderni chip AI non si concentrano solo sulla velocità di calcolo; sono ossessionati dalla larghezza di banda della memoria e dalle strategie di movimento dei dati. Recuperano i dati in anticipo, riutilizzano i valori già nella cache e organizzano i calcoli per ridurre al minimo i viaggi in memoria. I vincitori nella corsa all'hardware AI non sono quelli con i calcolatori più veloci; sono quelli che hanno capito come mantenere quei calcolatori nutriti di dati. L'intero gioco riguarda l'ottimizzazione dei modelli di accesso alla memoria.

Ogni volta che sposti un bit di dati, bruci energia. Non molta, stiamo parlando di picojoule, ma quando sposti terabyte al secondo, si somma VELOCEMENTE. Infatti, spostare dati di 1 mm attraverso un chip consuma più energia che fare il calcolo effettivo!

Questo è il motivo per cui il tuo portatile sembra un motore a reazione quando addestra reti neurali. Non è la matematica che genera calore; è il movimento dei dati. Ogni aggiornamento dei parametri, ogni calcolo del gradiente, ogni passaggio in avanti sta letteralmente scaldando la tua stanza.

Gli acceleratori AI moderni sono fondamentalmente esercizi di termodinamica. Quanto calcolo possiamo stipare prima che il chip si sciolga? Quanto velocemente possiamo allontanare il calore? È come l'overclocking, ma il clock è sempre al massimo e stiamo solo cercando di non appiccare un incendio.

Link to this sectionLa soluzione? Progettazione consapevole dell'architettura#

Le reti neurali più veloci non sono necessariamente le più intelligenti, sono quelle progettate pensando ai chip. Esse:

  • Mantengono i dati locali il più possibile
  • Riutilizzano i calcoli ossessivamente
  • Si allineano perfettamente alle capacità hardware
  • Riducono al minimo il movimento di memoria a tutti i costi

È come la differenza tra una ricetta che dice "usa ingredienti del tuo negozio locale" rispetto a una che richiede di importare spezie dal Tibet, formaggio dalla Francia e acqua dall'Antartide. Entrambe potrebbero essere buone, ma una è decisamente più pratica.

Ed è per questo che rendere veloci le reti neurali è una forma d'arte. Non basta avere una buona matematica; devi capire l'hardware, rispettare la gerarchia della memoria e danzare perfettamente con l'architettura.

Benvenuto nel mondo in cui l'informatica incontra la fisica, l'ingegneria e la pura magia. Dove spostare un numero costa più che farci calcoli. Dove il parallelo è veloce, ma la sincronizzazione è la morte. Dove il tuo più grande nemico non è la complessità, è la distanza.

Link to this sectionCome rendiamo YOLO più veloce#

Quando addestri un modello YOLO, ottieni una rete neurale che funziona magnificamente sulla tua configurazione di addestramento. Ma ecco il punto: la tua GPU da gioco, il tuo iPhone e quel minuscolo chip in una telecamera di sicurezza parlano lingue completamente diverse. Hanno punti di forza diversi, debolezze diverse e idee molto diverse su come elaborare i dati.

Pensala in questo modo: una GPU ha migliaia di core che possono lavorare tutti simultaneamente – è costruita per l'elaborazione parallela. Nel frattempo, un chip mobile potrebbe avere circuiti speciali progettati specificamente per operazioni AI, ma può gestire solo determinati tipi di matematica. E quel dispositivo edge nella tua telecamera del campanello? Sta cercando di far girare l'AI con un budget energetico inferiore a quello di una lampadina LED.

In Ultralytics, supportiamo oltre una dozzina di formati di esportazione diversi perché ognuno è ottimizzato per hardware diverso. Non si tratta di avere troppe opzioni. Si tratta di avere l'opzione giusta per le TUE esigenze specifiche.

Link to this sectionFusione di operazioni: Fare di più con meno#

Nel modello YOLO originale, molte operazioni avvengono in sequenza. Ad esempio, potremmo fare una convoluzione, poi normalizzare i risultati, quindi applicare una funzione di attivazione. Sono tre passaggi separati, ognuno dei quali richiede le proprie letture e scritture in memoria.

Ma ecco il trucco intelligente: possiamo combinare queste operazioni in un unico passaggio. Quando esportiamo YOLO per il deployment, fondiamo insieme queste operazioni. Invece di:

  1. Calcolare la convoluzione → Salvare in memoria
  2. Caricare dalla memoria → Normalizzare → Salvare in memoria
  3. Caricare dalla memoria → Applicare l'attivazione → Salvare in memoria

Facciamo:

  1. Calcolare convoluzione + normalizzazione + attivazione → Salvare in memoria

Per un tipico modello YOLO che elabora un'immagine 640×640, questo semplice trucco elimina gigabyte di trasferimenti di memoria non necessari. Su un telefono cellulare, questa è la differenza tra un rilevamento fluido in tempo reale e un fastidioso lag.

Link to this sectionUsare numeri più piccoli: La magia della quantizzazione#

YOLO non ha effettivamente bisogno di numeri super precisi per rilevare gli oggetti in modo accurato. Durante l'addestramento, usiamo 32 bit per rappresentare ogni peso – è come usare una calcolatrice scientifica per misurare gli ingredienti di un panino. Per il deployment effettivo? 8 bit funzionano perfettamente.

Questa si chiama quantizzazione ed è una delle nostre tecniche di ottimizzazione più potenti. Usando numeri più piccoli:

  • Il modello si riduce del 75% (da 200MB a 50MB per Ultralytics YOLO11x)
  • Funziona 2-4 volte più velocemente sulla maggior parte dei dispositivi
  • Consuma molta meno energia (la batteria del tuo telefono ti ringrazia)

Non tutti i livelli in YOLO sono ugualmente sensibili a questa riduzione. I primi livelli che rilevano bordi e forme di base? Sono robusti: possiamo usare numeri a 8 bit senza problemi. I livelli di rilevamento finali che determinano "è un gatto o un cane?" necessitano di un po' più di precisione. Quindi regoliamo la precisione livello per livello, usando solo i bit necessari per mantenere l'accuratezza massimizzando al contempo la velocità.

Abbiamo scoperto che con un'attenta quantizzazione, Ultralytics YOLO mantiene il 99,5% della sua accuratezza originale mentre funziona 3 volte più velocemente sui telefoni. Questa è la differenza tra un modello di ricerca e qualcosa che puoi effettivamente usare nel mondo reale.

Link to this sectionScegliere l'algoritmo migliore#

Esistono dozzine di modi diversi per eseguire la stessa operazione matematica. Una semplice convoluzione (l'operazione principale in YOLO) può essere calcolata usando algoritmi completamente diversi, e la scelta migliore dipende dal tuo hardware specifico e dalle dimensioni dell'input.

Quando esportiamo YOLO, il nostro framework di ottimizzazione testa diversi algoritmi e sceglie il più veloce per il tuo caso specifico. È come avere più percorsi verso la stessa destinazione e scegliere in base alle condizioni del traffico attuale. Su una GPU, potremmo usare un algoritmo che elabora molti pixel contemporaneamente. Su una CPU, potremmo usarne uno ottimizzato per l'elaborazione sequenziale. La matematica è la stessa, ma la strategia di esecuzione è completamente diversa.

Link to this sectionMemoria: Il collo di bottiglia nascosto#

Ricordi quando abbiamo parlato della memoria come vero collo di bottiglia nell'informatica moderna? Questo è particolarmente vero per YOLO. Il modello potrebbe avere 50 milioni di parametri e, durante l'inferenza, crea gigabyte di risultati intermedi. Spostare tutti questi dati è spesso più lento dell'effettivo calcolo.

Usiamo diversi trucchi per ridurre al minimo lo spostamento di memoria:

Smart Scheduling: Organizziamo le operazioni in modo che i dati vengano usati immediatamente mentre sono ancora nella memoria cache veloce. Per la feature pyramid network di YOLO, questo riduce il traffico di memoria del 40%.

Tiling: Invece di elaborare un'intera immagine in una volta, la dividiamo in riquadri più piccoli che entrano nella cache. Ciò significa che il processore può lavorare con memoria locale veloce invece di recuperare costantemente dalla memoria principale lenta.

Buffer Reuse: Invece di creare costantemente nuova memoria per i risultati intermedi, riutilizziamo gli stessi buffer di memoria. È incredibilmente efficiente: l'intero backbone di YOLO può funzionare con solo una serie di buffer riutilizzabili.

Link to this sectionPruning: Meno è meglio#

Ecco un fatto sorprendente: i modelli YOLO sono spesso sovraprogettati. Possiamo rimuovere il 30% dei canali in molti livelli praticamente senza alcun impatto sull'accuratezza. Questo non serve solo a rendere il modello più piccolo, lo rende anche più veloce, perché ci sono letteralmente meno calcoli da eseguire.

Il processo è elegante: analizziamo quali parti della rete contribuiscono meno ai risultati di rilevamento finali, le rimuoviamo e poi ottimizziamo il modello per compensare. Un modello YOLO11m sottoposto a pruning può essere il 30% più veloce mantenendo il 99% della sua accuratezza originale. Sui dispositivi a batteria, questo guadagno di efficienza può significare ore di autonomia extra.

Link to this sectionAccelerazione hardware: Sfruttare i punti di forza di ogni chip#

Processori diversi sono bravi in cose diverse e le differenze di prestazioni sono sbalorditive. Lo stesso modello YOLO11n impiega:

  • 45 millisecondi per frame su una moderna CPU Intel
  • 4 millisecondi su una GPU NVIDIA RTX
  • 22 millisecondi su un processore per telefoni di fascia alta
  • 15 millisecondi su un Google Coral edge TPU

Queste non sono solo differenze di velocità dovute alle frequenze di clock: riflettono differenze architetturali fondamentali. Le GPU hanno migliaia di core che lavorano in parallelo, perfetti per le convoluzioni di YOLO. Le NPU mobili hanno circuiti specializzati progettati specificamente per le reti neurali. Le CPU sono tuttofare, flessibili ma non specializzate.

La chiave dell'ottimizzazione è abbinare le operazioni di YOLO a ciò che ogni chip sa fare meglio. Una GPU ama eseguire la stessa operazione su molti dati contemporaneamente. Una NPU mobile potrebbe supportare solo determinate operazioni ma le esegue in modo incredibilmente efficiente. Una edge TPU funziona solo con interi a 8 bit ma raggiunge una velocità notevole entro tale vincolo.

Link to this sectionLa magia della compilazione#

Quando esporti un modello YOLO, accade qualcosa di straordinario dietro le quinte. Non convertiamo solo il formato del file: compiliamo effettivamente il modello specificamente per il tuo hardware di destinazione. È come la differenza tra Google Translate e un madrelingua. Il processo di compilazione:

  1. Analizza il tuo modello per comprenderne la struttura e i requisiti
  2. Considera le capacità del tuo hardware: cosa sa fare bene e su cosa incontra difficoltà
  3. Genera codice ottimizzato che parla la lingua nativa del tuo hardware

Il compilatore potrebbe riorganizzare le operazioni per utilizzare meglio la cache del tuo processore, selezionare istruzioni specializzate supportate dal tuo chip o persino utilizzare l'apprendimento automatico per trovare la migliore strategia di ottimizzazione. Sì, stiamo usando l'IA per ottimizzare l'IA: il futuro è qui!

Questo passaggio di compilazione può fare una differenza di 10 volte nelle prestazioni. Lo stesso modello YOLO potrebbe trascinarsi con codice generico ma volare con istruzioni adeguatamente ottimizzate.

Link to this sectionDistribuzione edge nel mondo reale#

Parliamo di cosa succede quando YOLO incontra il mondo reale, in particolare il mondo impegnativo dei dispositivi edge. Immagina una telecamera di sicurezza che deve eseguire YOLO 24 ore su 24, 7 giorni su 7 per il rilevamento di oggetti. Affronta vincoli brutali:

  • Memoria: Magari solo da 512MB a 2GB di RAM totali
  • Potenza: Spesso solo 2-5 watt (meno di un caricabatterie per telefono)
  • Raffreddamento: Nessuna ventola, solo dissipazione passiva del calore
  • Affidabilità: Deve funzionare continuamente senza arresti anomali

Ecco cosa ottiene l'ottimizzazione nella pratica. Una telecamera di sicurezza che esegue YOLO11s:

  • Modello originale: 15 watt, funziona a 85°C, raggiunge 20 FPS
  • Ottimizzato con quantizzazione e pruning: 3 watt, confortevoli 45°C, raggiunge 25 FPS

Abbiamo ridotto il consumo energetico dell'80% migliorando effettivamente le prestazioni! Questa è la differenza tra un dispositivo che si surriscalda e scarica le batterie rispetto a uno che funziona in modo affidabile per anni.

La chiave è scegliere i giusti compromessi. Sui dispositivi edge, spesso:

  • Usiamo la quantizzazione INT8 (meno precisione, molta meno potenza)
  • Elaboriamo meno frame quando l'attività è bassa
  • Distribuiamo il lavoro su diversi processori per gestire il calore
  • Manteniamo i modelli abbastanza piccoli da entrare interamente nella memoria veloce

Link to this sectionIl processo di ottimizzazione#

In Ultralytics, seguiamo un approccio sistematico all'ottimizzazione. Per prima cosa, analizziamo il modello per capire dove viene effettivamente speso il tempo. Spesso, i colli di bottiglia non sono dove ti aspetteresti. Magari l'80% del tempo viene speso in pochi livelli, o i trasferimenti di memoria dominano il tempo di calcolo.

Successivamente, applichiamo le ottimizzazioni in modo iterativo:

  1. Parti dai colli di bottiglia più grandi
  2. Applica un'ottimizzazione alla volta
  3. Misura sia il miglioramento della velocità che l'impatto sull'accuratezza
  4. Mantieni le ottimizzazioni che offrono buoni compromessi
  5. Ripeti finché non raggiungiamo i nostri obiettivi

Ad esempio, con la distribuzione di YOLO11m su un telefono:

  • Baseline: 200ms per frame, modello da 200MB
  • Dopo la quantizzazione: 80ms per frame, modello da 50MB
  • Dopo il pruning: 60ms per frame, modello da 35MB
  • Dopo la fusione delle operazioni: 45ms per frame, modello da 35MB

Ogni passaggio migliora le prestazioni mantenendo oltre il 99% dell'accuratezza originale. Il risultato? Rilevamento di oggetti in tempo reale su un dispositivo che sta in tasca.

Link to this sectionIl futuro: Informatica eterogenea#

I dispositivi moderni stanno diventando più intelligenti nell'usare più processori insieme. Il tuo telefono non ha solo un processore, ne ha diversi, ognuno specializzato per compiti diversi:

  • Il sensore della fotocamera ha un ISP (Image Signal Processor) per la pre-elaborazione
  • La NPU (Neural Processing Unit) esegue l'inferenza di YOLO
  • La CPU gestisce la logica complessa e il coordinamento
  • La GPU visualizza i risultati sullo schermo

Il futuro dell'ottimizzazione di YOLO consiste nel dividere in modo intelligente il modello tra questi processori. Forse la NPU gestisce le convoluzioni principali, la CPU esegue la logica di rilevamento finale e la GPU visualizza i risultati. Ogni processore fa ciò in cui è migliore, creando una pipeline più efficiente di quanto qualsiasi singolo processore potrebbe mai ottenere.

Stiamo sviluppando algoritmi di partizionamento intelligenti che comprendono automaticamente il modo migliore per dividere YOLO tra i processori disponibili, considerando non solo le loro capacità ma anche il costo dello spostamento dei dati tra loro.

Link to this sectionIl succo del discorso#

Ottimizzare i modelli YOLO non significa solo convertire formati di file; significa trasformare l'IA all'avanguardia in qualcosa che funzioni davvero nel mondo reale. Attraverso tecniche come la quantizzazione (usare numeri più piccoli), il pruning (rimuovere parti non necessarie), la fusione delle operazioni (combinare i passaggi) e la gestione intelligente della memoria, otteniamo miglioramenti delle prestazioni da 10 a 100 volte mantenendo l'accuratezza.

La cosa notevole? Non esiste un'ottimizzazione "migliore" universale. Un server cloud con potenza illimitata necessita di ottimizzazioni diverse rispetto a un drone alimentato a batteria. Un telefono con un chip IA dedicato richiede un trattamento diverso rispetto a un Raspberry Pi. Ecco perché Ultralytics offre così tante opzioni di esportazione: ognuna è ottimizzata per scenari diversi.

Ogni ottimizzazione di cui abbiamo discusso ha un unico obiettivo: rendere la visione artificiale accessibile ovunque. Che tu stia costruendo un campanello intelligente, un'applicazione per droni o un enorme servizio cloud, forniamo gli strumenti per far funzionare YOLO entro i tuoi vincoli.

Quando esporti un modello YOLO con Ultralytics, non stai solo salvando un file. Stai sfruttando anni di ricerca nel rendere pratiche le reti neurali. Stai trasformando un modello di IA all'avanguardia in qualcosa che può funzionare su hardware reale, con vincoli reali, risolvendo problemi reali.

Questo è ciò che facciamo in Ultralytics. Colmiamo il divario tra la ricerca sull'IA e l'implementazione pratica. Facciamo funzionare la visione artificiale ovunque, perché il futuro dell'IA non riguarda solo avere i modelli migliori, ma rendere quei modelli utili nel mondo reale.

Explore solutions

Real-time AI that works with your team

AI nella Robotica

Potenzia macchine più intelligenti con i modelli Ultralytics YOLO. La Vision AI nella robotica guida la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.

Scopri di più
Real-time AI that works with your team

IA nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. La Vision AI abilita l'ispezione dei pacchi, lo smistamento, il tracciamento dei veicoli e il monitoraggio della sicurezza in magazzino in tempo reale.

Scopri di più
Real-time AI that works with your team

AI nel settore Retail

Reimmagina il retail con i modelli Ultralytics YOLO. La Vision AI alimenta il tracciamento dell'inventario, il monitoraggio degli scaffali, la gestione delle code e insight più intelligenti sui clienti.

Scopri di più
Real-time AI that works with your team

IA nel settore sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. La vision AI nella sanità potenzia l'imaging medico più rapido, diagnosi più intelligenti e il monitoraggio dei pazienti.

Scopri di più
Real-time AI that works with your team

IA nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La Vision AI guida il controllo qualità, il rilevamento dei difetti, la conformità ai DPI e l'automazione della linea di assemblaggio.

Scopri di più
Real-time AI that works with your operation

AI nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La vision AI migliora la sicurezza stradale, l'assistenza alla guida e l'automazione dei veicoli per strade più intelligenti.

Scopri di più
Real-time AI tailored to your operation

AI in Agricoltura

Porta la vision AI nell'agricoltura intelligente con i modelli Ultralytics YOLO. Potenzia il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per rese più elevate e intelligenti.

Scopri di più
Real-time AI that works with your team

AI nella Robotica

Potenzia macchine più intelligenti con i modelli Ultralytics YOLO. La Vision AI nella robotica guida la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.

Scopri di più
Real-time AI that works with your team

IA nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. La Vision AI abilita l'ispezione dei pacchi, lo smistamento, il tracciamento dei veicoli e il monitoraggio della sicurezza in magazzino in tempo reale.

Scopri di più
Real-time AI that works with your team

AI nel settore Retail

Reimmagina il retail con i modelli Ultralytics YOLO. La Vision AI alimenta il tracciamento dell'inventario, il monitoraggio degli scaffali, la gestione delle code e insight più intelligenti sui clienti.

Scopri di più
Real-time AI that works with your team

IA nel settore sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. La vision AI nella sanità potenzia l'imaging medico più rapido, diagnosi più intelligenti e il monitoraggio dei pazienti.

Scopri di più
Real-time AI that works with your team

IA nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La Vision AI guida il controllo qualità, il rilevamento dei difetti, la conformità ai DPI e l'automazione della linea di assemblaggio.

Scopri di più
Real-time AI that works with your operation

AI nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La vision AI migliora la sicurezza stradale, l'assistenza alla guida e l'automazione dei veicoli per strade più intelligenti.

Scopri di più
Real-time AI tailored to your operation

AI in Agricoltura

Porta la vision AI nell'agricoltura intelligente con i modelli Ultralytics YOLO. Potenzia il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per rese più elevate e intelligenti.

Scopri di più
Real-time AI that works with your team

AI nella Robotica

Potenzia macchine più intelligenti con i modelli Ultralytics YOLO. La Vision AI nella robotica guida la navigazione autonoma, la percezione, il tracciamento degli oggetti e il controllo in tempo reale.

Scopri di più
Real-time AI that works with your team

IA nella logistica

Semplifica la logistica con i modelli Ultralytics YOLO. La Vision AI abilita l'ispezione dei pacchi, lo smistamento, il tracciamento dei veicoli e il monitoraggio della sicurezza in magazzino in tempo reale.

Scopri di più
Real-time AI that works with your team

AI nel settore Retail

Reimmagina il retail con i modelli Ultralytics YOLO. La Vision AI alimenta il tracciamento dell'inventario, il monitoraggio degli scaffali, la gestione delle code e insight più intelligenti sui clienti.

Scopri di più
Real-time AI that works with your team

IA nel settore sanitario

Crea soluzioni sanitarie con i modelli Ultralytics YOLO. La vision AI nella sanità potenzia l'imaging medico più rapido, diagnosi più intelligenti e il monitoraggio dei pazienti.

Scopri di più
Real-time AI that works with your team

IA nella produzione

Ottimizza la produzione con i modelli Ultralytics YOLO. La Vision AI guida il controllo qualità, il rilevamento dei difetti, la conformità ai DPI e l'automazione della linea di assemblaggio.

Scopri di più
Real-time AI that works with your operation

AI nel settore automobilistico

Applica la computer vision al settore automobilistico con i modelli Ultralytics YOLO. La vision AI migliora la sicurezza stradale, l'assistenza alla guida e l'automazione dei veicoli per strade più intelligenti.

Scopri di più
Real-time AI tailored to your operation

AI in Agricoltura

Porta la vision AI nell'agricoltura intelligente con i modelli Ultralytics YOLO. Potenzia il monitoraggio delle colture, il tracciamento del bestiame e l'agricoltura di precisione per rese più elevate e intelligenti.

Scopri di più

Costruiamo insieme il futuro dell'AI!

Inizia il tuo viaggio con il futuro del machine learning