Aus Linux-Magazin 03/2021

Crypto-Mining-Rigs als erschwingliche Hardware für wissenschaftliches Rechnen

© rawpixel, 123RF

Auf dem Gebrauchtmarkt tauchen immer mehr ausgediente Bitcoin-Mining-Rechner auf. Taugen diese Ex-Boliden für wissenschaftliches Rechnen und Machine Learning?

Ein kleines Stück zu einer richtigen Entdeckung beitragen oder mithelfen, etwas völlig Neues zu erforschen: Für viele Freizeit-Wissenschaftler ist das Motivation genug, um sich mit dem eigenen Rechner an spannenden Forschungsprojekten zu beteiligen. Dort, wo man zwar viel Rechenpower benötigt, aber keine zig Millionen für einen Supercomputer bezahlen kann, ist so eine Mitwirkung (Volunteer Computing) möglich und sinnvoll – unter der Voraussetzung, dass sich die Aufgabe gut auf gewöhnliche PCs verteilen lässt.

Eines der bekanntesten Projekte dieser Art war SETI, die Fahndung nach einer außerirdischen Zivilisation (Search for Extraterrestrial Intelligence). Interessierte können aber auch bei der Suche nach 3D-Strukturen von Eiweißen helfen (Folding@home [1], Rosetta@Home [2]). Oder man unterstützt die Weltraumforschung (Einstein@Home [3]) und lässt seinen Rechner in den Daten der LIGO-Gravitationswellen-Detektoren, des Fermi-Weltraumteleskops und des Radioteleskops von Arecibo nach Spuren von Neutronensternen Ausschau halten.

Der von PC-Generation zu PC-Generation stetig gestiegenen Rechenkraft zum Trotz sind Computer ihren Anwendern selten schnell genug. Von Anfang an versuchte man daher, sie zu beschleunigen, und nutzte dafür teils spezielle Hardware. Je leichter verfügbar diese Beschleuniger waren und je vielseitiger sie sich einsetzen ließen, desto besser. Seit über 20 Jahren können nun auch normal talentierte Programmierer auf Grafikkarten rechnen. Allerdings setzte sich diese Technologie erst so richtig durch, als 2007 CUDA von Nvidia Einzug hielt.

Das Linux-Magazin beschrieb die Technologie erstmals 2010 [4]. Richtig populär wurde sie, als man sie für das Schürfen von Bitcoins einsetzte. Grafikkarten bekamen ein Mining-BIOS als Option, und bei einigen Modellen fiel sogar die Display-Einheit weg. Später lösten dann FPGAs und danach ASICs die Grafikkarten ab. Eine Zeit lang kamen die ehemaligen Crypto-Mining-Rechner noch für ältere Coin-Währungen wie Ethereum zum Einsatz, doch inzwischen landen sie mehr und mehr auf dem Gebrauchtwarenmarkt, wo man sie auch als Heimanwender verhältnismäßig günstig kaufen kann.

Für maschinelles Lernen erscheinen diese GPUs aufgrund ihrer massiv parallelen Architektur besonders gut geeignet. Mehrere davon in einem Rechner vergrößern die potenzielle Leistung um ein Vielfaches. Auf dem Discord-Server der BOINC-Community [5], einer virtuellen Plattform für Volunteer Computing, werden Bilder der gewagtesten Konstruktionen ausgetauscht, oft als Open-Air-PCs, also ohne geschlossenes Gehäuse. Aber was lässt sich mit solchen Systemen wirklich anfangen? Taugen sie tatsächlich für Machine Learning, und welche Einschränkungen gibt es dabei?

Alle Mining-Rigs – also Zusammenstellungen von Komponenten für das Schürfen einer Kryptowährung – haben gemeinsam, dass sie reguläre Grafikkarten oder deren Mining-Varianten via PCIe versorgen. Ist das Board groß genug, lassen die Rigs sich direkt nebeneinander stecken. Es gibt auch Varianten, bei denen das Mainboard die Steckplätze nicht direkt anbietet, sondern sie in eine PCIe-Backplane auslagert. Je nach Ausführung des Mainboards lassen sich bis zu 18 Karten ansprechen. Die passen dann nicht mehr in ein Gehäuse, sondern werden über Verlängerungskabel (Riser) verbunden – entweder tatsächlich als 1:1-Verlängerung des Slots, oder aber über eine x1-Steckkarte, die das PCIe-Signal einfach über ein kostengünstiges USB-3-Kabel überträgt.

