Ein einzelnes Foto bietet Einblicke in die Welt des Fotografen – seine Interessen und Gefühle zu einem Thema oder einem Ort. Aber was ist mit den Fotografen hinter den Technologien, die diese Bilder möglich machen?
Jonathan Ragan-Kelley, außerordentlicher Professor am MIT-Division für Elektrotechnik und Informatik, ist einer dieser Menschen. Er hat alles von Werkzeugen für visuelle Effekte in Filmen bis hin zur Programmiersprache Halide entwickelt, die in der Industrie weit verbreitet zur Bildbearbeitung und -verarbeitung verwendet wird. Als Forscher am MIT-IBM Watson AI Lab und am Laptop Science and Synthetic Intelligence Laboratory ist Ragan-Kelley auf hochleistungsfähige, domänenspezifische Programmiersprachen und maschinelles Lernen spezialisiert, die 2D- und 3D-Grafiken, visuelle Effekte und computergestützte Fotografie ermöglichen.
„Der größte Schwerpunkt vieler unserer Forschungen liegt auf der Entwicklung neuer Programmiersprachen, die es einfacher machen, Programme zu schreiben, die auf der immer komplexeren {Hardware} unserer heutigen Laptop wirklich effizient laufen“, sagt Ragan-Kelley. „Wenn wir die Rechenleistung, die wir tatsächlich für echte Anwendungen nutzen können – von Grafik und visuellem Computing bis hin zu KI – weiter steigern wollen, müssen wir unsere Programmierweise ändern.“
Einen Mittelweg finden
In den letzten beiden Jahrzehnten haben Chipdesigner und Programmieringenieure eine Verlangsamung der Moores Gesetz und eine deutliche Verschiebung von Allzweck-Computing auf CPUs hin zu vielfältigeren und spezialisierteren Rechen- und Verarbeitungseinheiten wie GPUs und Beschleunigern. Mit diesem Übergang geht ein Kompromiss einher: Die Fähigkeit, Allzweck-Code etwas langsam auf CPUs auszuführen, für schnellere, effizientere {Hardware}, für die Code stark angepasst und mit maßgeschneiderten Programmen und Compilern abgebildet werden muss. Neuere {Hardware} mit verbesserter Programmierung kann Anwendungen wie Mobilfunkschnittstellen mit hoher Bandbreite, das Dekodieren hochkomprimierter Movies für Streaming sowie Grafik- und Videoverarbeitung auf stromsparenden Handykameras, um nur einige Anwendungen zu nennen, besser unterstützen.
„Bei unserer Arbeit geht es vor allem darum, die Leistungsfähigkeit der besten {Hardware}, die wir bauen können, freizusetzen, um für diese Artwork von Anwendungen so viel Rechenleistung und Effizienz wie möglich bereitzustellen, und zwar auf eine Artwork und Weise, die mit herkömmlichen Programmiersprachen nicht möglich ist.“
Um dies zu erreichen, unterteilt Ragan-Kelley seine Arbeit in zwei Richtungen. Erstens verzichtet er auf Allgemeingültigkeit, um die Struktur bestimmter und wichtiger Rechenprobleme zu erfassen, und nutzt diese für eine bessere Rechenleistung. Dies zeigt sich in der Bildverarbeitungssprache Halide, die er mitentwickelt hat und die dazu beigetragen hat, die Bildbearbeitungsbranche in Programmen wie Photoshop zu verändern. Da sie außerdem speziell für die schnelle Verarbeitung dichter, regelmäßiger Zahlenfelder (Tensoren) entwickelt wurde, eignet sie sich auch intestine für Berechnungen mit neuronalen Netzwerken. Der zweite Schwerpunkt zielt auf die Automatisierung ab, insbesondere darauf, wie Compiler Programme auf {Hardware} abbilden. Ein solches Projekt mit dem MIT-IBM Watson AI Lab nutzt Exo, eine in Ragan-Kelleys Gruppe entwickelte Sprache.
Im Laufe der Jahre haben Forscher hartnäckig daran gearbeitet, die Codierung mit Compilern zu automatisieren, was eine Blackbox sein kann; es besteht jedoch immer noch ein großer Bedarf an expliziter Kontrolle und Feinabstimmung durch Leistungsingenieure. Ragan-Kelley und seine Gruppe entwickeln Methoden, die alle Techniken abdecken und Kompromisse ausgleichen, um eine effektive und ressourceneffiziente Programmierung zu erreichen. Den Kern vieler Hochleistungsprogramme wie Videospiel-Engines oder Handykamera-Verarbeitung bilden hochmoderne Systeme, die größtenteils von menschlichen Experten in detaillierten Low-Degree-Sprachen wie C, C++ und Assembler manuell optimiert werden. Hier treffen die Ingenieure konkrete Entscheidungen darüber, wie das Programm auf der {Hardware} ausgeführt wird.
Ragan-Kelley weist darauf hin, dass Programmierer sich entweder für „sehr mühsamen, sehr unproduktiven und sehr unsicheren Low-Degree-Code“ entscheiden können, der Fehler einführen kann, oder für „sicherere, produktivere Programmierschnittstellen auf höherer Ebene“, die keine Feineinstellungen des Compilers hinsichtlich der Ausführung des Programms ermöglichen und in der Regel eine geringere Leistung erbringen. Daher versucht sein Group, einen Mittelweg zu finden. „Wir versuchen herauszufinden, wie wir die wichtigsten Probleme kontrollieren können, die menschliche Leistungsingenieure kontrollieren möchten“, sagt Ragan-Kelley. „Deshalb versuchen wir, eine neue Klasse von Sprachen zu entwickeln, die wir benutzerplanbare Sprachen nennen und die sicherere und höherstufige Steuerungsmöglichkeiten bieten, um zu steuern, was der Compiler tut oder wie das Programm optimiert wird.“
Entsperren der {Hardware}: hochrangige und unterversorgte Möglichkeiten
Ragan-Kelley und seine Forschungsgruppe gehen dies auf zweierlei Weise an: Sie wenden maschinelles Lernen und moderne KI-Techniken an, um automatisch optimierte Zeitpläne zu generieren, eine Schnittstelle zum Compiler, um eine bessere Compilerleistung zu erzielen. Ein anderer Ansatz ist die „Exokompilierung“, an der er mit dem Labor arbeitet. Er beschreibt diese Methode als eine Möglichkeit, „den Compiler auf den Kopf zu stellen“, mit einem Skelett eines Compilers mit Steuerelementen für menschliche Anleitung und Anpassung. Darüber hinaus kann sein Group seine maßgeschneiderten Zeitplaner hinzufügen, die dabei helfen können, spezialisierte {Hardware} wie maschinelle Lernbeschleuniger von IBM Analysis anzusprechen. Die Anwendungen für diese Arbeit umfassen die ganze Bandbreite: Laptop Imaginative and prescient, Objekterkennung, Sprachsynthese, Bildsynthese, Spracherkennung, Textgenerierung (große Sprachmodelle) usw.
Ein umfassendes Projekt, das er mit dem Labor entwickelt, geht noch einen Schritt weiter und betrachtet die Arbeit aus einer systemischen Perspektive. Unter der Leitung seines Beraters und Laborpraktikanten William Brandon denkt Ragan-Kelleys Group in Zusammenarbeit mit dem Laborforscher Rameswar Panda über große Sprachmodelle (LLMs) nach und findet Wege, die Berechnung und die Programmierarchitektur des Modells leicht zu ändern, damit die transformatorbasierten Modelle effizienter auf KI-{Hardware} laufen können, ohne an Genauigkeit einzubüßen. Ihre Arbeit, sagt Ragan-Kelley, weicht in erheblichem Maße von den üblichen Denkweisen ab, was sich potenziell positiv auf die Kostensenkung, die Verbesserung der Fähigkeiten und/oder die Verkleinerung des LLM auswirkt, damit es weniger Speicher benötigt und auf kleineren Computern läuft.
Es ist dieses avantgardistischere Denken, wenn es um Rechenleistung und {Hardware} geht, das Ragan-Kelley auszeichnet und in dem er einen Wert sieht, insbesondere auf lange Sicht. „Ich denke, es gibt Bereiche (der Forschung), die verfolgt werden müssen, die aber intestine etabliert oder offensichtlich sind oder so allgemeingültig sind, dass viele Leute sie entweder bereits verfolgen oder verfolgen werden“, sagt er. „Wir versuchen, Ideen zu finden, die sowohl große Auswirkungen auf die Welt haben als auch Dinge sind, die nicht unbedingt passieren würden oder die meiner Meinung nach vom Relaxation der Group im Verhältnis zu ihrem Potenzial nicht ausreichend berücksichtigt werden.“
Der Kurs, den er jetzt unterrichtet, 6.106 (Software program Efficiency Engineering), ist ein Beispiel dafür. Vor etwa 15 Jahren kam es zu einem Wechsel von Einzelprozessoren zu mehreren Prozessoren in einem Gerät, was dazu führte, dass viele akademische Programme begannen, Parallelität zu lehren. Doch wie Ragan-Kelley erklärt, erkannte das MIT, wie wichtig es ist, dass die Studenten nicht nur Parallelität verstehen, sondern auch Speicheroptimierung und die Verwendung spezialisierter {Hardware}, um die bestmögliche Leistung zu erzielen.
„Indem wir unsere Programmierweise ändern, können wir das Rechenpotenzial neuer Maschinen freisetzen und es den Menschen ermöglichen, weiterhin schnell neue Anwendungen und neue Ideen zu entwickeln, die diese immer kompliziertere und anspruchsvollere {Hardware} nutzen können.“