Carton ist eine Open-Source-API, die entwickelt wurde, um die Ausführung von Machine-Learning (ML)-Modellen über verschiedene Programmiersprachen hinweg zu erleichtern, ohne dass komplexe Konvertierungen oder frameworkspezifischer Code erforderlich sind. Durch das Einkapseln von Modellen mit wesentlichen Metadaten in eine standardisierte Zip-Datei sorgt Carton für nahtlose Integration und Bereitstellung, sodass Entwickler sich auf die Anwendungslogik konzentrieren können, anstatt auf Kompatibilitätsprobleme.
Hauptmerkmale und Funktionalität:
- Framework-unabhängige Ausführung: Carton ermöglicht das Ausführen von ML-Modellen aus jeder Programmiersprache, einschließlich Python, JavaScript, TypeScript, Rust, C, C++, C#, Java, Golang, Swift, Ruby, PHP, Kotlin und Scala.
- Modellverpackung: Es verpackt Modelle mit Metadaten in eine Zip-Datei, ohne das ursprüngliche Modell zu verändern, und vermeidet so fehleranfällige Konvertierungsschritte.
- Automatische Läuferauswahl: Beim Laden eines verpackten Modells liest Carton die enthaltenen Metadaten, um den geeigneten "Runner" zu bestimmen und lädt ihn bei Bedarf automatisch herunter.
- Optimierte Leistung: In Rust implementiert mit Bindungen zu mehreren Sprachen, bietet Carton einen optimierten Kern, der den Overhead minimiert, wobei vorläufige Benchmarks weniger als 100 Mikrosekunden pro Inferenzaufruf anzeigen.
- Plattformübergreifende Unterstützung: Unterstützt x86_64 Linux und macOS, aarch64 Linux (z.B. AWS Graviton), aarch64 macOS (z.B. Apple Silicon Chips) und WebAssembly (mit bevorstehender Unterstützung für WebGPU-Runner).
Primärer Wert und gelöstes Problem:
Carton adressiert die Herausforderung, ML-Modelle in verschiedenen Programmierumgebungen auszuführen, indem es eine einheitliche, framework-unabhängige API bereitstellt. Dies eliminiert die Notwendigkeit für Entwickler, frameworkspezifischen Code zu schreiben oder komplexe Modellkonvertierungen durchzuführen, wodurch Entwicklungszyklen beschleunigt und potenzielle Fehler reduziert werden. Durch die Entkopplung des Inferenzcodes von spezifischen ML-Frameworks ermöglicht Carton Entwicklern, mit den Fortschritten in diesem Bereich Schritt zu halten, ohne an einen bestimmten Technologiestack gebunden zu sein.