Ray ジョブでジョブパラメータを使用する - AWS Glue

Ray ジョブでジョブパラメータを使用する

AWS Glue Ray ジョブの引数は、AWS Glue for Spark ジョブの引数を設定するときと同じ方法で設定します。AWS Glue API の詳細については、「ジョブ」を参照してください。AWS Glue Ray ジョブはさまざまな引数を用いて設定できます。これらはこちらのリファレンスに記載されています。また、独自の引数を指定することもできます。

ジョブは、Job Parameters (ジョブパラメータ) 見出しの Job details (ジョブの詳細) タブからコンソールで設定できます。また、ジョブに DefaultArguments、またはジョブ実行に Arguments を設定することで、AWS CLI を使用してジョブを設定することもできます。デフォルトの引数とジョブパラメータは、複数回実行してもジョブに対して有効です。

以下は、特殊なパラメータをセットするために --arguments を使用する、ジョブ実行の構文例です。

$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py",--test-environment="true"'

引数を設定すると、環境変数を使用して Ray ジョブ内からジョブパラメータにアクセスできます。そうすることで、ジョブを実行するたびにジョブの設定を行うことができます。環境変数の名前は、先頭の -- を除いたジョブ引数の名前になります。

例えば、上記の例では、変数の名前は scriptLocation および test-environment になります。次に、標準ライブラリで利用できる方法を使用して引数を取得します (test_environment = os.environ.get('test-environment'))。Python で環境変数にアクセスする方法の詳細については、Python のドキュメントの「os module」を参照してください。

Ray ジョブがログを生成する方法を設定する

デフォルトでは、Ray ジョブは CloudWatch と Amazon S3 に送信されるログとメトリクスを生成します。--logging_configuration パラメータを使用してログの生成方法を変更できます。現在のところ、これを使用して Ray ジョブがさまざまなタイプのログを生成しないようにすることができます。このパラメータは、変更したいログや動作に対応するキーを持つ JSON オブジェクトを取ります。次のキーがサポートされています。

  • CLOUDWATCH_METRICS — ジョブの状態を視覚化するために使用できる CloudWatch メトリクスシリーズを設定します。メトリクスの詳細については、「メトリクスによる Ray ジョブのモニタリング」を参照してください。

  • CLOUDWATCH_LOGS — ジョブの実行ステータスに関する Ray アプリケーションレベルの詳細を提供する CloudWatch ログを設定します。ログの詳細については、ログから AWS Glue for Ray エラーをトラブルシューティングする を参照してください。

  • S3 — AWS Glue が Amazon S3 に何を書き込むかを設定します。主として CloudWatch ログと同様の情報ですが、ログストリームではなくファイルとして書き込まれます。