PCIe-Versionen

Den PCIe-Bus (Peripheral Component Interconnect Express [6]) gibt es schon seit 2003. Vom WLAN-Board bis zur Grafikkarte nimmt er alles auf. Mit jeder neuen Version des Standards hat sich die Geschwindigkeit verdoppelt; aktuell ist die Version 4.0. Ein Blick auf ein entsprechendes Mainboard verdeutlicht, dass die Slots unterschiedlich breit sind. Dadurch lassen sich verschieden viele PCIe-Kanäle mit der Karte verbinden – von x1 (ein Kanal) bis zu x16 mit 16 Mal mehr Durchsatz. Man kann aber auch eine x1-Karte in einen x16-Slot einbauen und umgekehrt. Die Slots sind bis PCIe 4.0 miteinander kompatibel, sodass für verschiedene Versionen ausgelegte Systeme über den Standard der niedrigeren Version miteinander kommunizieren können.

Stromversorgung

Der Stromversorgung kommt bei Systemen, die dauerhaft laufen sollen, eine wichtige Rolle zu. Die Anforderungen liegen aufgrund der zu erwartenden gleichzeitig eintretenden Leistungsspitzen mehrerer Grafikkarten sehr hoch – die Jobs werden schließlich parallel gestartet. Die Kosten für den Strom übersteigen schon nach wenigen Monaten die Anschaffungskosten des Rigs.

Neben ATX-Netzteilen nutzen Mining-Rigs oft gebrauchte Server-Netzteile, um Kosten zu senken. Ein solches Netzteil ist leistungsstark und sehr energieeffizient: Die meisten erreichen die 80+-Platinum-Effizienzklasse (mehr als 94 Prozent Effizienz bei 50 Prozent Auslastung) und sind gebraucht oft unschlagbar günstig. Allerdings stellt ein solches Netzteil nur 12 Volt zur Verfügung und eignet sich damit nicht direkt für ein ATX-Mainboard. Deswegen hat sich ein kleines Board mit dem Namen PicoPSU des gleichnamigen Herstellers durchgesetzt, das auch andere Spannungen bereitstellt. Davon gibt es mittlerweile auch Nachbauten von verschiedenen chinesischen Herstellern. Gerade bei Home-Theater-PCs oder ähnlichen Geräten sind diese Boards sehr beliebt.

Die PicoPSUs und deren Nachbauten haben aber ihre Fallstricke, auf die man achten sollte. So liefern sie hauptsächlich Strom auf der 12V-Schiene, die sie einfach vom Netzteil durchschleifen. Benötigen die Verbraucher hauptsächlich andere Spannungen, etwa 3,3 oder 5 Volt (etwa SSDs), so kommt deren Versorgung möglicherweise zu kurz. Ein Blick in das Datenblatt offenbart eine Stromstärke von 6 Ampere – nicht wirklich viel, wenn man bedenkt, dass eine PCIe-Karte laut Standard 3 Ampere von der 3,3V-Rail ziehen darf. Da das Mainboard auch selbst schon etwas Strom braucht, genügt das eigentlich nur für eine einzelne PCIe-Karte.

GPUs dagegen bereiten hier keine Probleme, da sie die Spannung selbst aus der 12V-Leitung wandeln und die 3,3V-Rail fast nicht belasten. Bei anderen Karten wird es jedoch schnell eng. M.2-SSDs etwa hängen ausschließlich an der 3,3V-Rail (M.2 hat nur 3,3V-Pins) und nehmen unter Last auch gern einmal 10 Watt auf – bei 3,3 Volt also mit 3 Ampere die Hälfte des zulässigen Strombedarfs. So produziert man schnell einen lastabhängigen Ausfall. Auch SATA-Geräte dürfen bis zu 4,5 Ampere pro Rail ziehen.

