Amazon SageMaker(というかJupyter Notebook)からRescaleを操作する

記事タイトルとURLをコピーする

コンピュータの演算性能向上と低価格化により、流体解析や構造解析などCAEのシミュレーションを複数の条件で同時に実行できるようになりました。その結果、CAEから得られた大量のシミュレーション結果を、機械学習の教師データとして利用することが現実的になってきました。実際の例としては、最適化アルゴリズムを使用した設計探査や、深層学習による温度分布からの境界条件の推定などが実現しつつあります

このような、CAEと機械学習を連携させる手法を実装するための構成として、機械学習はAmazon SageMaker、CAEはRescaleにて実行する構成を思いつきました。両方ともクラウドサービスなので、少額で始めて、うまくいったら大規模に拡張することができます。また、コードの実行と修正を繰り返すインタラクティブな部分はAWS、複数の条件のシミュレーションを一気に実行する部分はRescaleと、双方のいいとこどりをしたいという目論みもあります

本記事では、Amazon SageMakerの開発環境となっているJupyter Notebookから、Rescaleにジョブを投入してみます。RescaleはREST APIを備えているため、プログラムからクラスタ起動やジョブ投入の操作ができます。そこで、Jupyter Notebook上のPythonスクリプトからRescaleのAPIを実行し、ジョブ一覧の取得、ジョブの投入、出力ファイルのダウンロードなどをやってみます

構成の概要

本記事で使用する構成の概要図を示します。手元の環境のブラウザからAWSのマネジメントコンソールにログインし、Amazon SageMakerのJupyter Notebookを使用します。そこでPythonスクリプトからRescale APIを実行し、ジョブの投入や出力ファイルのダウンロードなどの操作します

やってみる

.ipynbファイルの取得

Jupyter Notebookで実行するコードは、.ipynbという拡張子で保存されます。Rescaleへサンプルジョブを投入する.ipynbをこちらのGitHubGistに用意しました。Download ZIPをクリックして手元に保存し、解凍してrescale_job_submit.ipynbを入手します。このファイル中のスクリプトは、Rescaleの東京リージョンを利用する前提で書かれています。他のリージョンを使いたい場合は、URLのplatform.rescale.jpの部分をplatform.rescale.comeu.rescale.comに書き換えてください

SageMaker の notebook instance を作成

AWSのマネジメントコンソールにログインした状態でこちらにアクセスすると、SageMakerのトップページが開きます Create notebook instanceをクリックします。以下のような設定画面が開きます Notebook instance name, Notebook instance type, VPC, Encryption key については以下のように設定します (サンプルの.ipynbを試すだけであれば、以下の設定で十分です)

項目 設定値
Notebook instance name rescale_api
Notebook instance type ml.t2.medium
VPC No VPC
Encryption key (入力しない)

IAM roleは、プルダウンを開くと、選択肢としてCreate a new roleEnter a custom IAM role ARNが表示されます。SageMakerを初めて使う場合はCreate a new roleを選択します。Create an IAM roleという設定画面が開くので、以下のように設定し、Create roleをクリックします(サンプルの.ipynbはS3を使用しないため、この設定で十分です) 以下のような設定画面に戻るので、右下のCreate notebook instanceをクリックします Notebook instanceの一覧ページに飛びます。作成したNotebook instanceのStatusがInServiceになるまで待ち、Openをクリックします するとJupyter Notebookの画面が開きます

.ipynbのアップロード、修正、実行

先ほどGistからダウンロードしたrescale_job_submit.ipynbを、Jupyter Notebookの画面からアップロードします。左上のUploadボタンをクリックし、rescale_job_submit.ipynbを選択します。すると以下のようにファイル名を入力できる画面になるので、青色のUploadボタンを押します rescale_job_submit.ipynbをJupyter Notebookで開けるようになるので、[your_token]の部分をRescaleのAPIトークンに置き換えます あとは、コードブロック(Pythonスクリプトが書かれた枠)を上から順番に実行していきます。コードブロック選択中に、GUIの実行ボタンを押す、またはCtrl+Enterを押すと実行できます。全て正常に実行できれば、最後にRescaleにて出力されるログファイルprocess_output.logの中身が出力されるはずです 出力されたファイルはJupyterのファイル一覧からも見ることができます

Notebook instanceの削除

検証が終わったら、Notebook instanceを削除(Delete)して、余分なAWS利用料金が発生しないようにします。削除するためには、まずは停止(Stop)させる必要があるため、Notebook instanceの一覧画面でStopをクリックします。StatusがStoppedになったら、ActionsのプルダウンからDeleteを選択します。本当に削除するか確認されるので、オレンジ色のDeleteボタンをクリックします

おわりに

本記事では、Amazon SageMakerにおいて.ipynbファイルを実行し、Rescaleにサンプルジョブを投入しました。ここで実行したジョブはechosleepを実行するだけの簡単なものですが、CAEアプリケーションによる解析ジョブも設定しておけば実行可能です。Jupyter Notebook(Amazon SageMaker含む)からRescaleへのジョブ投入は、CAEと機械学習を組み合わせる際に便利な構成となりそうです