PythonTweetみなさんこんにちは。機械学習チームのたかぱい(@takapy0210)です。2021年もあと1ヶ月となりましたね。皆様いかがお過ごしでしょうか。初日となる本エントリでは、機械学習チームで使用しているSageMaker*1の機能である、Processing*2について、活用事例とともにご紹介しようと思います。独自のコンテナ上で任意のpythonスクリプトを実行でき、処理が終了するとインスタンスが自動的に停止するというシンプルな機能から、機械学習関連のデータ処理だけでなく、学習や推論にも使うことができるサービスとなっています。SDKには主に4つのクラスが用意されていて、それぞれで使用方法が異なります。sagemaker.sklearn.processing.SKLearnProcessorsagemaker.processing.PySparkProcessorsagemaker.processing.Processorsagemaker.processing.ScriptProcessorそれぞれについて簡単にご紹介します。sagemaker.processing.Processorです。PySparkProcessorあらかじめ用意されたscikit-learnやPySparkの実行環境(コンテナ)を使用するクラスです。frameworkのバージョンやインスタンスタイプ、インスタンスの台数を指定し、実行したいpythonスクリプトをrunメソッドの引数に与えて実行します。ScriptProcessor独自の実行環境(コンテナ)で処理を行いたい時に使用するクラスです。image内に内包させる必要があります。ScriptProcessorクラスはコンテナの作成と処理コードを分けて実行するクラスで、runメソッドにpythonスクリプトを受け渡し、処理を実行することができます。SageMaker上(クラウド上)で動かすことで、各人が業務を進めていました。分析にある程度目処が立ったタイミングで実際のプロダクションコードを書いて、それをプロダクション用のコンテナ環境に乗せてAWS上で動かす基盤を整える、というフローで開発を進めることが多いのですが、このプロダクションコードをどの環境でどのように検証すれば良いのか、という部分に課題を感じていました。...プロダクション用コンテナ環境を使ってローカルで検証したいが、計算リソースの関係でローカルマシンでは本番相当のデータ量で検証できないクラウド上にある分析用コンテナ環境を使って検証しても良いが、実際に動く環境とは異なるので、プロダクション環境で実行したときに違う挙動をする可能性があるなどなど。Processorです。Processorを活用したプロダクション動作検証環境になっています。Processorを利用するのに必要な手順は以下の3つです。Jobを起動する3.について、コードと共に簡単に解説していきます。Jobを起動するnotebook上からは以下のようにして利用することができます。コードを見ていただければ分かるように、notebookを起動しているインスタンスとは別のインスタンスを指定して実行できるので、処理内容に合わせて様々なリソース上で実行することができます。処理の実行processor.run()例えば、今回実行したprocessing.pyの処理内容が「データを加工して、train.csvというファイル名でS3に保存する」というものだったとします。この時、生成されたデータが想定通りのデータになっているか確認したい時もあると思います。そんな時はnotebook上から以下のような処理を実行することでインタラクティブにデータをチェックこともできます。pd.read_csv('train.csv')この辺のことがシームレスに行えるのもSageMakerの良さだと思います。本番環境のコンテナ&本番データを使って、(ある程度)お手軽に動作検証ができる。Jobだけに強めのインスタンスを割り当てて実行する、みたいなことができる。Jobで起動したインスタンスは処理終了時に自動的にシャットダウンされるので、「起動しっぱなしでコストが...汗」ということも防ぐことができる。S3を媒介として、データのやりとりも簡単にできる。いう点が挙げられるかな、と思います。良い点にフォーカスしてお伝えしてきましたが、1点だけイマイチだな〜思っている点があります。Jobを起動するまでに若干時間がかかってしまうところです。(こればかりはコンテナのpullやbuildが走るので、一定しょうがないと思いつつ。5分〜ほどかかります。)とはいえ、この点を考慮しても得られるメリットは大きいと考えているので、これからもしばらくは利用していくと思います。最後に本日は、コネヒトの機械学習チームがSageMakerをどのように活用しているか、の一例についてご紹介しました。(2)書いたメンバーid:taxa_programid:katsutomu0124id:sasashuuuid:NahomiTakahashiid:toc8id:yoshitaka465id:yanamuraid:ryoutakaya3623id:azuki_mihomihoid:takflifeid:nagaisid:aboy_perryid:laugh_kid:connehito-mkashiwagiid:tommy_kwid:itosho525id:su-kun1899id:ohayoukenchanid:satoshieid:plane25id:connehitoid:fortkleお問い合わせコネヒト株式会社Wantedly引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。