Wer alle Komponenten neu kauft, wählt Mainboard und Netzteil zueinander passend aus. Unser Schwerpunkt liegt jedoch auf günstiger gebrauchter Hardware. Auch wenn der Einsatz eines Adapter-Boards merkwürdig anmutet: Die Kombination aus preiswerten alten Server-Netzteilen und einer PicoPSU ist oft ebenso günstig wie zweckgerecht.

Daneben sollte man beim Erwerb eines gebrauchten Rigs im Hinterkopf haben, wofür die Hardware einst konzipiert wurde. So ist Server-Hardware nicht für einen leisen Betrieb optimiert. Im vorliegenden Fall waren sowohl die Lüfter des originalen Mining-Rigs als auch die Lüfter des Austauschgehäuses dermaßen laut, dass sie selbst beim Aufstellen in einem separaten Raum und bei geschlossener Tür zum Nebenraum noch nervten. Auch wer glaubt, die Grafikkarten ließen sich einfach in einem normalen PC-Gehäuse verbauen, sollte aufpassen: Die Grafikkarten der Autoren waren passiv gekühlt und somit auf den Luftstrom des Gehäuses angewiesen.

CPU und Chipsatz

Mining-Hardware ist meist radikal kostenoptimiert. Das fängt schon bei der CPU an: Die kommt für das eigentliche Mining nicht zum Einsatz und ist deswegen auch entsprechend schwach dimensioniert, etwa als stromsparender Celeron-Prozessor. Im für den Test benutzten Mining-Rig saß eine kleine Dual-Core-Intel-CPU im BGA-Package, also fest verlötet und nur zusammen mit dem Mainboard auszutauschen. GPU-Mining-Rigs haben in der Regel nicht mehr als 4 GByte Hauptspeicher. Bessere Grafikkarten bieten die Möglichkeit, sich untereinander zu verbinden – SLI oder NVlink heißt das bei Nvidia, CrossFireX bei AMD. Dadurch können sich mehrere Karten als ein großes Board präsentieren, was die Kommunikation auf dem PCIe-Bus reduziert.

Die Kostenoptimierung schlägt sich auch beim Gehäuse nieder (Abbildung 1): Das des Testgeräts ist nicht viel mehr als eine verzinkte Stahlkiste mit ein paar Ausschnitten für Lüfter (Abbildung 2). Vorkehrungen etwa für eine Kabelführung waren nicht nötig, da alles in einer Backplane steckte. Wer an einen möglichen Hardware-Umbau denkt, sollte sich also mit dem Gedanken anfreunden, mit Bohrer, Zange und der nötigen Kreativität zu Werke zu gehen.

Abbildung 1: Der Aufbau des Testrechners ist spartanisch, oberste Priorität hatten die Kosten.

Abbildung 1: Der Aufbau des Testrechners ist spartanisch, oberste Priorität hatten die Kosten.

Abbildung 2: In der verzinkten Stahlkiste mit einigen Lüfterausschnitten steckt alles in einer Backplane.

Abbildung 2: In der verzinkten Stahlkiste mit einigen Lüfterausschnitten steckt alles in einer Backplane.

Die Prozessoren stellen von sich aus bereits die PCIe-Kanäle zur Verfügung. Die verteilt das Mainboard an die jeweiligen Slots – entweder direkt oder in Profisystemen über einen PCI-Switch. Es steht daher nur eine begrenzte Anzahl an PCIe-Kanälen zur Verfügung. Eine einzelne eingesteckte Karte kann man mit der vollen x16-Bandbreite der PCIe-Channels versorgen. Steckt im Slot daneben jedoch eine weitere, erhalten beide maximal je x8, bis hin zu x1 bei weiterer Bestückung.

Die Beschreibungen der Mainboards erweisen sich oft als oberflächlich bis irreführend, wenn sie auf die physikalische Breite des Slots verweisen statt auf die Anzahl der die Karte versorgenden Kanäle. PCI-Switches gibt es auch auf den Server-Boards, doch die Anzahl der insgesamt zur Verfügung stehenden PCI-Channels ist durch den Einsatz von zwei Prozessoren höher. Derzeit bietet AMD mit dem PCIe-4.0-Standard sowohl auf Desktops als auch auf Servern einen technischen Vorteil aufgrund der doppelten Übertragungsgeschwindigkeit je Kanal und einer höheren Anzahl an Kanälen, die der Prozessor zur Verfügung stellt.

