Amazon SageMaker(というかJupyter Notebook)からRescaleを操作する【エンジニアブログより】
コンピュータの演算性能向上と低価格化により、流体解析や構造解析など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.com] や [eu.rescale.com] に書き換えてください。
SageMaker の notebook instance を作成
AWSのマネジメントコンソールにログインした状態でこちらにアクセスすると、SageMakerのトップページが開きます。
[Create notebook instance] をクリックします。以下のような設定画面が開きます。
[Notebook instance name] , [Notebook instance type] , [VPC] , [Encryption key] については以下のように設定します。 (サンプルの.ipynbを試すだけであれば、以下の設定で十分です)
[IAM role] は、プルダウンを開くと、選択肢として [Create a new role] と [Enter 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にサンプルジョブを投入しました。ここで実行したジョブは [echo] や [sleep] を実行するだけの簡単なものですが、CAEアプリケーションによる解析ジョブも設定しておけば実行可能です。Jupyter Notebook(Amazon SageMaker含む)からRescaleへのジョブ投入は、CAEと機械学習を組み合わせる際に便利な構成となりそうです。