はじめに
最近、PoCがてらSageMakerを利用しており少し工夫したので本記事で共有したい
SageMakerとは
機械学習やAIを使った分析をしたい従来であれば幅広い知識と環境を用意する必要があった。
幅広い知識でいうと、分析とは数学チックな知識や、高度なプログラミング知識を要求されるデータサイエンティストがまさにそれだ。環境面でいうとGPUであったり、Hadoopの環境を整えたりと分析以前に準備でとん挫することが多々あったが、このマネージドサービスを利用すれば多少なりとも素人なりに分析環境やアセットを提供するよといったサービスと思ってもらえればよい(かなりかみ砕いた)
今回は
本記事ではSageMakerのノートブックインスタンスを運用するうえで便利なライフサイクルというものがあるが、それを利用するうえで工夫した内容を書き記していく
ライフサイクルとは
SageMakerで動いているサーバはベースに関してはEC2で動いてるが、これが絶妙に厄介で(利用者はEC2の運用をしない点では嬉しいが)、ノートブックインスタンス自体を停止してしまうと、設定内容や、インストールしたモジュール等が全てリセットされてしまうという何とも言い難い仕様になっている。なのでこういった問題を解決するためにライフサイクルという機能が本サービスには備わっている。
上記はライフサイクルの設定画面であり
スクリプトをクリックすると
こういった形で表示される
これが何とも言えない形で(別画面のもあるがコード管理もできないし不便)もあるし
設定したい内容が複数あった場合に非常に醜いと感じたため下記で
ライフサイクルスクリプトの設計を行った
ライフサイクル設計
図式した内容をベースに話すと
ライフサイクルが実行されたら(停止→起動)
ライフサイクルのジョブはマニフェストに記載されている内容を
読み込み、ジョブとして実行する(1個1個のジョブは中規模のスクリプト)
こういった構成することにより、新規で設定を追加したい場合は
ライフサイクル設定からではなくマニフェストファイルにジョブを記載し
実際のジョブスクリプトと疎結合で開発が可能になる。またコード管理化も行った。
(ライフサイクルに記載されているものはコード管理ができないのでこの構成は大いに享受できる)
(ライフサイクル上は数行で完結)
終わりに
SageMakerを利用したPoCはまだまだ発展途上なので進捗あり次第記事化したい