Der Testkandidat

Unser Mining-Rig mit einer Backplane und separatem Mainboard wurde vor etwa 12 Monaten für 750 Euro ersteigert und arbeitete zunächst nicht verlässlich. Das Netzteil funktionierte zwar, war jedoch zu laut und roch ungesund. Die verbauten acht Mining-Karten des Typs Nvidia P106-090 aus dem Jahr 2018 mit PCIe 1.1 x4 waren in Ordnung und bekamen für weitere rund 350 Euro ein neues Gehäuse, Speicher, Mainboard, Prozessor und sicherheitshalber auch ein neues Netzteil spendiert.

Uns interessiert vor allem der Vergleich mit professioneller Hardware mit acht Nvidia-A100-Karten mit PCIe 4.0 x16 aus dem Jahr 2020, Kostenpunkt mehr als 75 000 Euro. Damit jeder ein wenig nachvollziehen kann, wie schnell respektive langsam diese Systeme im Vergleich zur eigenen Hardware sind, probierten wir verschiedene BOINC-Projekte auf ihnen aus. Noch anspruchsvoller war ein auf die Karten verteiltes maschinelles Lernen. Hierzu nutzten wir einen bekannten Testdatensatz zusammen mit der Deep-Learning-Bibliothek PyTorch für die Unterscheidung von Hunde- und Katzenbildern.

BOINC-Benchmarks

Wir suchten drei BOINC-Projekte heraus, die GPUs sehr gut unterstützen. Bei Einstein@Home war dies die Gamma-Ray Pulsar Binary Search. Selbst bei acht gleichzeitig aktiven Karten beobachteten wir keinen Abfall der Leistung. Das Profisystem mit acht Karten vom Typ A100 benötigte in diesem Test 300 Sekunden. Unser Testrechner brauchte 2000 Sekunden je Work-Unit, also mehr als sechs Mal so lang.

Lag das an der GPU oder dem flinkeren Prozessor mit schnellerem und breiterem PCIe-Bus des Profirechners? Um das herauszufinden, bauten wir die P106-090-Karten unseres Testsystems in das Profisystem ein. Trotz x4- statt x1-PCIe-Channel und einem flotten Prozessor liefen sie dort lediglich 1 Prozent schneller. Einstein@Home ermöglicht, dass sich mehrere Work-Units eine GPU teilen. Gerade bei der großen A100 hätten wir uns davon einen Vorteil erwartet, doch das gleichzeitige Berechnen zweier Aufträge auf einer Karte verdoppelte auch die Rechenzeit, erbrachte also keinen Vorteil.

Die Primzahlensuche mit Primegrid verlangt beinahe keine Interaktion der CPU mit den Karten (weniger als 2 Prozent CPU-Belastung), während sonst die Nvidia-Karten stets mit voller CPU-Auslastung laufen. Daher sinkt die Leistung auch beim gleichzeitigen Einsatz mehrerer Karten nicht. Die P106-090 unseres Testsystems benötigten 916 bis 925 Sekunden (CudaPPSsieve) respektive etwa 4500 Sekunden (OCL_cuda_AP27). Die A100 des Profigeräts erledigten die Aufgabe jeweils in etwa einem Zehntel der Zeit, der Vorsprung war also noch größer als bei Einstein@Home.

Für den dritten Testlauf wählten wir ein Benchmark-Programm für Folding@Home [6] aus und starteten es gleichzeitig auf mehreren GPUs. Tauschen die CPU und die GPU sich regelmäßig aus, dann sollte die Leistung mit mehreren gleichzeitig betriebenen Work-Units sinken, so unsere Annahme. Doch egal, wie viele verschiedene GPUs wir auswählten, die Performance blieb gleich – sowohl auf unserem Testsystem als auch auf dem Profirechner. Der Benchmark misst, wie viele Nanosekunden eines Vorgangs in der Natur binnen eines Tages der Rechner modellieren kann. Mit Single Precision schaffte unsere P106 im Profisystem immerhin 59 ns/d, die A100 259 ns/d. Mit Double Precision (auf der P106 nicht in Hardware unterstützt) waren es bei der A100 noch 159 ns/d, die P106 erzielte gerade noch 3 ns/d.

