2 Punkte von GN⁺ 2024-04-25 | 1 Kommentare | Auf WhatsApp teilen

Einführung in CoreNet, ein von Apple entwickeltes Deep-Learning-Framework

  • CoreNet ist ein von Apple entwickeltes Deep-Learning-Framework, mit dem sich standardmäßige oder neue große Modelle für verschiedene Tasks trainieren lassen
    • Unterstützung für Tasks wie Foundation Models (CLIP, LLM), Objektklassifikation, Objekterkennung, semantische Segmentierung usw.
  • Das kürzlich aktualisierte v0.1.0 enthält unter anderem OpenELM, CatLIP und MLX-Beispiele

Apples Forschungsergebnisse mit CoreNet

  • OpenELM: ein effizientes Open-Source-Language-Model für Training und Inferenz
  • CatLIP: erreicht CLIP-Niveau bei 2,7-mal schnellerem Pretraining auf Web-Scale-Bild-Text-Daten
  • FastVit: schneller hybrider Vision Transformer mit struktureller Reparametrisierung
  • Bytes Are All You Need: ein Transformer, der direkt auf Byte-Ebene von Dateien arbeitet
  • MobileOne: ein Backbone-Netzwerk für Mobilgeräte mit 1 ms Latenz
  • RangeAugment: effiziente Online-Augmentation mithilfe von Range Learning
  • MobileViT: ein leichtgewichtiger, mobilfreundlicher Vision Transformer
  • Vorstellung vieler weiterer Forschungsergebnisse

Installation und Einrichtung der Entwicklungsumgebung

  • Git LFS muss installiert werden (erforderlich für Tests, das Ausführen von Jupyter Notebooks und Beiträge)
  • Unter Linux werden Python 3.10+ und PyTorch v2.1.0+ empfohlen
  • Unter macOS ist Python 3.9+ ausreichend
  • Optionale Abhängigkeitspakete werden für Beiträge oder das Ausführen von Tests benötigt
  • Erläuterung detaillierter Installationsmethoden für Linux und macOS sowie der Paketinstallation für Audio-/Videoverarbeitung

Verzeichnisstruktur von CoreNet

  • tutorials: Beispiele für den Einstieg
    • Modelle von Grund auf mit neuen Datensätzen trainieren
    • Leitfaden für SLURM- und Multi-Node-Training
    • Beispiele für CLIP, semantische Segmentierung und Objekterkennung
  • projects: bietet Trainingsrezepte, vortrainierte Gewichte und Checkpoints für jeden Task
    • Dokumentation, Links zu vortrainierten Gewichten und Zitationsinformationen in README.md
    • Reproduzierbare Trainings-/Evaluierungskonfigurationen über Dateien wie <task_name>/<model_name>.yaml
  • mlx_example: Beispiele, um CoreNet-Modelle auf Apple Silicon effizient auszuführen
  • corenet/modeling/models: nach Tasks organisierte Modellimplementierungen
    • Task-Name und Modellname werden per Decorator festgelegt
    • Erläuterung, wie die zu verwendende Modellklasse in YAML-Konfigurationsdateien angegeben wird
  • corenet/data/datasets: nach Tasks organisierte Datensätze
  • Erläuterung weiterer Implementierungsverzeichnisse für Klassen, auf die in YAML-Konfigurationen verwiesen wird
    • loss_fn, metrics, optims, data usw.

Informationen zum CoreNet-Projekt

  • Sachin begann die Entwicklung; derzeit wird es von Sachin, Maxwell Horton, Mohammad Sekhavat und Yanzi Jin gepflegt
  • Pull-Request-Beiträge aus der Community sind willkommen. Siehe Beitragsdokumentation.
  • CoreNet ist ein aus CVNets hervorgegangenes Projekt und wurde über Vision hinaus erweitert, um auch das Training von Foundation Models wie LLMs zu unterstützen

