[レポート] SageMakerを使用した機械学習用CI/CDパイプラインの構築 #reinvent #DVC303

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本記事は「CI/CD for Your Machine Learning Pipeline with Amazon SageMaker」のレポートです。 このセッションではSageMakerを使用した機械学習用CI/CDパイプラインを構築する方法を学びます。

セッション概要

Amazon SageMaker is a powerful tool that enables us to build, train, and deploy at scale our machine learning-based workloads. With help from AWS CI/CD tools, we can speed up this pipeline process. In this talk, we discuss how to integrate Amazon SageMaker into a CI/CD pipeline as well as how to orchestrate with other serverless components.

This session is part of re:Invent Developer Community Day, a series led by AWS enthusiasts who share first-hand, technical insights on trending topics.

レポート

アジェンダ

  • AWS上でのCI/CDパイプライン構築
  • SageMakerを使った機械学習
  • SageMakerを統合したアーキテクチャ
  • SageMakerを使用した機械学習用のCI/CDパイプライン

AWS上でのCI/CDパイプライン構築

なぜCI/CDが必要なのか

  • 早期にバグを修正する
  • 頻繁に提供する
  • 開発者をブロックしない
  • スキルを向上させる

AWS上でCI/CDを実現するためのツールは何があるのか

  • CodePipeline
    • 迅速で信頼性の高いアプリケーションのアップデートを可能にする継続的デリバリーサービス
  • CodeCommit
    • フルマネージド型のソースコントロールサービス
  • CodeBuild
    • フルマネージド型のビルドサービス
  • CodeDeploy
    • Amazon EC2、AWS Lambda、オンプレミスサービスなど、さまざまなコンピューティングサービスへのソフトウェアのデプロイを自動化するサービス

SageMakerを使った機械学習

機械学習とは何か

機械学習は、統計的手法を用いて明示的にプログラムされることなく、コンピュータに「学習する」能力を与える人工知能の分野のこと

AWSが提供する機械学習サービス

  • サービス
    • Comprehend
    • Lex
    • Polly
    • Recognition
    • Translate
  • プラットフォーム
    • SageMaker
    • DeepLends
  • フレームワーク
    • DeepLearningAMI

SageMakerによる機械学習

  • Build
    • データーサイエンティストがJupyterNotebookを使い開発を行う
  • Train
    • 学習用のコンテナでBuildで指定したJobを実行する
  • Tune
    • 学習用ハイパーパラメーターのチューニングを行う
  • Deploy
    • 学習モデルをエンドポイントとして公開する

SageMakerを統合したアーキテクチャ

SageMakerによる機械学習

物体検出自動ローン承認などの処理を実行する場合、以下のアーキテクチャとする

  • クライアント
  • ビジネスアプリケーション
    • クライアントからのリクエストを受け付ける
    • AWSのサービス:Lambda,EC2,EKSなど
  • AIサービス
    • ビジネスアプリケーションからAPI経由でリクエストを受け付ける
    • AWSのサービス:Lambda,DynamoDB,RDS,SageMaker
  • データーレイク
    • AIサービスからのアクセスを受け付ける
    • AWSのサービス:S3

AI機能を提供する処理は、ビジネスアプリケーションから見るとAPI経由で実行するAIサービスとなる。

AI/ML as a Service の構築フロー

  • データーサイエンティストはJupyterNotebookで開発を続ける
  • 開発が終了したらテストをするためにモデルをエンドポイントにプッシュする(バックエンドAPI)
  • API Gateway,Lambdaファクションにて認証やキャッシュ処理をを実現する(フロントエンドAPI)
  • フロントエンドAPIからバックエンドAPIに対してリクエストを実行できる状態とする
  • ビジネスアプリケーションはフロントエンドAPIを実行する
  • 新しいデータが到着した場合は、モデルをトレーニングしエンドポイントを更新する
  • モデルを構築するためにCloudWatchEventとLambdaを定期的に実行する

SageMakerを使用した機械学習用のCI/CDパイプライン

バージョンコントロール

  • ipynbファイルとそのフォルダをCodeCommitにてバージョン管理する

パイプラインを構築する

CodeCommitのプッシュをトリガーに以下の処理を実施するパイプラインを構築する

  • CodeBuild実行
    • CodeCommit内のファイルを取得しZipを作成後、S3にプッシュする
    • ZipのプッシュをトリガーにJupyterNotebookを作成しスクリプトを実行する
  • Test実行
    • CloudFormationによりテスト環境を構築しテストを実行する
  • ステージング環境デプロイ
    • 承認処理をパイプライン上に配置し問題なければCloudFormationによりステージング環境を構築する
  • 本番環境デプロイ
    • 承認処理をパイプライン上に配置し問題なければCloudFormationにより本番環境を構築する

結論

  • AWS上に構築したCI/CDパイプラインは、ソース、ビルド、テスト、および環境構築などすべてを提供します
  • SageMakerによりマシンラーニングは容易でスケーラブルです
  • スロッティング、キャッシュ、認可を実現するためAPI GatewayとLambdaによるフロントエンドAPIを構築します
  • CI/CDパイプラインにより、CloudFormationを実行しすぐに使用できるAPI GatewayとLambdaを構築します

まとめ

機械学習の分野とCI/CDの分野はどちらも盛り上がっていますが、この2つのジャンルで構築したアーキテクチャというのはなかなか見る機会がないのでとても新鮮でした。実例はあまりないかもしれませんが機械学習の分野でCI/CDを導入するのもかなりメリットがあるように感じます。 このようなアーキテクチャを作りたい物好きな方がいましたらお気軽にお問い合わせください。