fferflo/einx

Universal Notation for Tensor Operations in Python

解決する課題

einxは、異なる機械学習フレームワーク間でテンソル演算を記述する複雑なプロセスを簡素化します。テンソルをどのように操作・縮約すべきかを記述するための汎用的かつ高レベルな記法を提供することで、面倒なreshape、transpose、squeeze操作を手動で記述する必要をなくします。

仕組み

このライブラリは、ループ記法の類推に基づいて目的の出力を記述する文字列ベースの記法を使用します。ユーザーは基本演算(sum、mean、またはカスタム関数など)と、その演算がどのようにベクトル化されるかを定義する式を指定します。

内部的には、einxは低速なPythonのforループを使用しません。代わりに、これらの式を最適化されたPythonコードスニペットにコンパイルし、基盤となるテンソルフレームワーク(NumPy、PyTorch、JAX、TensorFlow、MLXなど)のネイティブ演算を呼び出します。

対象ユーザー

AIや機械学習でテンソルを扱う研究者や開発者向けに設計されており、フレームワークに依存しない方法で複雑なテンソル変換や縮約を処理したい方に最適です。

主な特徴

  • 汎用インターフェース: NumPy、PyTorch、JAX、TensorFlow、MLX間でシームレスに動作します。
  • 柔軟な記法: 簡潔な文字列構文を使用して、値の並べ替え、分割、平坦化、収集をサポートします。
  • カスタム演算: アダプターを使用して、独自のPython関数をeinx記法に適応させることができます。
  • 透明なコンパイル: 演算に graph=True を渡すことで、生成されたバックエンドコードを検査できます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト