web-dev-qa-db-ja.com

YARN 3とSpark:GPUを割り当てます

GPUを備えたエグゼキュータを要求するための有効なSparkオプションが見つかりません。

Sparkを介して利用可能なGPUで機械学習アルゴリズムを実行するために、HADOOPクラスターをセットアップしようとしています。

これまでのところ、最小限のクラスター(1つのリソースマネージャーと2つのノードマネージャー(それぞれ8コア、32Gb RAM、1つのNvidia GPU)を使用してセットアップを試しています。全員がUbuntu18.04を実行しています。

リソース検出は期待どおりに機能しています(16コア、56Gbメモリ、2yarn.io/gpuが表示されます)

ドキュメントには、「-conf spark.yarn.executor.resource.yarn.io/gpu=1」を使用する方法が記載されていますが、これは機能しません(spark-submitコマンドパラメーターと$ SPARK_CONF /metrics.properties)。

YARN 3はGPU分離を提供する最初のものであるため、古い(/より文書化された)バージョンへのロールバックを回避しようとしています。

これはSparkContextを介してコードで設定でき、その方法を知っていただければ幸いですが、私はMLエンジニアよりも管理者側であるため、これをconfファイルに一度だけ設定します。とにかく、この時点で、どんな解決策もいただければ幸いです。

リソース分離を有効にしてGPUを割り当てるための優れた構文を提供して喜んでいる人はいますか?

愛してるよ、ケビン

(HortonWorksHDPのYarn3.1.1/3.2.0)

1
Kévin Azoulay

Sparkはhadoop3.0.0の時点で多くのYARNリソースを好まないため(SparkはHadoop 2.6以降で動作すると言われていますが、暗黙的に「最大3.0を除外」を意味します)、回避策は次のとおりでした。 yarn.resource-types.yarn.io/gpu.minimum-allocationを1に設定し、私のpython =コード、エグゼキュータの注文をキャンセルします(sparkはコマンドラインから要求されたエグゼキュータが0のAMを起動しません)

sc = SparkContext(conf=SparkConf().setAppName("GPU on AM only").set("spark.executor.instances", 0))

醜いですが、現在のワークロードには十分であり、「Spark forHadoop3.0 +」の配布がすぐにできることを期待しています。

EDIT:コンパイルできますSpark forHadoop 3.1 profile、githubリポジトリの現在の状態から、spark.yarn..resource.yarn.io/gpuにアクセスできます。 ) プロパティ !

ここでも孤立に関する私の発見を共有します:

さまざまな試行を約2週間行った後、最終的にすべてのホストを完全にワイプして、最初からクリーンインストールすることにしました。それでも何も機能しません。次に、「ワンワーカー」セットアップを試し、カウント可能なリソースを手動で設定して割り当てメカニズムを試し、次に.... hortonWORKSはありません!しかし、私のグーグルはその時により適していました。カスタムリソースとCapacitySchedulerに関するHadoop関連の問題のようです。お楽しみください:

https://issues.Apache.org/jira/browse/YARN-9161https://issues.Apache.org/jira/browse/YARN-9205

今のところ(3.1.1/3.2.0)、capacity.CapacitySchedulerは、vCoreとRAMパラメーターのみを含むハードコードされた列挙型によって壊れています。スケジューラークラスをorg.Apacheに切り替える必要があります。 hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulerまた、yarn.scheduler.fair.resource-calculator = org.Apache.hadoop.yarn.util.resource行の「capacity」を「Fair」に置き換えます。 DominantResourceCalculator

GPUはyarnui2には表示されませんが、NodeManagerには表示され、最も重要なこととして、適切に割り当てられます。確かに見つけるのはめちゃくちゃでした。

0
Kévin Azoulay