CPythonの代替としてのGraalPy

GraalPyランタイムの選択 #

GraalPyは、Python 3.11準拠のランタイムを提供します。主な目標は、PyTorch、SciPy、およびそれらを構成するライブラリをサポートすること、そして豊富なPythonエコシステムからの他のデータサイエンスおよび機械学習ライブラリと連携することです。 GraalPyは、事前にコンパイルされたコンパクトなサイズのネイティブ実行可能ファイルとして配布されます。

GraalPyは次の機能を提供します

  • CPythonの代替。 GraalPyをCPythonの代替として使用します。 CPythonインストールパッケージの構造に最も似ているため、最も互換性があります。
  • Pythonアプリケーションの独自のデプロイメントモード。 GraalPyでPythonアプリケーションをコンパイルして、必要なすべてのリソースを埋め込んだ単一のネイティブバイナリを作成します。
  • GraalVMの言語エコシステムとツールへのアクセス。 GraalPyは、多くの標準PythonツールとGraalVMエコシステムのツールを実行できます。

GraalPyディストリビューション #

GraalPyは、**Oracle GraalVM上に構築されたGraalPy**と**GraalPy Community**として利用できます。

  • Oracle GraalVM上に構築されたGraalPyは、最高のエクスペリエンスを提供します。追加の最適化が付属しており、大幅に高速でメモリ効率が高くなっています。 Oracle GraalVMと同じGraalVM Free Terms and Conditions(GFTC)ライセンスの下でライセンスされており、商用および本番使用を含むすべてのユーザーによる使用が許可されています。料金が発生しない限り、再配布が許可されます。

  • GraalPy Communityは、GraalVM Community Edition上に構築されており、完全にオープンソースです。

GraalPyのOracleおよびCommunityディストリビューションでは、2つの言語ランタイムオプションが利用可能です

  • ネイティブ
    • GraalPyは、事前にネイティブ実行可能ファイルにコンパイルされます。
    • これは、GraalPyを実行するためにJVMが必要なく、サイズがコンパクトであることを意味します。
  • JVM
    • Javaの相互運用性を簡単に活用できます。
    • ピークパフォーマンスは、ネイティブオプションよりも高くなる可能性があります。

GraalPyの識別 #

4つのGraalPyランタイムは、*graalpy(-community)(-jvm)-<version>-<os>-<arch>*の一般的なパターンを使用して、次のように識別されます。

  Oracle コミュニティ
ネイティブ graalpy-<version>-<os>-<arch> graalpy-community-<version>-<os>-<arch>
JVM graalpy-jvm-<version>-<os>-<arch> graalpy-community-jvm-<version>-<os>-<arch>

比較 #

ランタイム ネイティブ (デフォルト) JVM
起動時間 高速 低速
ピークパフォーマンス到達時間 高速 低速
ピークパフォーマンス (GCも考慮) 良好 最高
Java相互運用性 構成が必要 動作する

GraalPyのインストール #

注:GraalPyのリリースとPyenvでの利用可能性の間には遅延があります。

Linux #

LinuxにGraalPyをインストールする最も簡単な方法は、Pyenv (Pythonバージョンマネージャー) を使用することです。 Pyenvを使用してバージョン24.1.0をインストールするには、次のコマンドを実行します

pyenv install graalpy-24.1.0
pyenv shell graalpy-24.1.0

pyenv installを実行する前に、最新のGraalPyバージョンを含めるように`pyenv`を更新する必要がある場合があります。

または、GitHubリリースから圧縮されたGraalPyインストールファイルをダウンロードすることもできます。

  1. *graalpy-XX.Y.Z-linux-amd64.tar.gz*または*graalpy-XX.Y.Z-linux-aarch64.tar.gz* (プラットフォームによって異なります) のパターンと一致するダウンロードを見つけてダウンロードします。
  2. ファイルを解凍し、`PATH`環境変数を更新して*graalpy-XX.Y.Z-linux-amd64/bin* (または*graalpy-XX.Y.Z-linux-aarch64/bin*) ディレクトリを含めます。

