Zum Hauptinhalt Zur Navigation

Argos VCU: Google baut eigene Encoding-Chips für Youtube

CPUs reichen Youtube nicht mehr für das Video-Encoding. Also hat sich Google eigene ASICs dafür gebaut, die einige Raffinessen bereithalten.
/ Sebastian Grüner
39 Kommentare News folgen (öffnet im neuen Fenster)
Die Bauform der VCU von Google erinnert an Grafikkarten. (Bild: Google)
Die Bauform der VCU von Google erinnert an Grafikkarten. Bild: Google

Der Videostreaming Dienst Youtube hat sich eigene ASICs für das Video-Encoding gebaut. Die Argos VCU (Video Coding Unit) hat das Unternehmen in einem exklusiven Interview mit dem Magazin CNET(öffnet im neuen Fenster) sowie in einem Blogpost vorgestellt(öffnet im neuen Fenster) . Weitere vor allem technische Details haben die bei Google an dem Projekt Beteiligten zudem in einer Abhandlung(öffnet im neuen Fenster) für die Architectural Support for Programming Languages and Operating Systems Conference (ASPLOS) zusammengefasst.

Google hat sich offenbar für die gesonderte Hardware wegen deren deutlich verbesserter Leistung entschieden. In dem Blogpost heißt es: "Wir haben eine zu 20- bis 33-fache Verbesserungen der Recheneffizienz im Vergleich zu unserem vorherigen optimierten System festgestellt, auf dem Software auf herkömmlichen Servern ausgeführt wurde."

Bei der Argos VCU handelt es sich um PCIe-Gen3-x16-Steckkarten in voller Länge und Höhe, die damit zumindest von ihrer Bauform mehr oder weniger an handelsübliche Grafikkarten erinnern. Auf dem Board selbst befinden sich zwei der eigentlichen ASICs, die passiv über Heatsinks gekühlt werden. Zur Stromversorgung dient außerdem offenbar ein 8-Pin-Anschluss (theoretisch 150 Watt plus 75 Watt via PCIe), was ebenfalls an Grafikkarten erinnert.

Zu dem VCU-System selbst ist es darüber hinaus wichtig zu wissen, dass zwar Grafikkarten seit Jahrzehnten über speziellen Hardware-Einheiten (Fixed Functions) wie AMDs VCE oder Nvidias NVENC zum Encoding verfügen, die diese Aufgabe im Vergleich zu Software-Encodern massiv beschleunigen.

Vor allem für das Video-Streaming setzen großen Anbieter wie eben Youtube bisher aber meist auf Software-Encoder der CPUs. Das liegt vor allem daran, dass die herkömmlichen Hardware-Encoder für den Endkundenbereich so gut wie keine Variationen im Kodierungsprozess erlauben. Anders ist dies bei Software, die auf CPUs läuft und vollständig an eigene Bedürfnisse angepasst werden kann.

Encoding für eigene Bedürfnisse

Google hat sich der Beschreibung der VCU zufolge für einen Mittelweg dieser beiden Extrempositionen - alles in Hardware oder alles in Software - entschieden. Wie das Team selbst schreibt, seien dafür bestimmte, aber nicht alle Teile und Algorithmen zum Encoding tatsächlich in Hardware umgesetzt worden. Die Encoding-Hardware folgt dabei dem üblichen Aufbau und Ablauf des Video-Encodings in Software.

So werden zunächst 16x16 Pixel große Macroblocks (für H.264) oder ein 64x64 Pixel Superblock (für VP9) erstellt. Diese werden wiederum unterteilt und etwa für eine Rate-distortion-Optimization (RDO) oder per Bewegungsanalyse untersucht. Hinzu kommen die Auswahl von Optimierungen und Transformationsfunktionen, um die ungefähr gewünschte Bitrate zu erhalten. Es folgt das eigentliche Entropie-Encoding sowie temporale Filter und die Auswahl der Referenz-Frames.

