Gerrit Drost

Mijn "budget" LLM-server

De afgelopen maanden heb ik me in mijn vrije tijd met lokaal gehoste taalmodellen beziggehouden. Al snel kwam ik tot de conclusie dat mijn laptop veel moeite heeft om de wat grotere vrij beschikbare taalmodellen op acceptabele snelheid te draaien. Nu, een paar maanden later, heb ik een machine ter beschikking waar ik de meeste grote taalmodellen op kan draaien. Alleen de écht grote modellen, zoals DeepSeek R1, zijn nog buiten bereik. Onderstaand vind je de details van mijn LLM server, inclusief een kostenoverzicht. Ik heb deze server specifiek voor inference gebouwd, en niet voor fine-tuning/training.

Behuizing

Ik heb op bol.com voor €15 een mining rig frame gevonden waar tot 8 grafische kaarten in passen. Zo’n frame is op het moment van schrijven niet meer voor die prijs bij bol.com te vinden.

CPU en werkgeheugen

Ik had een Ryzen 7 1700, 64GB DDR4 werkgeheugen (4x16GB) en een Noctua NH-L9a-AM4 CPU koeler liggen die ik voor dit project wilde inzetten.

Moederbord

Als moederbord heb ik een ASUS Prime B450-Plus aangeschaft. Dit heeft een specifieke reden: ondersteuning voor bifurcation. Bifurcation is het opdelen van de lanes van één PCIe slot. ASUS ondersteunt dit op veel consumentenmoederbords zodat je meerdere NVMe-SSDs in één PCIe-slot kwijt kunt. Op de website van ASUS kun je precies zien welke combinatie van moederbord en CPU goed werkt voor bifurcation. Het door mij gekozen moederbord was voor mij op dat moment de beste optie: ik kon er alle 4 repen werkgeheugen in kwijt, en in combinatie met de Ryzen 7 1700 kon ik het X16-slot opdelen in vier X4-slots.

Opslag

Ik gebruik een 1TB Samsung 860 SATA SSD voor opslag. Het enige M.2/NVMe-slot op het moederbord wil ik vrijhouden om een extra riser op aan te sluiten.

Bifurcation / risers

In een mining rig frame moeten de grafische kaarten op risers geïnstalleerd worden. Delock heeft een mooie productrange hiervoor. De productnamen van Delock zijn een beetje chaotisch, ik gebruik daarom de 5-cijferige code die elk Delock-product heeft. De duitse webshop Reichelt heeft de meeste Delock-producten in het assortiment voor een acceptabele prijs.

Als risers gebruik ik de Delock 64173. De risers ondersteunen maximaal PCIe v4.0 (het moederbord helaas niet). De PCIe verbinding wordt verzorgd via een SFF-8643-aansluiting, ook wel bekend als Mini-SAS HD. Er gaan 4 PCIe-lanes over zo’n kabel.

In het X16-slot heb ik een Delock 90777 zitten. Deze verdeelt het X16-slot naar 4x SFF-8643-aansluiting.

Het M.2/NVMe-slot wordt bemand door een Delock 63145. Daarmee heb ik een vijfde SFF-8643-aansluiting beschikbaar.

Het tweede PCIe X16-slot heeft maar beschikking over 4 PCIe-lanes, en is daarom uitgerust met een Delock 90437. Dit geeft mij een zesde SFF-8643-aansluiting.

De meeste SFF-8643-kabels zijn direct achter de stekker best stijf. De risers zijn zo gebouwd dat de stekker in de richting van de volgende riser wijst. Met rechte stekkers zit de kabel de volgende riser in de weg, we moeten dus kabels met minstens één haakse stekker hebben. De kabels zijn bij nederlandse webshops schrikbarend duur. Op AliExpress heb ik enigszins betaalbare kabels met haakse stekker weten te vinden, namelijk deze. Een lengte van 0.5m is ruim voldoende.

Voeding

Ik heb voor deze server een Seasonic Focus GX-1000 gekocht. Toen de RTX 3090’s erbij kwamen, heb ik bij bol.com een ATX-stekker splitter, en mijn oude Corsair RM750x toegevoegd. De Seasonic voedt het moederbord, de drie RTX 3060 kaarten en de RTX 2080. De Corsair-voeding is er alléén voor de twee RTX 3090’s.

