0
1

More than 1 year has passed since last update.

Neptune MLのQuickStartを動かすために必要な事前準備

Posted at

Neptune MLをちょっと試してみたいなと思ってドキュメントを見ているとQuickStartのページにCloudFormationが置かれています。
https://docs.aws.amazon.com/ja_jp/neptune/latest/userguide/machine-learning-quick-start.html

ここを一通り触ってみたら概要掴めるかなと試してみたのですが、色々なところで躓いたのでその時の作業メモです。
ML系を試すにはQuickStartでもそれなりにリソースを要求されるのですが、自分の勉強用に新しく立ち上げたAWSアカウントだとサービスクォータがかなり小さく設定されている場合があり、上限緩和申請を出さないと先に進めない場面が何度かありました。

CFnスタックを作成してインスタンスを起動する
 → 少し試す
 → 上限エラー
 → 上限緩和申請を出して適用されるまで一旦スタックを削除
 → 再トライ

というフローを何度か繰り返したので結構心が折れそうでしたね。。

NeptuneのDBインスタンスもSageMakerのNotebookも上限緩和申請が通るまでずっと立ち上げておくと細かく課金されるので毎回立ち上げ直すのも面倒ですし、一通り必要なスペックについては試す前にまとめて申請を出してしまうのがおすすめです。

ちなみに試したサンプルコートは上記CFnスタックで作成されるノートブックに含まれている

/Neptune/04-Machine-Learning/Sample-Applications/01-People-Analytics

です。

必要クォータ一覧

サービス 項目 必要数
AWS Lambda Concurrent executions 100以上
Amazon EC2 Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances 72
Amazon SageMaker ml.r5.large for processing job usage 1
ml.r5.xlarge for endpoint usage 2

Lambda

Concurrent executions

Concurrent Executionsはデフォルト値1000となっていますが、あまりアクティブではないアカウントだと50と制限されている場合があります。
途中で立ち上がるNeptune-Exportが ReservedConcurrentExecutions : 50と設定されたLambdaを2つ3つ起動しようとして、スタック起動エラーになりました。

※ 最新のCFnテンプレートだと全部で6件くらいの予約になっていたため改善したのかもしれません。
とはいえここはデフォルト1000まで上げておいてもよいと思います。
ハンズオン資料のCFnテンプレートが手癖のようにReservedConcurrentExecutions : 50と書かれていて失敗するケースは過去にも経験がありました。

Amazon EC2

Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances

Neptune-ExportのExportジョブ(AWS Batch)がコンピューティング環境としてc5.18xlargeのオンデマンドインスタンスを要求します。

ここでクォータが足りていないと、ノートブック上から実行したneptune_ml export startで起動したAWS BatchのジョブがRUNNINGのまま先へ進まない(特にエラーにもならない)ということでハマりやすいポイントです。

Amazon SageMaker

ml.r5.large for processing job usage

neptune_mlマジックのドキュメントを読む限り、neptune_ml dataprocessing startコマンドではトレーニングジョブのインスタンスサイズを指定することはできなそうです。

NeptuneのAPI仕様によればインスタンスタイプ(processingInstanceType)のデフォルト値はml.r5の中で処理しようとしているデータサイズの最小値、とのことなので、必要になるインスタンスはテストデータのサイズに依存しそうです。
今回試そうとしたサンプルでは

ml.r5.large for processing job usage' is 0 Instances, with current utilization of 0 Instances and a request delta of 1 Instances

とのこと。

しかしdataprocessingのデフォルトタイプがml.r5なのにそれらが全てクォータ0っていうのはどういう想定なんでしょうね。。
スクリーンショット 2022-06-12 19.18.26.png

ml.r5.xlarge for endpoint usage

サンプルではnodeの推論エンドポイントとlinkの推論エンドポイントの2つを作成するため2件あるのが望ましいです。
節約するならlinkの推論を行う前にnodeのエンドポイントをクリーンアップしてしまえば1つでやりくりも可能。

パラメータ名修正

クォータとは関係ないですが、サンプルのnotebookではneptune_ml endpoint createコマンドの引数が

endpoint_params=f"""
--job-id {training_job_name} 
--model-job-id {training_job_name}"""

となっていましたが、どうやらAPIのI/Fが変更になったようで不正な引数エラーになってしまっていました。
下記のように書き換えることで無事動きました。

endpoint_params=f"""
--id {training_job_name} 
--model-training-job-id {training_job_name}"""
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1