Der fertig kodierte Block wird zudem noch dekodiert, mit einem Loop-Filter behandelt und dann per Frame-Buffer-Compression (FBC) verlustfrei verkleinert, um diesen in einem Speicher auf den Chips selbst abzulegen. Dies ist notwendig, um Referenz-Frames vorhalten zu können. Die FBC wiederum reduziere die benötigte Bandbreite der Lesezugriffe dabei um bis zu 50 Prozent.

Massive Skalierung der VCU

Mit der Technik erreiche Google nach zahlreichen Experimenten inzwischen sogar leicht geringere Bitraten als mit den zuvor genutzten Software-Encodern für H.264 und VP9. Google verweist außerdem auf die mit dem System deutlich verbesserte optische Qualität von VP9 im Vergleich zu H.264. Dies mit Software-Encodern zu erreichen sei vom rechnerischen Aufwand her "nicht realisierbar" . Google schreibt aber auch selbst, dass die Hardware-Encoder erwartbar eine etwas schlechtere Qualität lieferten als ihre jeweiligen Software-Pendants, da einige Optimierungen fehlten.

Der eigentliche Ablauf des Encodings sei zudem vollständig sequentiell, Eingabedaten wie die Frames würden nicht verändert und das Schreiben der kodierten Frames geschehe ebenfalls sequentiell. Das ermögliche ein einfaches Speichermodell. Hinzu kommt, dass eine einzelne Hardwareeinheit für das Encoding sämtliche Eingabedaten wie Frames oder auch Look-up-Tables im DRAM der VCU vorhält.

Die Firmware kann einzelne Arbeitsschritte deshalb auf einen jeweils freien Encoding-Kern verteilen. Für den Speicher setzt Google auf vier 32-Bit-LPDDR4-3200-Kanäle (36 GByte/s) für 8 GByte nutzbaren RAM pro Chip, da jede VCU zwischen 27 und 37 GByte/s benötigt. Daten erhalten die Karten vom Host-System via PCIe Gen3 x16, also x8 pro VCU.

Google setzt für das Encoding außerdem auf das sogenannte Multiple-output transcoding (MOT). Das heißt, das Quellmaterial der Youtube-Nutzer wird lediglich einmal dekodiert und dann parallel zueinander für die verschiedenen Bitraten und Auflösungen kodiert. Laut Google gebe es zudem nur wenige Videos, die für ihr eigenes Encoding einen einzelne VCU benötigen. Das Unternehmen ist also in der Lage, mehrere Videos auf einem der Chips nebeneinander zu verarbeiten.

So viele VCUs pro Rack wie möglich

Insgesamt finden sich zehn Encoder-Cores in einer Argos VCU, die Karte selbst enthält zwei VCUs. In jedem Host-System gibt es dann jeweils 20 VCUs. Jedes Server-Rack habe dabei so viele Hostsysteme wie die Netzwerkanbindung, der verfügbare Platz und die Stromversorgung erlauben. Dieses Stecksystem für sein Videoencoding kann Youtube dann ebenfalls relativ einfach skalieren, was Google so auch in seinen weltweiten Rechenzentren umsetzt.

Streamen und Aufnehmen in OBS Studio - Tutorial
Streamen und Aufnehmen in OBS Studio - Tutorial (07:58)

Den Aufwand betreibt Google vor allem wegen der riesigen Fülle immer neuer Videos auf Youtube. Pro Minute würden 500 Stunden neues Videomaterial hochgeladen. Während der Covid-19-Pandemie habe der Videokonsum auf Youtube zudem massiv zugelegt, so dass sich kleiner kodierte Videos und damit eingesparte Rechenleistung für Google besonders rentieren.

Zusätzlich zu den VCU-Encodern für H.264 und VP9 arbeitet das Team an neuer Hardware für den freien Video-Codec AV1. Für die bisher genutzten Chips habe Google bereits ausschließlich bestehende IP-Blöcke von spezialisierten Unternehmen lizenziert. Es ist davon auszugehen, dass dies auch bei AV1 geschieht und die AV1-VCUs bei Google bald zum Einsatz kommen können.


Relevante Themen