De PCIe-risers hebben een molex-aansluiting voor de voeding van het PCIe-slot. De aansluitingen gaan erg stroef: bij het aansluiten voel je niet goed of de stekker goed zit, en bij het loshalen voelt het alsof je de aansluiting van de printplaat trekt. Ik heb daarom bij allekabels.nl Molex-naar-SATA-adapters besteld. Deze zitten nu permanent in de risers, ik gebruik nu de SATA-stekkers van de voedingen om de risers van stroom te voorzien.

Grafische kaarten

Op dit moment gebruik ik in de build de volgende grafische kaarten:

De RTX 3090 is, mits je hem voor een goede prijs kunt vinden, een zeer interessante kaart voor inference vanwege de 24GB snelle VRAM.

De RTX 3060 is ook een interessante kaart omdat hij in tegenstelling tot andere kaarten in die prijsrange 12GB VRAM heeft, in plaats van 8GB. Daarnaast is de geheugenbandbreedte door de 192-bits bus redelijk goed, waardoor deze kaart voor inference sneller is dan bijv. de 4060 Ti die een 128-bits geheugenbus heeft.

De RTX 2080 zit eigenlijk alleen in de server omdat ik hem nog had liggen en wilde weten of het systeem werkt met alle zes grafische kaarten aangesloten. Op termijn wordt deze kaart wellicht vervangen door een RTX 3090 of 3060.

Als Linux-liefhebber ben ik niet de grootste fan van NVIDIA (voor context, zie bijv. dit nieuwsartikel van Tweakers, en deze Reddit-comment). Opties van AMD en Intel heb ik overwogen, maar het aanbod op de tweedehands-markt is beperkt en de software-ondersteuning is een stuk minder. Op dit moment is NVIDIA duidelijk de beste keuze.

Kostenoverzicht

Categorie Product Aantal à Totaal
Behuizing 8 GPU mining rig frame 1 € 15,00 € 15,00
Moederbord ASUS PRIME B450-PLUS 1 € 89,90 € 89,90
Werkgeheugen 64GB (4x16GB) DDR4 1 € 0,00 € 0,00
CPU AMD Ryzen 7 1700 1 € 0,00 € 0,00
CPU-koeler Noctua NH-L9a-AM4 1 € 0,00 € 0,00
SSD Samsung 860 1TB (SATA) 1 € 0,00 € 0,00
Grafische kaart INNO3D GeForce RTX 2080 X2 OC 1 € 0,00 € 0,00
Grafische kaart MSI GeForce RTX 3060 VENTUS 2X 12G OC 1 € 285,00 € 285,00
Grafische kaart Gigabyte GeForce RTX 3060 WINDFORCE OC 12G 1 € 279,00 € 279,00
Grafische kaart Lenovo RTX 3060 1 € 200,00 € 200,00
Grafische kaart Gigabyte GeForce RTX 3090 GAMING OC 24G 1 € 700,00 € 700,00
Grafische kaart Inno3D GeForce RTX 3090 iChill X4 1 € 700,00 € 700,00
Voeding Seasonic Focus GX-1000 1 € 167,90 € 167,90
Voeding Corsair RM750x 1 € 0,00 € 0,00
Voedingkabel Dual PSU ATX adapter 1 € 13,99 € 13,99
Voedingkabel Molex -> SATA adapter 6 € 3,49 € 20,49
PCIe adapter Delock 90777 (PCIe X16 -> 4x SFF-8643) 1 € 50,79 € 50,79
PCIe adapter Delock 63145 (M.2 -> SFF-8643) 1 € 28,42 € 28,42
PCIe adapter Delock 90437 (PCIe X4 -> 1x SFF-8643) 1 € 22,32 € 22,32
PCIe riser Delock 64173 (SFF-8643 riser) 6 € 52,47 € 314,82
SFF-8643 kabel SFF-8643 kabel (één zijde haaks) 6 € 8,99 € 53,94
€ 2941.57

Voor een LLM-server met 92GB VRAM is dit helemaal niet zo gek. Ik had wellicht nog wat geld kunnen besparen door meer tweedehands onderdelen te kopen, maar al met al ben ik best tevreden.

Foto’s

Onderstaand foto’s van de build. De voedingen liggen er nu los achter. Wellicht dat ik die met een 3D print netjes aan het frame kan vastmaken, dat wil ik nog een keer onderzoeken.

Aanzicht schuin van voren van de LLM-server op een enigszins rommelig bureau. Bovenaanzicht van de LLM-server op een enigszins rommelig bureau.

#Genai #Llm #Lokaal #Server #Cuda #Ollama