[ad_1]
Al giorno d’oggi l’intelligenza artificiale (AI) sta facendo sentire la sua presenza ovunque, dai data center al centro di Internet ai sensori e ai dispositivi portatili come gli smartphone ai margini di Internet e ogni punto intermedio, come robot e veicoli autonomi. Ai fini di questo articolo, riconosciamo che il termine AI abbraccia il machine learning e il deep learning.
Esistono due aspetti principali dell’intelligenza artificiale: l’addestramento, che viene eseguito prevalentemente nei data center, e l’inferenza, che può essere eseguita ovunque, dal cloud fino al più umile sensore dotato di intelligenza artificiale.
L’intelligenza artificiale è un avido consumatore di due cose: potenza di elaborazione computazionale e dati. Nel caso della potenza di elaborazione, OpenAI, il creatore di ChatGPT, ha pubblicato il rapporto IA e calcolodimostrando che dal 2012 la quantità di calcolo utilizzata nelle grandi sessioni di addestramento dell’IA è raddoppiata ogni 3,4 mesi senza alcuna indicazione di rallentamento.
Per quanto riguarda la memoria, un modello di intelligenza artificiale generativa (GenAI) di grandi dimensioni come ChatGPT-4 può avere più di un trilione di parametri, i quali devono essere tutti facilmente accessibili in modo da consentire di gestire numerose richieste contemporaneamente. Inoltre, è necessario considerare le grandi quantità di dati che devono essere trasmessi in streaming ed elaborati.
Bassa velocità
Supponiamo di progettare un dispositivo System-on-chip (SoC) che contiene uno o più core del processore. Includeremo una quantità relativamente piccola di memoria all’interno del dispositivo, mentre la maggior parte della memoria risiederà in dispositivi discreti esterni al SoC.
Il tipo di memoria più veloce è la SRAM, ma ciascuna cella SRAM richiede sei transistor, quindi la SRAM viene utilizzata con parsimonia all’interno del SoC perché consuma un’enorme quantità di spazio e potenza. In confronto, la DRAM richiede solo un transistor e un condensatore per cella, il che significa che consuma molto meno spazio ed energia. Pertanto, la DRAM viene utilizzata per creare dispositivi di archiviazione di massa al di fuori del SoC. Sebbene la DRAM offra una capacità elevata, è significativamente più lenta della SRAM.
Poiché le tecnologie di processo utilizzate per sviluppare circuiti integrati si sono evolute per creare strutture sempre più piccole, la maggior parte dei dispositivi è diventata sempre più veloce. Purtroppo, questo non è il caso delle bit-cell con transistor e condensatore che costituiscono il cuore delle DRAM. Infatti, a causa della loro natura analogica, la velocità delle bit-cell è rimasta sostanzialmente invariata per decenni.
Detto questo, la velocità delle DRAM, vista sulle loro interfacce esterne, è raddoppiata con ogni nuova generazione. Poiché ogni accesso interno è relativamente lento, il modo in cui è stato ottenuto è stato eseguire una serie di accessi scaglionati all’interno del dispositivo. Se assumiamo di leggere una serie di parole di dati consecutive, ci vorrà un tempo relativamente lungo per ricevere la prima parola, ma vedremo le parole successive molto più velocemente.
Funziona bene se desideriamo trasmettere in streaming grandi blocchi di dati contigui perché riceviamo un colpo una tantum all’inizio del trasferimento, dopodiché gli accessi successivi avvengono ad alta velocità. Tuttavia, si verificano problemi se desideriamo eseguire accessi multipli a blocchi di dati più piccoli. In questo caso, invece di un successo una tantum, lo subiamo ancora e ancora.
Più velocità
La soluzione è utilizzare SRAM ad alta velocità per creare memorie cache locali all’interno del dispositivo di elaborazione. Quando il processore richiede per la prima volta i dati dalla DRAM, una copia di tali dati viene archiviata nella cache del processore. Se successivamente l’elaboratore desidera accedere nuovamente agli stessi dati, utilizza la sua copia locale, alla quale è possibile accedere molto più velocemente.
È comune utilizzare più livelli di cache all’interno del SoC. Questi sono chiamati Livello 1 (L1), Livello 2 (L2) e Livello 3 (L3). Il primo livello di cache ha la capacità più piccola ma la velocità di accesso più alta, mentre ogni livello successivo ha una capacità maggiore e una velocità di accesso inferiore. Come illustrato in Figura 1, presupponendo un clock di sistema da 1 GHz e DRAM DDR4, il processore impiega solo 1,8 ns per accedere alla cache L1, 6,4 ns per accedere alla cache L2 e 26 ns per accedere alla cache L3. L’accesso alla prima di una serie di parole di dati dalle DRAM esterne richiede ben 70 ns (fonte dati Joe Chang’s Server Analysis).
Figura 1 Le velocità di accesso alla cache e alla DRAM sono indicate per clock da 1 GHz e DRAM DDR4. Fonte: Arteris
Il ruolo della cache nell’intelligenza artificiale
Esiste un’ampia varietà di scenari di implementazione e distribuzione dell’IA. Nel caso del nostro SoC, una possibilità è creare uno o più IP dell’acceleratore AI, ciascuno contenente la propria cache interna. Supponiamo di voler mantenere la coerenza della cache, che possiamo pensare come mantenere tutte le copie dei dati uguali, con i cluster di processori SoC. Quindi, dovremo utilizzare una soluzione hardware coerente con la cache sotto forma di un’interconnessione coerente, come CHI come definito nelle specifiche AMBA e supportato dall’IP Ncore network-on-chip (NoC) di Arteris IP (figura 2UN).
figura 2 Il diagramma sopra mostra esempi di cache nel contesto dell’intelligenza artificiale. Fonte: Arteris
Esiste un sovraccarico associato al mantenimento della coerenza della cache. In molti casi, gli acceleratori IA non hanno bisogno di mantenere la coerenza della cache nella stessa misura dei cluster di processori. Ad esempio, può darsi che solo dopo che un grande blocco di dati è stato elaborato dall’acceleratore è necessario risincronizzare le cose, cosa che può essere ottenuta sotto il controllo del software. Gli acceleratori di intelligenza artificiale potrebbero utilizzare una soluzione di interconnessione più piccola e più veloce, come AXI di Arm o FlexNoC di Arteris (Figura 2b).
In molti casi, gli sviluppatori degli IP dell’acceleratore non includono la cache nella loro implementazione. A volte, la necessità della cache non veniva riconosciuta finché non venivano avviate le valutazioni delle prestazioni. Una soluzione consiste nell’includere uno speciale IP della cache tra un acceleratore AI e l’interconnessione per fornire un incremento delle prestazioni a livello IP (Figura 2c). Un’altra possibilità è utilizzare l’IP della cache come cache di ultimo livello per fornire un incremento delle prestazioni a livello di SoC (Figura 2d). La progettazione della cache non è semplice, ma i progettisti possono utilizzare soluzioni configurabili pronte all’uso.
Molti progettisti di SoC tendono a pensare alla cache solo nel contesto dei processori e dei cluster di processori. Tuttavia, i vantaggi della cache sono ugualmente applicabili a molti altri IP complessi, inclusi gli acceleratori AI. Di conseguenza, gli sviluppatori di SoC incentrati sull’intelligenza artificiale stanno valutando e implementando sempre più una varietà di scenari AI abilitati alla cache.
Frank Schirrmeister, VP Solutions e business development presso Arteris, guida le attività nei settori verticali automobilistico, data center, comunicazioni 5G/6G, mobile, aerospaziale e data center. Prima di Arteris, Frank ha ricoperto varie posizioni di leadership senior presso Cadence Design Systems, Synopsys e Imperas.
Contenuto relativo
[ad_2]
Source link