ML in a Box: Analyzing Containerization Practices in Open Source ML Projects
Diese Arbeit präsentiert die erste groß angelegte empirische Studie von 1.993 Open-Source-ML-Dockerfiles, die aufzeigt, dass Container zwar unterschiedliche Rollen in ML-Workflows einnehmen, jedoch aufgrund häufiger Rebuilds, die durch Experimente ausgelöst werden, oft groß und ineffizient sind, was zur Identifizierung von sieben spezifischen Refactoring-Mustern zur Verbesserung der Build-Effizienz und Reduzierung des Footprints führt.
Originalarbeit unter CC0 1.0 der Gemeinfreiheit gewidmet (http://creativecommons.org/publicdomain/zero/1.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie sind ein Chefkoch, der eine riesige, hochtechnologische Küche leitet. In der Welt des Maschinellen Lernens (ML) sind Ihre „Rezepte“ der Code, Ihre „Zutaten“ sind Daten und Modelle, und Ihre „Küche“ ist ein Container. Ein Container ist wie eine in sich geschlossene, tragbare Küchenbox, die alles enthält, was man braucht, um ein bestimmtes Gericht zu kochen – damit es in New York, Tokio oder auf einem Raumschiff genau gleich schmeckt.
Lange Zeit wussten die Leute, dass diese Küchenboxen nützlich sind. Aber niemand wusste wirklich, wie groß sie waren, wie lange das Einpacken dauerte oder wie oft die Köche die ganze Box wegwerfen und von vorne anfangen mussten, nur weil sie ein einziges Gewürzglas getauscht hatten.
Ein Forscherteam beschloss, in 1.993 dieser ML-Küchenboxen aus 392 verschiedenen Projekten hineinzuschauen, um zu sehen, was wirklich dahintersteckt. Hier ist das Ergebnis, serviert mit einer Portion Realität.
Die Größe der „Küchenboxen“: Es ist eine große Sache
Zuerst haben sie die Boxen gewogen. Man könnte denken, ein Container sei leicht und flink, aber diese ML-Boxen sind Giganten.
- Im Durchschnitt wiegt ein Container 10,27 GB. Das ist so, als würde man eine ganze Bibliothek voller Enzyklopädien im Rucksack tragen, nur um ein Sandwich zu machen.
- Die „Training“-Boxen (in denen die KI lernt) sind am schwersten und wiegen im Durchschnitt 17,25 GB. Einige dieser Monster erreichen sogar 125 GB!
- Die „Inferenz“-Boxen (in denen die KI einfach nur die Arbeit erledigt) sind kleiner, etwa 1,72 GB, aber auch nicht gerade handlich.
Und das Packen dieser Boxen? Das kostet Zeit. Der durchschnittliche „Cold Build“ (das Packen einer Box von Grund auf) dauert 8,84 Minuten. Für die großen Trainings-Boxen kann es über 14 Minuten dauern. Das ist eine lange Zeit, um nur darauf zu warten, ob der Code funktioniert.
Der „Ups“-Moment: Warum wir Boxen wegwerfen
Hier ist der knifflige Teil. In einer normalen Küche ändern Sie bei einer Rezeptänderung einfach nur die Anweisungen. Aber in der ML-Welt arbeitet die Küche nach einem strengen „Schicht-System“. Stellen Sie sich vor, Sie bauen einen Turm aus Bauklötzen. Wenn Sie die Farbe des dritten Blocks ändern, müssen Sie den dritten, vierten, fünften Block und alle darüber liegenden Blöcke wieder abnehmen, selbst wenn die oberen Blöcke sich gar nicht verändert haben.
Die Forscher fanden heraus, dass 44,4 % aller Änderungen, die Entwickler an ihren Projekten vornahmen, einen kompletten Neuaufbau des Containers auslösten. Das bedeutet, dass sie fast die Hälfte der Zeit ihre harte Arbeit wegwarfen und von vorne anfingen.
Was verursachte das Wegwerfen?
Es lag meistens nicht am Rezept selbst (dem Dockerfile). Es waren die Zutaten!
- 96,4 % der Neuaufbauten passierten, weil jemand eine Datei geändert hatte, die in die Box kopiert wurde (wie ein Datensatz oder eine Codedatei).
- Nur 1,1 % der Neuaufbauten wurden dadurch ausgelöst, dass jemand die eigentlichen Anweisungen zum Bau der Box geändert hatte.
Die Verschwendung: 70 % der Arbeit sind umsonst
Dies ist der traurigste Teil der Geschichte. Wenn der „Schicht-Turm“ bricht, versucht die Küche, die bereits gebauten Blöcke wiederzuverwenden. Aber die Forscher fanden heraus, dass 71 % der Arbeit verschwendet wurden.
- Stellen Sie sich das so vor: Sie verbringen 10 Minuten damit, einen Turm aus Bauklötzen zu bauen. Sie stoßen den dritten Block um. Sie versuchen, die ersten zwei Blöcke wiederzuverwenden, aber dann müssen Sie den Rest des Turms neu bauen. Am Ende haben Sie nur etwa 30 % Ihrer Mühe wiederverwendet. Die anderen 70 % waren einfach nur die Wiederholung von Arbeit, die Sie bereits erledigt hatten.
Warum passiert das?
Es kommt darauf an, was Sie ändern.
- Wenn Sie das Experiment anpassen (das Gehirn der KI oder die Daten ändern), ist die Wahrscheinlichkeit am höchsten, den Turm abzubrechen. Das passiert 46 % der Zeit bei den Trainings-Boxen.
- Wenn Sie die Infrastruktur aktualisieren (wie die Wasserleitungen oder die Elektrik der Küche), brechen Sie den Turm fast immer ab und verlieren fast den gesamten Fortschritt.
Die gute Nachricht: Smarte Köche fanden Abkürzungen
Trotz des Chaos fanden die Forscher heraus, dass einige smarte Köche diese Probleme bereits lösten. Sie untersuchten die „besten“ Küchen (diejenigen, die am wenigsten Zeit verschwendeten) und fanden 7 spezifische Tricks, die sie anwandten, um die Verschwendung zu stoppen. Dies sind keine bloßen Vermutungen; es sind echte Änderungen, die Entwickler vorgenommen haben, die tatsächlich funktionierten.
Hier sind die 7 Tricks:
- Packen Sie die Lebensmittel nicht ein: Anstatt riesige Datensätze in die Box zu kopieren, sagen Sie der Box einfach, wo sie diese finden kann, wenn sie mit dem Kochen beginnt.
- Packen Sie das Modell nicht ein: Das Gleiche gilt für das KI-Modell selbst. Backen Sie es nicht in die Box ein; laden Sie es von außen, wenn es benötigt wird.
- Verlegen Sie die schwere Arbeit: Wenn Sie ein großes Modell herunterladen müssen, tun Sie dies früh im Rezept. So bleibt der große Download gecached (gespeichert), falls Sie später eine kleine Datei ändern.
- Teilen Sie die Küche auf: Wenn Sie eine Box sowohl für CPUs als auch für GPUs benötigen, erstellen Sie keine eine riesige Box mit allem drin. Erstellen Sie zwei kleinere, spezialisierte Boxen.
- Wählen Sie die richtigen Werkzeuge: Installieren Sie nicht die „GPU-Version“ eines Werkzeugs, wenn Sie nur die „CPU-Version“ benötigen. Das spart massiv Platz.
- Verschieben Sie das Flüchtige: Wenn Sie Ihre Konfigurationsdateien oft ändern, platzieren Sie diese im Rezept nach den großen Installationen, damit sie die schweren Schichten nicht unterbrechen.
- Laden Sie nicht die gesamte Historie herunter: Wenn Sie Code aus dem Internet abrufen, laden Sie nicht die gesamte Historie des Projekts herunter. Greifen Sie nur auf den neuesten Schnappschuss zu.
Das Fazit
Das Paper sagt nicht, dass diese Probleme „gelöst“ sind. Es sagt, dass ML-Container derzeit riesig, langsam und fragil sind. Entwickler verschwenden eine massive Menge an Zeit (etwa 70 % ihrer Neuaufbau-Bemühungen), weil sie zu viel in die Box packen und den Cache zu früh unterbrechen.
Aber die gute Nachricht ist: Wir wissen, wie man es behebt. Indem man diese 7 Tricks anwendet, kann man seine Container kleiner und seine Builds schneller machen. Es ist keine Magie; es ist einfach bessere Organisation. Die Forscher haben all dies gemessen, indem sie die Boxen tatsächlich gebaut und die Minuten gezählt haben, sodass wir wissen, dass diese Zahlen real sind. Wenn Sie das nächste Mal ein Machine-Learning-Projekt sehen, denken Sie daran: Es geht nicht nur um den Code; es geht darum, wie Sie die Küche packen.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.