SPL04-R: Creating and Tuning Models with Amazon SageMaker の内容をSagemaker Neoでやってみた #reinvent
はじめに
好物はインフラとフロントエンドのかじわらゆたかです。 re:invent で発表されたSagemaker Neo。これを用いてXGBoostを使っての推論を行って見たいと思います。 今回、Sagemaker Neoで動かす内容そのものは、Sagemakerで動かしたものと同様のものになりますので、そちらも参考にしてください。
SPL04-R: Creating and Tuning Models with Amazon SageMakerの内容を復習してみた #reinvent
Sagemaker Neo で XGBoost を用いてみた
今回用いるJupyterNotebookはこちらにあります。
非Sagemaker Neoで動かした版のNoteBookはこちら
Optimizing model for prediction using Neo API
の箇所にSagemaker Neoで動かす場合のコードが記載されています。
Train
で作ったxgbオブジェクトのcompile_model
というメソッドを呼んでいます。
また、その中でml_c5
のインスタンスファミリーを指定しています。
output_path = '/'.join(xgb.output_path.split('/')[:-1]) compiled_model = xgb.compile_model(target_instance_family='ml_c5', input_shape={'data':[1, 69]}, role=role, framework='xgboost', framework_version='0.7', output_path=output_path)
実際に実行しようとするとエラーが発生しました。
ClientError: An error occurred (UnknownOperationException) when calling the CreateCompilationJob operation: The requested operation is not supported in the called region.
エラーメッセージを見ると、リージョン対応外とのことです。
ap-northeast-1
リージョンで動かしており、普通に全Regionで問題なくできるだろうと思っていたのですが、Sagemaker Neo の利用は 一部Regionのみとなっています。
Q: SageMaker Neo はどの AWS リージョンで利用できますか?
現在、SageMaker Neo はバージニア北部、オレゴン、オハイオ、アイルランドでご利用いただけます。
もう一度対応リージョンであるオハイオリージョンで作成し、実行します。 その際に用いるS3バケットもSagemakerを実行するリージョンと同一リージョンである必要があるので、その点注意が必要です。
モデルのコンパイルができれば、その後モデルをエンドポイントにデプロイします。
Sagemaker Neoを使った場合の推論用関数についても、特に違い等はありません。 Sagemaker Neoのサンプルでは作った配列をそのまま出して終わっているので、 コスト最適化を求める処理も動かしてみましたが、当然のことながら結果等に変化はありませんでした。
お片付け
不要であればエンドポイントは削除し、Notebookインスタンスも停止しておきましょう。
sagemaker.Session().delete_endpoint(compiled_predictor.endpoint)
まとめ
Sagemaker Neoだからどうこうってのは特に無いって印象でした。
裏側としてインスタンスに最適化されていたりといったことはされている模様です。
Sagemaker Neoがつかえるリージョンには制約があるので、その点注意が必要です。
今回同一のデータから作ったModelをSagemaker Neo版とSagemaker版とで作れたので、
Modelの違い等も調べてみたいと思います。