Ray ログ記録の動作を無効にするには、値 {\"IS_ENABLED\": \"False\"} を指定します。例えば、CloudWatch メトリクスと CloudWatch ログを無効にするには、以下の設定を指定します。

"--logging_configuration": "{\"CLOUDWATCH_METRICS\": {\"IS_ENABLED\": \"False\"}, \"CLOUDWATCH_LOGS\": {\"IS_ENABLED\": \"False\"}}"

リファレンス

Ray ジョブは、Ray ジョブおよびジョブ実行の、スクリプト環境のセットアップに使用できる、以下の引数名を認識します。

  • --logging_configuration — Ray ジョブによって作成されるさまざまなログの生成を停止するために使用されます。これらのログは、すべての Ray ジョブでデフォルトで生成されます。形式: 文字列がエスケープされた JSON オブジェクト。詳細については、「Ray ジョブがログを生成する方法を設定する」を参照してください。

  • --min-workers — Ray ジョブに割り当てられるワーカーノードの最小数。ワーカーノードは、複数のレプリカを実行できます。レプリカは仮想 CPU ごとに 1 つ割り当てられます。形式: 整数。最小値: 0。最大値: ジョブ定義で --number-of-workers (NumberOfWorkers) に指定できる値。ワーカーノードの考慮に関する詳細は、「Ray ジョブのワーカーの考慮」を参照してください。

  • --object_spilling_config — AWS Glue for Ray は、Ray のオブジェクトストアで利用できるスペースを拡張する方法として、Amazon S3 の使用をサポートしています。この動作を有効にするには、このパラメータを使用して Ray に object spilling の JSON 設定オブジェクトを提供します。Ray の object spilling 設定の詳細については、Ray のドキュメントの「Object Spilling」を参照してください。形式: JSON オブジェクト。

    AWS Glue for Ray では、一度にディスクへのスピリングまたは Amazon S3 へのスピリングのいずれかのみがサポートされています。この制限内であれば、スピリングに複数の場所を指定できます。Amazon S3 にスピリングする場合は、IAM 権限をこのバケットのジョブに追加することも必要になります。

    CLI の構成として JSON オブジェクトを提供する場合は、JSON オブジェクトの文字列をエスケープした文字列として提供する必要があります。例えば、1 つの Amazon S3 パスにスピリングする文字列の値は、"{\"type\": \"smart_open\", \"params\": {\"uri\":\"s3path\"}}" のようになります。AWS Glue Studio で、このパラメータを特別な形式のない JSON オブジェクトとして指定します。

  • --object_store_memory_head — Ray のヘッドノードの Plasma オブジェクトストアに割り当てられるメモリ。このインスタンスは、クラスター管理のサービスおよびワーカーレプリカを実行します。この値は、ウォームスタート後のインスタンスの空きメモリの割合を表します。このパラメータは、メモリを大量に消費するワークロードの調整に使用します。ほとんどのユースケースにはデフォルト値を使用できます。形式: 正の整数。最小値: 1。最大値: 100。

    Plasma の詳細については、Ray のドキュメントで「The Plasma In-Memory Object Store」(Plasma インメモリオブジェクトストア) を参照してください。

  • --object_store_memory_worker — Ray のワーカーノードの Plasma オブジェクトストアに割り当てられるメモリ。これらのインスタンスはワーカーレプリカのみを実行します。この値は、ウォームスタート後のインスタンスの空きメモリの割合を表します。このパラメータは、メモリを大量に消費するワークロードを調整するために使用されます。ほとんどのユースケースにはデフォルト値を使用できます。形式: 正の整数。最小値: 1。最大値: 100。

    Plasma の詳細については、Ray のドキュメントで「The Plasma In-Memory Object Store」(Plasma インメモリオブジェクトストア) を参照してください。

  • --pip-install — インストールされる Python パッケージのセット。この引数を使用して PyPI からパッケージをインストールできます。形式: カンマ区切りリスト。

    PyPI パッケージのエントリは、ターゲットパッケージの PyPI 名とバージョンを含む package==version の形式です。エントリは、Python のバージョンマッチングを使用してパッケージとバージョンをマッチさせるため、シングルイコール = ではなく、== のようにします。バージョンマッチングの演算子は他にもあります。詳細については、Python ウェブサイトの「PEP 440」を参照してください。--s3-py-modules を使用してカスタムのモジュールを提供することもできます。

  • --s3-py-modules — Python モジュールのディストリビューションをホストする Amazon S3 パスのセットです。形式: カンマで区切られたリスト。

    これを使用すれば、独自のモジュールを Ray ジョブに配布できます。--pip-install を使用して PyPI からモジュールを提供することもできます。AWS Glue ETL とは異なり、カスタムのモジュールは pip では設定されず、ディストリビューション用に Ray に渡されます。詳細については、「Ray ジョブ用の Python モジュールを追加する」を参照してください。

  • --working-dir – Amazon S3 でホストされている .zip ファイルへのパスです。このパスには、Ray ジョブを実行しているすべてのノードに配布されるファイルが格納されています。形式: 文字列。詳細については、「Ray ジョブへのファイルの提供」を参照してください。