コンピュータの演算性能向上と低価格化により、流体解析や構造解析など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を試すだけであれば、以下の設定で十分です)
項目 | 設定値 |
---|---|
Notebook instance name | rescale_api |
Notebook instance type | ml.t2.medium |
VPC | No VPC |
Encryption key | (入力しない) |
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と機械学習を組み合わせる際に便利な構成となりそうです