2 ポイント 投稿者 GN⁺ 2024-04-25 | 1件のコメント | WhatsAppで共有

Appleが開発したディープラーニングフレームワーク CoreNet の紹介

  • CoreNet は Apple が開発したディープラーニングフレームワークで、標準的な大規模モデルや新しい大規模モデルをさまざまなタスク向けに学習できる
    • Foundation Model(CLIP、LLM)、物体分類、物体検出、Semantic Segmentation などのタスクをサポート
  • 最近更新された v0.1.0 には OpenELM、CatLIP、MLX のサンプルなどが含まれる

CoreNet を活用した Apple の研究成果

  • OpenELM: 効率的で、オープンソースとして学習・推論が可能な Language Model
  • CatLIP: Web-scale の画像・テキストデータを用い、2.7 倍高速な事前学習で CLIP レベルの性能を達成
  • FastVit: 構造的再パラメータ化を活用した高速なハイブリッド Vision Transformer
  • Bytes Are All You Need: ファイルのバイト単位に直接作用する Transformer
  • MobileOne: 1ms レイテンシのモバイル向けバックボーンネットワーク
  • RangeAugment: Range Learning を活用した効率的な Online Augmentation 手法
  • MobileViT: モバイル向けに最適化された軽量 Vision Transformer
  • そのほか多数の研究成果を紹介

インストールと開発環境の構成

  • Git LFS のインストールが必要(テスト、Jupyter Notebook の実行、コントリビューションのために必要)
  • Linux では Python 3.10+、PyTorch v2.1.0+ を推奨
  • macOS では Python 3.9+ で十分
  • オプションの依存パッケージは、コントリビューションやテスト実行時に必要
  • 詳細な Linux / macOS のインストール方法と、オーディオ / ビデオ処理用パッケージの導入方法を説明

CoreNet のディレクトリ構成

  • tutorials: 入門向けサンプル
    • 新しいデータセットで最初からモデルを学習する
    • SLURM とマルチノード学習ガイド
    • CLIP、Semantic Segmentation、Object Detection のサンプル
  • projects: 各タスク別の学習レシピ、事前学習済み重み、チェックポイントを提供
    • README.md にドキュメント、事前学習済み重みへのリンク、引用情報を含む
    • <task_name>/<model_name>.yaml ファイルで再現可能な学習 / 評価設定を提供
  • mlx_example: Apple Silicon で CoreNet モデルを効率的に実行するサンプル
  • corenet/modeling/models: タスク別に構成されたモデル実装
    • デコレータでタスク名とモデル名を指定
    • YAML 設定ファイルで使用するモデルクラスの指定方法を説明
  • corenet/data/datasets: タスク別に構成されたデータセット
  • そのほか YAML 設定で参照されるクラス実装ディレクトリを説明
    • loss_fnmetricsoptimsdata など

CoreNet プロジェクト情報

  • Sachin が開発を開始し、現在は Sachin、Maxwell Horton、Mohammad Sekhavat、Yanzi Jin がメンテナンスしている
  • コミュニティからの Pull Request による貢献を歓迎。コントリビューション文書を参照
  • CoreNet は CVNets から発展したプロジェクトで、Vision 以外にも LLM などの Foundation Model の学習を支援するために拡張された

GN⁺ の見解

  • CoreNet は最新の SOTA モデル群を網羅する包括的なディープラーニングフレームワークに見える。SOTA モデルの実装提供に加え、学習パイプラインまで備えているため、既存研究成果の再現が容易そうだ。

  • Apple が開発したフレームワークであるだけに、Apple Silicon デバイスでの最適化された動作が期待できる。特に MLX のサンプルを通じて、Apple Silicon での最適化の方向性をうかがえる。

  • Vision タスクだけでなく、LLM などの Foundation Model の学習までサポートしている点が特徴。ただし現在公開されているバージョンは 0.1.0 で、まだ初期段階のようだ。今後のアップデート計画やロードマップが気になる。

  • PyTorch ベースのフレームワークである点から、PyTorch エコシステムの多様な機能を活用できそうだ。ただし現時点のプロジェクト構造を見る限り、ほかのフレームワークとの相互運用は難しそうだ。

  • ONNX や TorchScript を通じたモデル Export 機能が提供されるとよさそうだ。また、iOS・macOS アプリ開発時の CoreML への変換など、Apple エコシステムとの連携方法も検討の余地がある。

1件のコメント

 
GN⁺ 2024-04-25
Hacker News のコメント
  • CoreNet は CVNets から発展したもので、コンピュータビジョンを超えて、より幅広いアプリケーションを包含するようになった。これにより、LLM を含む基盤モデルの学習が容易になる。
  • CoreNet の default_trainer.py を見ると、PyTorch の Tensor を使っているが、独自の学習方法を実装している。独自の LR スケジューラとオプティマイザを実装しており、呼び出し側は必要に応じて PyTorch の Adam を使うこともできる。
  • 既存フレームワークと連携するのではなく、最初から構築するのは興味深い選択であり、たぶんとても Apple らしい。
  • MLX の例は、現時点では推論しかできないように見える。MLX 特化実装の受け皿になる可能性がありそうだ。
  • 最近の Datakalab と DarwinAI の買収を踏まえると、今後 1 年でどう進展するのか興味深い。
  • Apple は Jax 上に構築された axlearn ライブラリも積極的に開発している。Apple の ML チームの半分は PyTorch を、残り半分は Jax を使っているように見える。
  • README では CatLIP という新しいモデルにも触れられていたが、リンクは壊れている。
  • CoreNet は PyTorch ベースで構築されている。
  • MLX は Apple Silicon に最適化された、PyTorch に相当するものだと理解している。CoreNet が MLX モデルの分散学習のためのものなのか、あるいは目的が何なのか気になる。
  • このリポジトリに、さまざまなモデルや使い方について小さな API 例を生成できる LLM エージェントがあるとよさそうだ。
  • Apple M1 でニューラルネットワークの学習と推論を行うには、どのライブラリがおすすめだろうか。C++ または Rust で使いたく、ニューラルネットワークは最大 5M パラメータ程度を想定している。
  • MPS バックエンドを使う Huggingface Transformers の代わりに、これを使う利点は何だろうか。
  • README で見落としていない限り、Apple Silicon での学習をサポートしているのかは明確ではない。
  • Apple が LLM 学習に関するオープンな情報を推進している点は興味深い。世界は変わりつつある。