CoreNet: 深層ニューラルネットワーク学習のためのライブラリ
(github.com/apple)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_fn、metrics、optims、dataなど
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件のコメント
Hacker News のコメント
default_trainer.pyを見ると、PyTorch の Tensor を使っているが、独自の学習方法を実装している。独自の LR スケジューラとオプティマイザを実装しており、呼び出し側は必要に応じて PyTorch の Adam を使うこともできる。