re:Inventが開催されました。AWSの機能に目が離せない状況になってきました。機械学習に使用するSageMakerのアップデートもありました。今後、SageMakerがもっともっと多くのビジネスシーンや企業で利用されていくと思います。スポンサーリンクContentsSageMakerとは独自アルゴリズム(コンテナ)を作成するまでの流れSageMakerの特徴SageMakerで独自アルゴリズムを作成しないといけない理由AWSの公式のサンプルをcloneするサンプルソースコードから不要なファイルの除外フォルダ構成と各々のファイルの役割を理解するdockerイメージを作成するローカルで学習するローカルで推論するまとめSageMakerとはSageMakerは簡単に分析、学習、推論ができます。業務など複雑な処理を実装する場合、独自アルゴリズムが必要になります。情報がまとまっていない印象を受けます。公式ブログでまとまってはいるんですが、ちょっと理解がしづらい部分があり、さくっと動かしたい人には難しいなって印象だったので解説記事+チュートリアルになります。いうことで、SageMakerで独自アルゴリズムを使う方法をご紹介します。Registry)にプッシュするSageMakerでECRにプッシュしたdockerのリポジトリのURIを指定するSageMakerの特徴SageMakerは、AWSが提供している機械学習基盤です。スケールする環境でjupyterを使えるのでデータ量が多くローカルマシーンのスペックで困る場合に環境構築なしで使えます。いくつかのアルゴリズムが用意されているため、学習データを指定するだけ複雑な学習ができる。推論した結果を返すために、学習してモデルを生成し、APIを使ってということをせずに推論した時点でエンドポイントが提供されるため、効率的に推論結果を提供できます。SageMakerで独自アルゴリズムを作成しないといけない理由SageMakerで独自アルゴリズムを作成しないといけない理由は、SageMakerに存在しないアルゴリズムを使う場合です。今、提供されているアルゴリズは100を超えていると思います。これまで業務で使っていたアルゴリズムを使いたいと言った場合は、存在しないこともあります。提供されているアルゴリズムも推論時には、predictの結果しか返してくれません。学習または、推論時に特殊な処理や関数の呼び出しを行なっている場合は独自に実装してあげる必要があります。実際、私はblazingTextというSageMakerが提供しているアルゴリズムで学習だけして、推論は独自に実装しました。AWSの公式のサンプルをcloneするAWSが公式のサンプルソースコードを用意しているので、使わせてもらいます。サンプルソースでは、sklearnで決定木を使うようです。https://github.com/awslabs/amazon-sagemaker-examples.gitサンプルソースコードから不要なファイルの除外サンプルソースコードには、今回、不要なファイルも多いので、スパースクローンを実行します。スパースクローンとは、gitの機能で、リポジトリの中で一部だけクローンしたいときに使います。別に他のファイルがあっても邪魔出ないと思う方は飛ばしてください。.git/info/sparse-checkoutvimで今回利用するディレクトリを指定します。/advanced_functionality/scikit_bring_your_own/container変更を反映します。HEADフォルダ構成と各々のファイルの役割を理解するでは、早速今回利用するディレクトリに移動します。advanced_functionality/scikit_bring_your_own/container全体像はこのようになっています。主要なものは、横に説明をいれています。今回は、修正はしませんが独自のアルゴリズムを使う場合、`train`と`predictor.py`のみを触ることになります。dockerイメージを作成するshellを実行して、dockerイメージを作成し、ECRにプッシュします。custom-algorithm-on-sagemakerECRにプッシュしたくない方は、`build.sh`というdockerイメージ作成用の処理を用意しました。下記をbuild.shと名前をつけ、`build_and_push.sh`と同じ階層に配置し、実行してください。ローカルで学習するdockerのイメージができたら、学習をします。SageMakerでは、ECRにプッシュしたコンテナのURIを指定するだけなので、簡単です。今回は、チュートリアルなのでローカルでやります。custom-algorithm-on-sagemakerローカルで推論するdocker上で推論用のコンテナを起動して、推論します。predict.shまとめ私が、色々探してたときにはちゃんとまとまっているサイトがなくて苦労しました。このチュートリアルが他の方の手助けになればと思います。MEtaiコンサルタントから2018年にエンジニアに転向。年収400万円のサラリーマンエンジニアから、半年で月収100万円を稼ぐエンジニアになった。機械学習、フロント、サーバサイドなど幅広く活動中。【投資対効果で算出】プログラミングスクールは高いのか。フリーランスエンジニアtaiコンサルタントから2018年にエンジニアに転向。年収400万円のサラリーマンエンジニアから、半年で月収100万円を稼ぐエンジニアになりました。