Meinung von GN⁺

  • CoreNet wirkt wie ein umfassendes Deep-Learning-Framework, das aktuelle SOTA-Modelle abdeckt. Neben Implementierungen der SOTA-Modelle bietet es auch Trainingspipelines, wodurch sich bestehende Forschungsergebnisse vermutlich leicht reproduzieren lassen.

  • Da es sich um ein von Apple entwickeltes Framework handelt, ist ein optimierter Betrieb auf Apple-Silicon-Geräten zu erwarten. Besonders die MLX-Beispiele geben einen Einblick in Optimierungsansätze für Apple Silicon.

  • Bemerkenswert ist, dass es nicht nur Vision-Tasks, sondern auch das Training von Foundation Models wie LLMs unterstützt. Allerdings ist die derzeit veröffentlichte Version 0.1.0 und scheint noch in einem frühen Stadium zu sein. Künftige Update-Pläne und eine Roadmap wären interessant.

  • Als PyTorch-basiertes Framework dürfte es die vielfältigen Funktionen des PyTorch-Ökosystems nutzen können. Aufgrund der aktuellen Projektstruktur scheint die Interoperabilität mit anderen Frameworks jedoch schwierig zu sein.

  • Eine Funktion zum Exportieren von Modellen über ONNX oder TorchScript wäre wünschenswert. Außerdem könnte man über Integrationsmöglichkeiten in das Apple-Ökosystem nachdenken, etwa die Konvertierung zu CoreML bei der Entwicklung von iOS- und macOS-Apps.

1 Kommentare

 
GN⁺ 2024-04-25
Hacker-News-Kommentare
  • CoreNet ist aus CVNets hervorgegangen und deckt inzwischen ein deutlich breiteres Anwendungsspektrum als nur Computer Vision ab. Dadurch wird das Training von Foundation Models einschließlich LLMs erleichtert.
  • Ein Blick auf default_trainer.py in CoreNet zeigt, dass zwar Tensoren von PyTorch verwendet werden, die Trainingsmethodik aber selbst implementiert ist. Es gibt einen eigenen LR-Scheduler und Optimizer, und Aufrufer können optional PyTorchs Adam verwenden.
  • Statt mit bestehenden Frameworks zusammenzuarbeiten, alles von Grund auf selbst aufzubauen, ist eine interessante Wahl — vermutlich eine sehr Apple-typische.
  • Die MLX-Beispiele scheinen derzeit nur Inferenz zu unterstützen. Es wirkt, als könnte das ein Landeplatz für eine MLX-spezifische Implementierung werden.
  • Angesichts der jüngsten Übernahmen von Datakalab und DarwinAI ist es spannend, wie sich das im kommenden Jahr weiterentwickeln wird.
  • Apple entwickelt auch die auf Jax aufbauende Bibliothek axlearn aktiv weiter. Es wirkt, als würde die eine Hälfte von Apples ML-Teams PyTorch nutzen und die andere Jax.
  • Im README wird auch ein neues Modell namens CatLIP erwähnt, aber der Link ist defekt.
  • CoreNet ist auf Basis von PyTorch aufgebaut.
  • MLX wird hier offenbar als ein zu PyTorch äquivalentes Framework verstanden, das für Apple Silicon optimiert ist. Ich frage mich, ob CoreNet für verteiltes Training von MLX-Modellen gedacht ist oder welchen Zweck es sonst erfüllen soll.
  • Es wäre schön, wenn es in diesem Repository einen LLM-Agenten gäbe, der kleine API-Beispiele für verschiedene Modelle und deren Verwendung erzeugen kann.
  • Welche Bibliothek würdet ihr für Training und Inferenz neuronaler Netze auf einem Apple M1 empfehlen? Ich würde sie gern in C++ oder Rust verwenden, und die Netze würden höchstens 5M Parameter haben.
  • Welchen Vorteil hat das hier gegenüber Huggingface Transformers mit MPS-Backend?
  • Es ist nicht klar, ob Training auf Apple Silicon unterstützt wird — jedenfalls nicht, sofern ich das im README nicht übersehen habe.
  • Interessant, dass Apple offene Informationen zum LLM-Training vorantreibt. Die Welt verändert sich.