DeepSeek V3 detaljer om uppsatsen: Hur man kringgår CUDA-monopolet!

DeepSeeks två nyligen lanserade modeller, DeepSeek-V3 och DeepSeek-R1, uppnår prestanda som är jämförbara med liknande modeller från OpenAI till en mycket lägre kostnad.

Enligt utländska medierapporter har de på bara två månader tränat en MoE-språkmodell med 671 miljarder parametrar på ett kluster med 2.048 H800 GPU:er, vilket är 10 gånger effektivare än den bästa AI:n.

Detta genombrott uppnåddes inte med hjälp av CUDA, utan genom ett stort antal finkorniga optimeringar och användningen av NVIDIA:s monteringsliknande PTX-programmering (parallell trådkörning).

DeepSeek har tvingats ta en annan väg än OpenAI och andra företag som förlitar sig på brute force-datorkraft under hårdvarubegränsningar. Man har använt sig av en rad tekniska innovationer för att minska modellens effektbehov och samtidigt uppnå prestandavinster.

Några entusiastiska kommentarer från nätanvändare:

"Om det i den här världen finns några grupper av människor som skulle vara galna nog att säga saker som 'CUDA är för långsamt!

Geniala nördar finjusterar PTX för att maximera GPU-prestanda

NVIDIA PTX (Parallel Thread Execution) är en arkitektur för mellanliggande instruktioner som är särskilt utformad för GPU:er och som ligger mellan GPU-programmeringsspråk på hög nivå (t.ex. CUDA C/C++) eller andra språkfrontändar och maskinkod på låg nivå (streaming assembly eller SASS).

PTX är en arkitektur för instruktionsuppsättningar på låg nivå som presenterar GPU:n som en dataparallell datorenhet, vilket möjliggör finkorniga optimeringar som registerallokering och tuning på tråd/thread-bundle-nivå som inte är möjliga med språk som CUDA C/C++.

När PTX konverteras till SASS optimeras det för en specifik generation av NVIDIA GPU:er.

Vid träning av V3-modellen konfigurerade DeepSeek om NVIDIA H800 GPU:

Av de 132 kärnorna i stream-processorn allokerades 20 för kommunikation mellan servrar, främst för datakomprimering och dekomprimering, för att bryta igenom processorns anslutningsgräns och förbättra hastigheten på transaktionshanteringen.

För att maximera prestandan har DeepSeek också implementerat avancerade pipelining-algoritmer genom ytterligare finkorniga justeringar på tråd/trådbuntnivå.

Dessa optimeringar går långt utöver nivån för konventionell CUDA-utveckling, men är extremt svåra att underhålla. Det är dock just denna optimeringsnivå som till fullo visar DeepSeek-teamets enastående tekniska kapacitet.

I V3-dokumentet nämns specifikt detaljer om PTX

Detta beror på att företag som DeepSeek, under det dubbla trycket av en global GPU-brist och amerikanska restriktioner, var tvungna att söka innovativa lösningar.

Lyckligtvis har de gjort betydande genombrott inom detta område.

En utvecklare anser att "GPU-programmering på låg nivå är rätt väg att gå. Ju mer optimering, desto lägre kostnad, eller prestandabudget som kan användas för andra framsteg utan ytterligare utgifter."

Detta genombrott har haft en betydande inverkan på marknaden och vissa investerare tror att den nya modellen kommer att minska efterfrågan på högpresterande hårdvara, vilket kan påverka försäljningsutvecklingen för företag som NVIDIA.

Branschveteraner, däribland Intels tidigare VD Pat Gelsinger, anser dock att AI-applikationer kan utnyttja all tillgänglig datorkraft fullt ut.

Gelsinger ser DeepSeeks genombrott som ett nytt sätt att integrera AI-funktioner i billiga enheter för massmarknaden.

PTX och CUDA

Betyder då DeepSeeks ankomst att utvecklingen av avancerad LLM inte längre kräver storskaliga GPU-kluster?

Kommer de enorma investeringarna i datorresurser av Google, OpenAIMeta och xAI i slutändan gå till spillo? Det allmänna samförståndet bland AI-utvecklare är att detta inte är fallet.

