4
Maszyny wysokowydajne LLM, DL & ML
Ekosystem Machine Learning i Large Language Models wymaga dużej mocy obliczeniowej, dużej ilości RAM i szybkich kart graficznych - najchętniej z dużą ilością VRAM. Główne korzyści jakie mogę zaoferować w zakresie uczenia maszynowego są zwłaszcza finansowe. Dotyczą doboru starszych płyt i procesorów, gdyż te zapewniają w wielu przypadkach szybszą współprace między kartami dzięki chipom PLX. Oczywiście mogę zaproponować karty RTX z serii gaming jak i RTX Quadro, TESLA A100/H100 czy MI300X...jak znajdę na rynku.
Wybór Stacji Roboczej
Dobór odpowiednich pojemności RAM i VRAM oraz dysków to kluczowa kwestia w zakresie niezawodności działania modelu jak i prędkości jego działania. Kolejną sprawą jest moc obliczeniowa. A to dlatego, że jeżeli nie będziemy mieć odpowiednich pojemności, to system może sam zacząć używać dysku (swapinness) ze względu na brak RAM lub RAMu, przy braku VRAM Out-of-core ML. Dobór komponentów musi się opierać na zasadzie: Jakiej wielkości modele chcę załadować. Na jakiej wielkości danych wejściowych chcę operować.
Cicha a za razem szybka maszyna do ML/LLM/DL czyni pracę przyjemną, mniej męczącą oraz zdecydowanie bardziej efektywną.
Wybór Procesora (CPU Central Processing Unit)
Ultra-ważne: Czy w naszej pracy wykorzystamy więcej niż 32 wątków? Czy wykorzystamy HT/ SMT?
Bez tej wiedzy, nie przystępuję do planowania stacji roboczej. Jeżeli klient używa kilku różnych aplikacji lub zadań, to muszę wiedzieć, czego używa najczęściej, lub na poprawieniu którego obszaru pracy najbardziej mu zależy. Czy to ma być: kompilowanie, przetwarzanie danych LLM/ML/DL; grid search, cross-validation czy stricte trening modeli? Tu wszystko prawie na GPU/TPU
HT/SMT może być niekorzystne jeżeli mamy mało pamięci RAM. Warto sprawdzić czy wyłączenie HT nie pomaga w prędkości. Ma to związek z:
-
Rywalizacji o zasoby (cache, ALU) między wątkami logicznymi.
-
Overhead zarządzania wątkami w słabo zoptymalizowanym kodzie
Wybór karty graficznej (GPU)
Ultra-ważne: Zawsze więcej VRAM jest lepsze ... prawie
T
Kluczowe czynniki decyzyjne:
-
Czy model zmieści się w VRAM pojedynczej karty?
-
Czy zadanie da się podzielić na równoległe procesy?
-
Jaki jest budżet i wymagany czas treningu/inferencji?
Wybór pamięci operacyjnej (RAM- Random Access Memory)
RAM musi być dobrany do CPU i do płyty głównej. Po pierwsze oczywiście zgodny z chipsetem - DDRx? Ale są też dwa główne rodzaje RAM:
1) ECC - z korekcją (określany jako serwerowy)
2) Non-ECC - bez korekcji.
Część płyt gamingowych i WS obsługuje ECC, a część nie - trzeba przeczytać specyfikację.
Czy stacja potrzebuje RAMu ECC? Do wizualizacji, grafiki etc - NIE. Do animacji ? Można zainwestować dla pewności, jeżeli komputer ma pracować np. 2 tygodnie non stop. Do zastosowań naukowych o dużej precyzji? TAK.
Duże firmy wciskają pamięć ECC nie dlatego, że pamięć może popełniać błędy. Robią to, bo taka pamięć ma kontroler, który odciąża CPU w sensie energetycznym - daje to szerszy zakres kompatybilności kosztem wydajności - ECC mają zazwyczaj gorsze czasy dostępu. Choć niektóre można bez problemu wyregulować i będą działać z prędkościami non-ECC... tylko, że w satacjach wielkich brandów nie ma się dostępu do ustawień czasów. W aplikacjach DDR 4 czy DDR5? Bez różnicy... Ważniejsza jest pojemność tym przypadku.
Wybór Zasilacza (PSU)
Proste - renomowana firma, Standard GOLD, Platinum wystarczą. Moc +20%. Amperaż +20-+30%.
Wybór Obudowy (Case)
To już zależy od tego gdzie użytkownik chce umieścić maszynę.
Ja mogę proponować zarówno ławki jak do Bitcoin / Ethereum - to akurat rozwiązanie pozwala na łatwe zmiany w konfiguracji i rozwijanie maszyny pod kątem ilości kart.
Mogę serwerowe do szaf rack, mieszane jak i ewidentnie jako WorkStation.
Co komu w duszy gra.
Wybór Chłodzenia
CPU (CPU Cooler)
Do procesorów mniejszych niż AMD 7980x mogę proponować chłodzenia AIO.
Do 7980X czy 7995WX - chłodzenie wodne autorskie.
GPU (GPU Cooling)
Do kart na ławce lub max 2ch w obudowie - proponuję pozostawienie oryginalnego chłodzenia.
Do kart serwerowych - możemy podeprzeć się chłodzeniem powietrznym na zamówienie lub wodnym w zależności od czasu jaki mamy na "postawienie" maszyny i budżet.
Dla wielu kart w obudowach nie serwerowych, zwłaszcza jeżeli to karty serwerowe z chłodzeniem pasywnym przelotowym (opartym o chłodzenie samego serwera) potrzebujemy chłodzenia wodnego.
RAM (RAM Cooling)
To zagadnienie jest trochę podchwytliwe - w serwerach zazwyczaj, z uwagi na grube, szybkie a zarazem straszliwie hałasujące wentylatory, chłodzenie RAM jest wystarczające. W Stacjach Roboczych natomiast nie jest już takie oczywiste. Pamięć DDR5 przekraczając 95,8 st. C. wpada w Thermal Throttling i zmniejsza swoją przepustowość w celu uniknięcia uszkodzenia. Osobiście do wszystkich procesorów typu Threadripper i Epyc z ilością rdzeni od 24 wzwyż montuję dodatkowe wentylatory aby pamięć nie stanowiła wąskiego gardła w zastosowaniach użytkownika.
Wybór dysku
Na rynku są dostępne 4 rodzaje dysków "twardych" - twardy oznacza tu jedynie, że dane pozostają na nim nawet gdy odetniemy mu źródło prądu - na ramie nie zostają (tylko przypominam).
1) HDD - talerzowy, magnetyczy - prędkość bardzo słaba, dostęp wolny - ma za zadanie przechowywać ukończone projekty, programy rzadko używane.
2) SHDD - talerzowo-flashowy. Tak ściśle to ma talerza magnetyczne, pamięć Flash i pamięć RAM - szybszy o 30-40 % od HDD a to dzięki umieszczaniu przez kontroler w pamięci Flash najczęściej odczytywanych plików.
3) SSD - szybki, ograniczony najczęściej portem SATA 6GB -wąski, smukły, bezgłośny. Kości flash okazały się bardzo trwałe. Doskonały na dysk systemowy i gówne programy.
4) SSD M.2 PCI-E - dysk wpinany w płytę. Ogromna prędkość, służy doskonale jako wsparcie dla RAM, transfer do 3GB/s!!!! Ale nie licz na szybszy start, Windows uruchamia się prawie tak samo.
W tych zastosowaniach dyski HDD mogą być jedynie wykorzystywane do wersji modeli przetrenowanych, skanów, czy przechowywania surowego korpusu . W pozostałych zastosowaniach potrzebne są dyski M.2 - i tu im szybszy dostęp, tym lepiej. Im więcej IOPS tym lepiej. Choć głównie zależy tu na przepustowości (cache dla tokenizera, aktywne datasety czy bufor danych treningowych).



