DeepSeek V3 szczegóły artykułu: Jak ominąć monopol CUDA!
Dwa niedawno wydane modele DeepSeek, DeepSeek-V3 i DeepSeek-R1, osiągają wydajność porównywalną z podobnymi modelami OpenAI przy znacznie niższych kosztach.
Według doniesień zagranicznych mediów, w ciągu zaledwie dwóch miesięcy wytrenowali oni model językowy MoE z 671 miliardami parametrów na klastrze 2048 procesorów graficznych H800, który jest 10 razy bardziej wydajny niż najlepsza sztuczna inteligencja.
Przełom ten nie został osiągnięty przy użyciu CUDA, ale dzięki dużej liczbie drobnoziarnistych optymalizacji i wykorzystaniu podobnego do asemblera programowania PTX (równoległe wykonywanie wątków) firmy NVIDIA.
DeepSeek została zmuszona do obrania innej ścieżki niż OpenAI i inne firmy, które polegają na mocy obliczeniowej brutalnej siły przy ograniczeniach sprzętowych. Firma wykorzystała szereg innowacji technologicznych, aby zmniejszyć zapotrzebowanie modelu na moc obliczeniową przy jednoczesnym osiągnięciu wzrostu wydajności.
Kilka entuzjastycznych komentarzy od internautów:
"Na tym świecie, jeśli są jakieś grupy ludzi, którzy byliby na tyle szaleni, by mówić takie rzeczy jak 'CUDA jest zbyt wolna!
Geniusze dopracowują PTX, by zmaksymalizować wydajność GPU
NVIDIA PTX (Parallel Thread Execution) to architektura pośredniego zestawu instrukcji zaprojektowana specjalnie dla procesorów graficznych tej firmy, znajdująca się pomiędzy wysokopoziomowymi językami programowania GPU (takimi jak CUDA C/C++) lub innymi językami front-end a niskopoziomowym kodem maszynowym (streaming assembly lub SASS).
PTX to niskopoziomowa architektura zestawu instrukcji, która prezentuje GPU jako urządzenie do obliczeń równoległych danych, umożliwiając drobnoziarniste optymalizacje, takie jak alokacja rejestrów i dostrajanie na poziomie wątku / wiązki wątków, które nie są możliwe w językach takich jak CUDA C/C++.
Gdy PTX jest konwertowany na SASS, jest zoptymalizowany pod kątem określonej generacji procesorów graficznych NVIDIA.
Podczas szkolenia modelu V3 DeepSeek ponownie skonfigurował procesor graficzny NVIDIA H800:
Spośród 132 rdzeni procesora strumieniowego, 20 zostało przydzielonych do komunikacji między serwerami, głównie do kompresji i dekompresji danych, aby przełamać limit połączeń procesora i poprawić szybkość przetwarzania transakcji.
Aby zmaksymalizować wydajność, DeepSeek zaimplementował również zaawansowane algorytmy potokowania poprzez dodatkowe drobnoziarniste dostosowania poziomu wątku / wiązki wątków.
Optymalizacje te wykraczają daleko poza poziom konwencjonalnego rozwoju CUDA, ale są niezwykle trudne w utrzymaniu. Jednak ten poziom optymalizacji jest właśnie tym, co w pełni demonstruje wyjątkowe możliwości techniczne zespołu DeepSeek.
Dokument V3 zawiera szczegółowe informacje na temat PTX
Wynika to z faktu, że pod podwójną presją globalnego niedoboru GPU i amerykańskich ograniczeń, firmy takie jak DeepSeek musiały szukać innowacyjnych rozwiązań.
Na szczęście dokonali oni znaczących przełomów w tej dziedzinie.
Jeden z deweloperów uważa, że "niskopoziomowe programowanie GPU to właściwy kierunek. Im więcej optymalizacji, tym niższy koszt lub budżet wydajności, który można wykorzystać na inne postępy bez dodatkowych wydatków".
Przełom ten miał znaczący wpływ na rynek, a niektórzy inwestorzy uważają, że nowy model zmniejszy popyt na sprzęt o wysokiej wydajności, co może wpłynąć na wyniki sprzedaży firm takich jak NVIDIA.
Jednak weterani branży, w tym były dyrektor generalny Intela Pat Gelsinger, uważają, że aplikacje AI mogą w pełni wykorzystać całą dostępną moc obliczeniową.
Gelsinger postrzega ten przełom DeepSeek jako nowy sposób na osadzenie możliwości sztucznej inteligencji w tanich urządzeniach przeznaczonych na rynek masowy.
PTX i CUDA
Czy zatem pojawienie się DeepSeek oznacza, że rozwój najnowocześniejszych technologii LLM nie wymaga już wielkoskalowych klastrów GPU?
Czy ogromne inwestycje w zasoby obliczeniowe Google, OpenAIMeta i xAI ostatecznie pójdą na marne? Ogólny konsensus wśród twórców sztucznej inteligencji jest taki, że tak nie jest.
Jest jednak pewne, że wciąż istnieje ogromny potencjał do wykorzystania w zakresie przetwarzania danych i optymalizacji algorytmów, a w przyszłości z pewnością pojawią się bardziej innowacyjne metody optymalizacji.
Dzięki otwartemu oprogramowaniu DeepSeek w wersji V3, szczegóły zostały szczegółowo ujawnione w raporcie technicznym.
Raport dokumentuje głębokie optymalizacje przeprowadzone przez DeepSeek. W skrócie, stopień optymalizacji można podsumować jako "przebudowali cały system od podstaw".
Jak wspomniano powyżej, podczas szkolenia V3 przy użyciu GPU H800, DeepSeek dostosował podstawowe jednostki obliczeniowe GPU (strumieniowe rdzenie wieloprocesorowe lub SM) do konkretnych potrzeb.
Z całkowitej liczby 132 SM, specjalnie przydzielono 20 do obsługi zadań komunikacji między serwerami, a nie zadań obliczeniowych.
Dostosowanie to odbywa się na poziomie PTX (równoległego wykonywania wątków), który jest niskopoziomowym zestawem instrukcji procesora graficznego NVIDIA.
PTX działa na poziomie zbliżonym do języka asemblera i umożliwia drobnoziarniste optymalizacje, takie jak alokacja rejestrów i dostrajanie poziomu wątku / wiązki wątków. Ta precyzyjna kontrola jest jednak złożona i trudna do utrzymania.
Dlatego programiści zazwyczaj wolą używać języków programowania wysokiego poziomu, takich jak CUDA, które zapewniają wystarczającą optymalizację wydajności dla większości zadań programowania równoległego i eliminują potrzebę optymalizacji na niskim poziomie.
Jednak jeśli chodzi o maksymalizację wydajności zasobów GPU i osiągnięcie określonych wymagań optymalizacyjnych, deweloperzy muszą uciekać się do PTX.
Nadal jednak istnieją bariery techniczne
W związku z tym internauta Ian Cutress powiedział: "Wykorzystanie PTX przez Deepseek nie eliminuje technicznych barier CUDA".
CUDA to język wysokiego poziomu. Ułatwia on tworzenie bibliotek i interfejsów dla procesorów graficznych NVIDIA i wspiera szybki rozwój iteracyjny.
CUDA może zoptymalizować wydajność poprzez precyzyjne dostrojenie kodu bazowego (tj. PTX), a podstawowe biblioteki są już gotowe. Większość oprogramowania na poziomie produkcyjnym jest obecnie oparta na CUDA.
PTX jest bardziej podobny do bezpośrednio zrozumiałego języka asemblera dla GPU. Działa na niskim poziomie i pozwala na optymalizację na poziomie mikro.
Jeśli zdecydujesz się programować w PTX, oznacza to, że żadna z wyżej wymienionych wbudowanych bibliotek CUDA nie może być używana. Jest to bardzo żmudne zadanie, które wymaga dogłębnej wiedzy na temat sprzętu i kwestii związanych z uruchomieniem.
Jeśli jednak programiści w pełni rozumieją, co robią, mogą rzeczywiście osiągnąć lepszą wydajność i optymalizację w czasie wykonywania.
Obecnie głównym nurtem ekosystemu NVIDIA jest nadal wykorzystanie CUDA.
Programiści, którzy chcą uzyskać dodatkowe 10-20% wydajności lub efektywności energetycznej z ich obciążenia obliczeniowego, takich jak firmy, które wdrażają modele w chmurze i sprzedają usługi tokenów, rzeczywiście zoptymalizowali z poziomu CUDA do poziomu PTX. Są gotowi zainwestować czas, ponieważ jest to opłacalne w dłuższej perspektywie.
Należy zauważyć, że PTX jest zwykle zoptymalizowany pod kątem konkretnego modelu sprzętu i jest trudny do przenoszenia między różnymi urządzeniami, chyba że logika adaptacji jest specjalnie napisana.
Ponadto ręczne dostrajanie jądra obliczeniowego wymaga dużej wytrwałości, odwagi i szczególnej umiejętności zachowania spokoju, ponieważ program może mieć błąd dostępu do pamięci co 5000 cykli.
Oczywiście, dla tych scenariuszy, w których PTX jest naprawdę potrzebny, i dla tych deweloperów, którzy są wystarczająco opłacani, aby zajmować się tymi kwestiami, wyrażamy nasze pełne zrozumienie i szacunek.
W przypadku wszystkich innych deweloperów zaleca się dalsze korzystanie z CUDA lub innych zaawansowanych wariantów opartych na CUDA (lub MLIR).