注:Oracle Linux 9では、GraalPyネイティブランタイムに必要な`libxcrypt`ライブラリもインストールします。 `yum install libxcrypt-compat`。

macOS #

macOSにGraalPyをインストールする最も簡単な方法は、Pyenv (Pythonバージョンマネージャー) を使用することです。 Pyenvを使用してバージョン24.1.0をインストールするには、次のコマンドを実行します

pyenv install graalpy-24.1.0
pyenv shell graalpy-24.1.0

pyenv installを実行する前に、最新のGraalPyバージョンを含めるように`pyenv`を更新する必要がある場合があります。

または、GitHubリリースから圧縮されたGraalPyインストールファイルをダウンロードすることもできます。

  1. *graalpy-XX.Y.Z-macos-amd64.tar.gz*または*graalpy-XX.Y.Z-macos-aarch64.tar.gz* (プラットフォームによって異なります) のパターンと一致するダウンロードを見つけてダウンロードします。
  2. 隔離属性を削除します。
     sudo xattr -r -d com.apple.quarantine /path/to/graalpy
    

    例えば

     sudo xattr -r -d com.apple.quarantine ~/.pyenv/versions/graalpy-24.1.0
    
  3. ファイルを解凍し、`PATH`環境変数を更新して*graalpy-XX.Y.Z-macos-amd64/bin* (または*graalpy-XX.Y.Z-macos-aarch64/bin*) ディレクトリを含めます。

Windows #

  1. GitHubリリースから、*graalpy-XX.Y.Z-windows-amd64.tar.gz*のパターンと一致する、圧縮されたGraalPyインストールファイルを見つけてダウンロードします。
  2. ファイルを解凍し、`PATH`変数を更新して*graalpy-XX.Y.Z-windows-amd64/bin*ディレクトリを含めます。

Windowsの制限事項

GraalPyのWindowsディストリビューションは、LinuxまたはmacOS counterpartsよりも制限が多いため、すべての機能とパッケージが利用できない場合があります。

次の既知の問題があります

  • JLineはWindowsをダム端末として扱い、REPLではオートコンプリートと編集機能が制限されます
  • REPLでのインタラクティブな`help()`は機能しません
  • 仮想環境内
    • *graalpy.cmd*および*graalpy.exe*は壊れています
    • *pip.exe*は直接使用できません
    • `pip`はキャッシュファイルのロードに問題があります。 `--no-cache-dir`を使用してください
    • 純粋なPythonバイナリホイールのみをインストールでき、ネイティブ拡張機能またはソースビルドはインストールできません
    • パッケージをインストールするには、`myvenv / Scripts / python.exe -m pip --no-cache-dir install <pkg>`を使用します
  • PowerShellから実行する方がCMDから実行するよりも効果的です。CMDではさまざまなスクリプトが失敗します

パッケージのインストール #

GraalPyを使用する最良の方法は、venv仮想環境からです。 これにより、ラッパースクリプトが生成され、標準のPythonインタープリターとしてシェルから実装を使用できるようになります。

  1. 次のコマンドを実行して、GraalPyで仮想環境を作成します
     graalpy -m venv <venv-dir>
    

    例えば

     graalpy -m venv ~/.virtualenvs/graalpy-24.1.0
    
  2. シェルセッションで環境をアクティブにします
     source <venv-dir>/bin/activate
    

    例えば

     source ~/.virtualenvs/graalpy-24.1.0/bin/activate
    

仮想環境では、`python`、`python3`、`graalpy`など、複数の実行可能ファイルが利用可能です。

注:Python環境を非アクティブ化してシェルに戻るには、`deactivate`を実行します。

仮想環境を使用する場合、`pip`パッケージインストーラーが利用可能です。 GraalPy実装の`pip`は、これらをより適切に動作させるためにパッチを提供する場合、最新以外のバージョンを選択する場合があります。

お問い合わせ