PyTorch

PyTorch ist ein Open-Source-Framework für maschinelles Lernen. Wir stellten ein überschaubares Skript zusammen, das auf einer verschieden großen Anzahl an Grafikkarten (oder auch nur auf der CPU) mit einem neuronalen Netz Bilder klassifiziert. Dazu gilt es, die Bilder zu den Grafikkarten zu transportieren und, sofern sie auf mehrere Karten verteilt wurden, die Ergebnisse am Ende auch wieder zusammenzufassen. Während des Trainings sind zudem die Modelle auf allen Karten zu aktualisieren. Derart hohe Anforderungen an die Kommunikation stellen die BOINC-Projekte nicht.

Für wissenschaftliche Projekte mit GPU-Unterstützung ist die CPU nicht entbehrlich. Ganz im Gegenteil kommt ihr mit zunehmender Anzahl von Rechenkernen auch immer mehr Bedeutung zu: Sie bereitet die Daten zunächst für die GPU vor und fasst anschließend die GPU-Ergebnisse zusammen. Verteilt man die Arbeitslast auf viele GPUs, kann der Prozessor durchaus zum Flaschenhals werden, auf den die Grafikeinheiten warten. Wie sehr sich die Kommunikation zwischen GPU und CPU reduzieren lässt, hängt von der jeweiligen Anwendung ab. Lassen sich die Daten als Matrix repräsentieren und basiert die Anwendung auf Operation auf oder zwischen Matrizen, sind GPUs als Beschleuniger kaum zu schlagen – wie eben auch für neuronale Netze.

Wir gingen für unsere Untersuchung davon aus, dass die Anzahl der eingesetzten Karten die Qualität der Vorhersagen nicht beeinflusst. Wir beachteten die Qualität der Vorhersage tatsächlich nicht weiter, da sie von einer Vielzahl von Faktoren abhängen kann, wie etwa der Qualität des Trainingsdatensatzes oder der Größe der Batches. Wir schauten hier allein auf die Anzahl von Bildern, die sich mit der gegebenen Hardware je Sekunde lernen (trainieren) oder klassifizieren (evaluieren) ließen.

Analyse der Ergebnisse

Die P106-090 bieten nur PCIe 1.1 mit x4-Kanälen für die Kommunikation an. In unserem Mining-Rig mit x1-Risern waren sie daher nur mit PCIe 1.1 x1 angebunden. In einer PCIe-4.0-x16-Umgebung lassen sich dieselben Karten mit dem vierfachen Durchsatz ansprechen. Dass sich die Rechenzeiten mit BOINC dennoch kaum veränderten, war eine Überraschung. Offenbar nutzen alle von uns ausgesuchten Projekte beinahe ausschließlich die GPU, obwohl der Nvidia-Treiber jeweils einen Rechenkern zu 100 Prozent auslastet. BOINC-typisch sind diese überschaubar großen Rechenaufträge darauf ausgelegt, unabhängig voneinander berechnet zu werden. Sie benötigen nur sich selbst und müssen sich nicht mit den Berechnungen auf der Nachbar-GPU synchronisieren.

Zu unserer Verwunderung konnten die A100-Karten bei BOINC ihre Vorteile kaum ausschöpfen. Selbst der bei der Primzahlensuche erzielte Beschleunigungsfaktor von 10 erscheint gering, verglichen mit einem Faktor 100 beim Preis für die Hardware. Bei der Leistung pro verbrauchtem Watt zeigen sich die P106-090 (75 Watt je Karte) den maximal 250 Watt pro Profikarte zwar deutlich unterlegen – schließlich müsste man zwischen 475 und 750 Watt für dieselbe Rechenleistung bei datenparallelen Anforderungen aufwenden. Die eigentlichen Kosten jedoch entstehen im Fall eines kommerziellen Einsatzes durch die viel längere Wartezeit: Was auf einer großen Karte in einer Stunde rechnet, benötigt auf einer kleinen einen vollen Arbeitstag.

Anders sah es bei der Evaluation mit PyTorch aus. Größere Batches, die eigentlich gerade von der Parallelisierung profitieren, bewältigten die kleinen Karten gar nicht. Die schwache Bus-Anbindung im Rig und die langsame Kommunikation mit PCIe 1.1 fraßen im Test den Vorteil der Parallelisierung wieder auf.

Große Überraschungen gab es im Test nicht. Zwar dauerte das Training länger als die Evaluation des gelernten Modells, aber die relativen Zeiten der verschiedenen Hardware-Konfigurationen entsprachen sich. Wir probierten auch verschieden große neuronale Netze aus, mit Auswirkung auf die maximale Batch-Size, aber in etwa gleichen relativen Geschwindigkeiten der Systeme zueinander. Wir zeigen in Abbildung 3 deshalb nur die Zahlen für das Training mit dem kleinsten Modell.

Abbildung 3: Die Benchmark-Ergebnisse für den Test mit dem maschinellen Lernen zur Bildklassifikation.

Abbildung 3: Die Benchmark-Ergebnisse für den Test mit dem maschinellen Lernen zur Bildklassifikation.

Fazit

Wie effizient eine einzelne Grafikkarte ein Problem löst, bietet ein praktikables Maß dafür, wie gut sie mehrere abarbeiten wird. Eine moderne Grafikkarte kommt auch beim maschinellen Lernen sehr weit. Platz und Stromversorgung in normalen Rechnern genügen aber selten, um die nötige Mindestanzahl von vier Grafikkarten in Betrieb zu nehmen, um durch Verteilen des maschinellen Lernens auf mehrere Karten einen Zeitgewinn zu erzielen.

Für datenparallele Anforderungen wie bei BOINC gibt es keine Einschränkungen, abgesehen vom höheren Energieverbrauch. Die acht Karten des Mining-Rigs erreichen in etwa die Leistung einer einzelnen Profikarte, kosten aber weniger, selbst unter Berücksichtigung des höheren Stromverbrauchs. Für maschinelles Lernen ist jedoch eine gute, moderne Grafikkarte mit viel Speicher vorzuziehen. Mit der Unterstützung der im maschinellen Lernen häufig genutzten 16-Bit-Gleitkommazahlen gegenüber Ganzzahloperationen mit 8 oder gar nur 4 Bit Breite baut ein solches Board seinen Vorsprung sogar noch aus.

Als Komplement zum recycelten Mining-Rig bieten sich insbesondere auch Cloud-Dienste an. Zwar offeriert noch nicht jeder Hoster spezielle GPU-Rechner, doch finden sich bereits Angebote mit 8 und 16 Karten. Die Preise variieren je nach Anzahl und Typ der gewählten GPUs. Das Rig als lokale Installation kann so der Vorbereitung von Projekten in der Cloud dienen, sofern man die Daten dort speichern darf und die Latenzen für ihre Übertragung sich mit den Projektzielen vertragen. (jcb/jlu)

Danksagung

Die Autoren bedanken sich ganz besonders beim HPC-Spezialisten MEGWARE GmbH [8] aus Chemnitz. Das Unternehmen ermöglichte einen Zugang zu seinen Testrechnern und baute die P106-090 aus dem Test-Rig für den direkten Vergleich in eines seiner Systeme ein.

Infos

  1. Folding@home: https://foldingathome.org
  2. Rosetta@home: https://boinc.bakerlab.org/rosetta/
  3. Einstein@HOME:https://einsteinathome.org
  4. Rechnen auf der Grafikkarte: Michael Uelschen, “Parallel-Power”, LM 07/2010, S. 48, https://www.lm-online.de/20144
  5. BOINC: https://boinc.network
  6. PCIe: https://de.wikipedia.org/wiki/PCI_Express
  7. FAHbench: https://fahbench.github.io
  8. MEGWARE Computer Vertrieb und Service GmbH: https://www.megware.com
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben