DeepSeek V3 dettagli del documento: Come aggirare il monopolio CUDA!

I due modelli recentemente rilasciati da DeepSeek, DeepSeek-V3 e DeepSeek-R1, raggiungono prestazioni paragonabili a quelle di modelli simili di OpenAI a un costo molto inferiore.

Secondo quanto riportato dai media stranieri, in soli due mesi è stato addestrato un modello linguistico MoE con 671 miliardi di parametri su un cluster di 2.048 GPU H800, un'efficienza 10 volte superiore a quella delle migliori AI.

Questa svolta non è stata ottenuta utilizzando CUDA, ma grazie a un gran numero di ottimizzazioni a grana fine e all'uso della programmazione PTX (esecuzione di thread in parallelo) di NVIDIA in stile assembly.

DeepSeek è stata costretta a prendere una strada diversa da OpenAI e da altre aziende che si affidano alla potenza di calcolo bruta in presenza di vincoli hardware. Ha utilizzato una serie di innovazioni tecnologiche per ridurre i requisiti energetici del modello, ottenendo al contempo un aumento delle prestazioni.

Alcuni commenti entusiasti dei netizen:

"In questo mondo, se ci sono gruppi di persone così folli da dire cose come 'CUDA è troppo lento!

Gli smanettoni mettono a punto il PTX per massimizzare le prestazioni della GPU

NVIDIA PTX (Parallel Thread Execution) è un'architettura a set di istruzioni intermedio progettata specificamente per le sue GPU, che si colloca tra i linguaggi di programmazione GPU di alto livello (come CUDA C/C++) o altri linguaggi front-end e il codice macchina di basso livello (streaming assembly o SASS).

PTX è un'architettura di set di istruzioni di basso livello che presenta la GPU come un dispositivo di elaborazione parallela dei dati, consentendo ottimizzazioni a grana fine come l'allocazione dei registri e la regolazione a livello di thread/thread-bundle che non sono possibili con linguaggi come CUDA C/C++.

Quando PTX viene convertito in SASS, viene ottimizzato per una generazione specifica di GPU NVIDIA.

Durante l'addestramento del modello V3, DeepSeek ha riconfigurato la GPU NVIDIA H800:

Dei 132 core del processore di flusso, 20 sono stati assegnati alla comunicazione inter-server, principalmente per la compressione e la decompressione dei dati, per superare il limite di connessione del processore e migliorare la velocità di elaborazione delle transazioni.

Per massimizzare le prestazioni, DeepSeek ha anche implementato algoritmi avanzati di pipelining attraverso regolazioni aggiuntive a livello di thread/thread bundle a grana fine.

Queste ottimizzazioni vanno ben oltre il livello di sviluppo CUDA convenzionale, ma sono estremamente difficili da mantenere. Tuttavia, questo livello di ottimizzazione è proprio quello che dimostra pienamente le eccezionali capacità tecniche del team DeepSeek.

Il documento V3 menziona specificamente i dettagli relativi al PTX

Questo perché, sotto la duplice pressione della carenza di GPU a livello mondiale e delle restrizioni statunitensi, aziende come DeepSeek hanno dovuto cercare soluzioni innovative.

Fortunatamente, hanno fatto progressi significativi in questo campo.

Uno sviluppatore ritiene che "la programmazione a basso livello delle GPU sia la direzione giusta. Maggiore è l'ottimizzazione, minore è il costo o il budget per le prestazioni che può essere utilizzato per altri progressi senza ulteriori spese".

Questa svolta ha avuto un impatto significativo sul mercato e alcuni investitori ritengono che il nuovo modello ridurrà la domanda di hardware ad alte prestazioni, con possibili ripercussioni sulle vendite di aziende come NVIDIA.

Tuttavia, i veterani del settore, tra cui l'ex CEO di Intel Pat Gelsinger, ritengono che le applicazioni di IA possano sfruttare appieno tutta la potenza di calcolo disponibile.

Gelsinger vede in questa scoperta di DeepSeek un nuovo modo di incorporare le capacità di intelligenza artificiale in dispositivi a basso costo per il mercato di massa.

PTX e CUDA

L'arrivo di DeepSeek significa quindi che lo sviluppo di LLM all'avanguardia non richiede più cluster di GPU su larga scala?

Gli enormi investimenti in risorse informatiche da parte di Google, OpenAIMeta e xAI vanno in definitiva sprecati? Il consenso generale tra gli sviluppatori di IA è che non è così.

Tuttavia, è certo che c'è ancora un enorme potenziale da sfruttare in termini di elaborazione dei dati e di ottimizzazione degli algoritmi, e sicuramente in futuro emergeranno metodi di ottimizzazione più innovativi.

Con il modello V3 di DeepSeek open sourced, i dettagli sono resi noti nella sua relazione tecnica.

Il rapporto documenta le profonde ottimizzazioni di fondo effettuate da DeepSeek. In breve, il grado di ottimizzazione può essere riassunto come "hanno ricostruito l'intero sistema dalle fondamenta".

Come accennato in precedenza, durante l'addestramento del V3 con la GPU H800, DeepSeek ha personalizzato le unità di calcolo principali della GPU (core multiprocessore in streaming, o SM) per soddisfare esigenze specifiche.

Dei 132 SM totali, ne sono stati assegnati 20 per gestire le attività di comunicazione tra server piuttosto che quelle di calcolo.

Questa personalizzazione viene effettuata a livello di PTX (parallel thread execution), che è il set di istruzioni di basso livello della GPU NVIDIA.

PTX viene eseguito a un livello vicino al linguaggio assembly e consente ottimizzazioni a grana fine, come l'allocazione dei registri e la regolazione a livello di thread/thread-bundle. Tuttavia, questo controllo fine è complesso e difficile da mantenere.

Per questo motivo gli sviluppatori di solito preferiscono utilizzare linguaggi di programmazione di alto livello come CUDA, che forniscono ottimizzazioni delle prestazioni sufficienti per la maggior parte delle attività di programmazione parallela ed eliminano la necessità di ottimizzazioni di basso livello.

Tuttavia, quando si tratta di massimizzare l'efficienza delle risorse della GPU e di raggiungere requisiti di ottimizzazione specifici, gli sviluppatori devono ricorrere a PTX.

Tuttavia, le barriere tecniche rimangono

A questo proposito, l'utente Internet Ian Cutress ha dichiarato: "L'uso di PTX da parte di Deepseek non elimina le barriere tecniche di CUDA".

CUDA è un linguaggio di alto livello. Rende più semplice lo sviluppo di librerie e interfacce con le GPU NVIDIA e supporta uno sviluppo iterativo rapido.

CUDA è in grado di ottimizzare le prestazioni grazie alla messa a punto del codice sottostante (ad esempio PTX) e le librerie di base sono già complete. La maggior parte del software di produzione è attualmente costruito su CUDA.

PTX è più simile a un linguaggio assembly direttamente comprensibile per la GPU. Funziona a basso livello e consente un'ottimizzazione a livello micro.

Se si sceglie di programmare in PTX, significa che non è possibile utilizzare nessuna delle librerie CUDA integrate di cui sopra. Si tratta di un'operazione molto noiosa che richiede competenze approfondite in materia di hardware e runtime.

Tuttavia, se gli sviluppatori comprendono appieno ciò che stanno facendo, possono effettivamente ottenere migliori prestazioni e ottimizzazioni in fase di esecuzione.

Attualmente, il mainstream dell'ecosistema NVIDIA è ancora l'uso di CUDA.

Gli sviluppatori che vogliono ottenere prestazioni o efficienza energetica extra dal loro carico di calcolo, come le aziende che distribuiscono modelli nel cloud e vendono servizi di token, hanno ottimizzato dal livello CUDA al livello PTX. Sono disposti a investire tempo perché ne vale la pena nel lungo periodo.

Va notato che PTX è solitamente ottimizzato per uno specifico modello di hardware ed è difficile da trasferire tra hardware diversi, a meno che non si scriva appositamente una logica di adattamento.

Inoltre, la messa a punto manuale del kernel di calcolo richiede molta perseveranza, coraggio e una particolare capacità di mantenere la calma, perché il programma può avere un errore di accesso alla memoria ogni 5.000 cicli.

Naturalmente, per gli scenari in cui PTX è veramente necessario e per gli sviluppatori che sono pagati abbastanza per occuparsi di questi problemi, esprimiamo la nostra piena comprensione e il nostro rispetto.

Per tutti gli altri sviluppatori, è consigliabile continuare a usare CUDA o altre varianti avanzate basate su CUDA (o MLIR).

Messaggi simili

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *