MLX
主要な特徴
使い慣れたAPI: MLXのPython APIはNumPyに非常に似ています。また、C++、C、SwiftのAPIも提供されており、Python APIと密接に対応しています。
関数変換の組み合わせ: 自動微分、自動ベクトル化、計算グラフの最適化のための関数変換を組み合わせて使用できます。
遅延計算: MLXでの計算は遅延評価方式です。配列は必要になるまで具体化されません。
動的グラフ構築: 計算グラフは動的に構築されます。関数の引数の形状を変更しても遅いコンパイルは発生せず、デバッグも簡単で直感的です。
マルチデバイス対応: 操作はサポートされているデバイス(現在はCPUとGPU)で実行できます。
統合メモリモデル: MLXの特徴的な点は統合メモリモデルです。MLXの配列は共有メモリに存在し、データ転送なしにサポートされているデバイスタイプで操作を実行できます。
設計思想
MLXは機械学習研究者によって、機械学習研究者のために設計されています。このフレームワークはユーザーフレンドリーでありながら、モデルのトレーニングとデプロイに効率的であることを目指しています。
例
MLXの例には以下のようなものがあります:
- Transformerを使用した言語モデルのトレーニング
- LLaMAを使用した大規模テキスト生成とLoRAによるファインチューニング
- Stable Diffusionを使用した画像生成
- OpenAIのWhisperを使用した音声認識
インストール
MLXはPyPIで利用可能です。Python APIをインストールするには以下のコマンドを実行します:
pip install mlx
または、condaを使用する場合:
conda install -c conda-forge mlx
MLXは、NumPy、PyTorch、Jax、ArrayFireなどのフレームワークにインスパイアされた設計となっています。機械学習研究者が新しいアイデアを素早く探索できるよう、拡張や改善が容易になるように設計されています。
Source
GitHub - ml-explore/mlx: MLX: An array framework for Apple silicon https://github.com/ml-explore/mlx?tab=readme-ov-file
CoreNet
概要
CoreNetは、研究者やエンジニアが標準的および新規の小規模から大規模なモデルを様々なタスクのためにトレーニングできるツールキットです。対象となるタスクには以下が含まれます:
- 基盤モデル(CLIPやLLMなど)
- 物体分類
- 物体検出
- セマンティックセグメンテーション
主な特徴
幅広いモデルサポート: CoreNetは、MobileNet、ResNet、ViTなど多様なモデルアーキテクチャをサポートしています。
再現可能なトレーニングレシピ: プロジェクトディレクトリには、公開された研究のための再現可能なトレーニングレシピ、事前トレーニング済みモデルの重み、チェックポイントが提供されています。
MLX対応: Apple Silicon上で効率的にCoreNetモデルを実行するためのMLX例が含まれています。
豊富なデータセットサポート: 音声分類、画像分類、物体検出、言語モデリング、マルチモーダル(画像-テキスト)、セグメンテーションなど、様々なタスク向けのデータセットをサポートしています。
インストールと使用
CoreNetはGitHubで公開されており、Linux、macOS上でPython環境を使用してインストールできます。インストール手順には、Git LFSの使用やPyTorchなどの依存関係のセットアップが含まれます。
開発背景
CoreNetはCVNetsから進化したもので、コンピュータビジョンを超えてより広範なアプリケーションをカバーするように拡張されました。この拡張により、LLMを含む基盤モデルのトレーニングが可能になりました。
CoreNetは、機械学習研究を促進し、Appleのハードウェア(特にApple Silicon)上での効率的なモデルトレーニングと推論を可能にすることを目的としています。
Source
GitHub - apple/corenet - A library for training deep neural networks https://github.com/apple/corenet