Det är dock säkert att det fortfarande finns en enorm potential att ta tillvara när det gäller databehandling och algoritmoptimering, och mer innovativa optimeringsmetoder kommer säkert att dyka upp i framtiden.

Med V3-modellen av DeepSeek open sourced avslöjas detaljerna i detalj i den tekniska rapporten.

Rapporten dokumenterar de djupgående underliggande optimeringar som DeepSeek har utfört. Kort sagt kan graden av optimering sammanfattas som att "de har byggt om hela systemet från grunden".

Som nämnts ovan anpassade DeepSeek GPU:ns kärnberäkningsenheter (streaming multiprocessor cores, SMs) för att uppfylla specifika behov när V3 tränades med H800 GPU.

Av de totalt 132 SM:en tilldelades 20 stycken specifikt för att hantera kommunikationsuppgifter mellan servrar snarare än databehandlingsuppgifter.

Anpassningen görs på PTX-nivå (Parallel Thread Execution), vilket är NVIDIA GPU:ns instruktionsuppsättning på låg nivå.

PTX körs på en nivå som ligger nära assembler och möjliggör finkorniga optimeringar som registerallokering och tuning på tråd/thread-bundle-nivå. Denna finstyrning är dock komplex och svår att underhålla.

Det är därför som utvecklare vanligtvis föredrar att använda högnivåprogrammeringsspråk som CUDA, som ger tillräckliga prestandaoptimeringar för de flesta parallella programmeringsuppgifter och eliminerar behovet av lågnivåoptimeringar.

Men när det gäller att maximera effektiviteten hos GPU-resurserna och uppnå specifika optimeringskrav måste utvecklarna använda PTX.

De tekniska hindren kvarstår dock

I detta avseende sa Internetanvändaren Ian Cutress: "Deepseeks användning av PTX eliminerar inte de tekniska hindren för CUDA."

CUDA är ett högnivåspråk. Det gör det enklare att utveckla bibliotek och gränssnitt med NVIDIA GPU:er och stöder snabb iterativ utveckling.

CUDA kan optimera prestandan genom att finjustera den underliggande koden (t.ex. PTX), och de grundläggande biblioteken är redan kompletta. De flesta programvaror på produktionsnivå är för närvarande byggda på CUDA.

PTX är mer likt ett direkt förståeligt assembleringsspråk för GPU:n. Det fungerar på en låg nivå och möjliggör optimering på mikronivå.

Om du väljer att programmera i PTX innebär det att inga av de tidigare nämnda inbyggda CUDA-biblioteken kan användas. Detta är en mycket tråkig uppgift som kräver djupgående expertis inom hårdvara och runtime-frågor.

Men om utvecklarna förstår vad de gör kan de faktiskt uppnå bättre prestanda och optimering vid körning.

För närvarande är det fortfarande CUDA som är huvudspåret i NVIDIA:s ekosystem.

Utvecklare som vill få ut 10-20% extra prestanda eller energieffektivitet från sin beräkningsbelastning, till exempel företag som distribuerar modeller i molnet och säljer token-tjänster, har verkligen optimerat från CUDA-nivån till PTX-nivån. De är villiga att investera tid eftersom det är värt det i det långa loppet.

Det bör noteras att PTX vanligtvis är optimerad för en specifik maskinvarumodell och är svår att porta mellan olika maskinvaror om inte anpassningslogiken är specialskriven.

Dessutom kräver manuell inställning av beräkningskärnan en hel del uthållighet, mod och en speciell förmåga att hålla sig lugn, eftersom programmet kan ha ett minnesåtkomstfel var 5.000:e cykel.

För de scenarier där PTX verkligen behövs, och för de utvecklare som får tillräckligt betalt för att hantera dessa frågor, uttrycker vi naturligtvis vår fulla förståelse och respekt.

För alla andra utvecklare är det lämpligt att fortsätta använda CUDA eller andra avancerade varianter baserade på CUDA (eller MLIR).

Liknande inlägg

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *