1. はじめに-自己紹介
2020年10月にAvintonに入社しました。最初のプロジェクトでは、ログの集計・解析を行うアプリケーションの開発を約2年間、その後、物体検出を用いた業務効率化アプリケーションの開発を約1年間行ってきました。
どちらの開発現場でもプラットフォームとしてAWSを採用し、私自身ここで初めてAWSのサービスを扱ってきました。
本ブログでは、「AWSを活用したAI開発環境の構築」というテーマで、AWSのサービスと構築手順を解説します。
なお、最近流行っている機械学習を使用したサービスの開発を行ってみたい初心者を想定読者としています。
2. AWSとは?主要サービス概要の紹介
Amazon EC2 (Elastic Compute Cloud)
EC2は、仮想サーバーを提供するサービスです。インスタンスの選択肢は多岐にわたり、性能や用途に合わせて自由に選べます。高性能な仮想マシンを簡単に作成し、機械学習モデルのトレーニングや推論を並列処理で実行できます。必要なCPUやGPUの性能を適切に構成することで、複雑なモデルの学習や大規模なデータセットの処理を迅速かつ効果的に行うことができます。
Amazon S3 (Simple Strage Service)
S3は、データの効率的な保管と管理をサポートします。S3を使用すると、大容量のトレーニングデータやモデルファイルをクラウド上に安全に格納できます。データのアップロード、ダウンロード、共有も容易で、バケットやフォルダの階層構造を活用して整理されたデータストレージを構築できます。また、データのバージョン管理やアクセス制御の設定も可能で、機密性やデータの信頼性を保ちながら機械学習ワークフローを効率化します。
Amazon SageMaker
SageMakerは、機械学習プロジェクトを円滑に進めるための包括的なプラットフォームです。データの前処理からモデルの構築、トレーニング、デプロイメントまでの工程をシンプルに統合し、効率的に管理できます。SageMakerは、多彩な機械学習アルゴリズムやフレームワークを提供し、カスタムモデルの構築とトレーニングを可能にします。自動モデルチューニング機能により、最適なハイパーパラメータ設定を自動的に探索し、モデルの性能を最大化できます。トレーニング済みモデルを簡単にデプロイし、リアルタイムまたはバッチで予測を行うことで、機械学習ソリューションを実際の環境で活用できます。専門知識がなくても機械学習を導入し、ビジネス価値を高めることが可能です。
3. AI開発環境構築手順
1. アカウントの作成とAWSマネジメントコンソールへのログイン
AWS公式ウェブサイトからアカウントを作成し、ログインします。AWSマネジメントコンソールは、AWSサービスを管理・操作するための中心的なダッシュボードです。
2. EC2インスタンスの起動と設定
マネジメントコンソール内から「EC2」サービスにアクセスし、インスタンスの起動を選択します。適切なインスタンスタイプ(CPUやGPUの性能)を選び、オペレーティングシステムを選択します。セキュリティグループを設定して、インスタンスへのアクセスを制御します。
3. S3バケットの作成とデータのアップロード
マネジメントコンソールから「S3」サービスにアクセスし、新しいバケットを作成します。バケットはデータの保存場所です。必要なデータをローカルからバケットにアップロードします。適切なアクセス権限を設定して、データのセキュリティを確保します。
4. SageMakerを用いた機械学習モデルの構築
マネジメントコンソールから「SageMaker」サービスにアクセスし、新しいノートブックインスタンスを作成します。ノートブックはコードやドキュメントを含む環境を提供し、機械学習モデルの開発とトレーニングを行います。必要なライブラリやフレームワークをノートブックにインストールし、データの前処理やモデルの構築コードを記述します。
こちらでは、SageMakerStudio(統合開発環境)を使用することをおすすめします。
5. モデルのトレーニングと評価
ノートブック内でデータを読み込み、機械学習モデルをトレーニングします。トレーニング中にハイパーパラメータを調整し、モデルの性能を改善します。トレーニングが完了したら、別のデータでモデルを評価して性能を検証します。
6. モデルのデプロイと予測
トレーニングしたモデルを保存し、SageMakerを使用してモデルをデプロイします。デプロイされたモデルはエンドポイントとして利用可能で、リアルタイムまたはバッチ処理で新たなデータに対する予測を行えます。
7. 安全性とコスト管理の考慮
EC2インスタンスとSageMakerノートブックに適切なセキュリティグループを設定し、アクセス制御を強化します。また、AWSの利用料金を把握し、リソースの適切なスケーリングや不要なリソースの停止を行うことで、コストを管理します。
4. 個人的な経験に基づくAI開発環境構築
高精度なモデルを作成するために大切だと感じたことをいくつか紹介します。
1. 適切なデータの前処理
データはモデルの基盤であり、品質の高いデータが高精度のモデルを生み出します。欠損値や外れ値の処理、正規化や標準化、カテゴリカル変数のエンコーディングなど、適切な前処理を行いましょう。
また、S3やDBで管理を行うと思いますが、データの分類や階層化を適切に行い、使いやすい形で保持しておくことが大切です。
2. 持続的な改善とモニタリング
モデルの性能はデータの変化や環境の変化によって変動する可能性があります。モデルの性能を定期的にモニタリングし、必要に応じて再トレーニングやアップデートを行うことで、持続的な高精度を維持します。開発に必要なメトリクスを適切にモニタリングできる環境を用意しましょう。
3. MLOpsの導入
機械学習プロジェクトではモデルの開発よりも、そのモデルの運用やデプロイメントが重要になってきます。持続的に開発が行えるよう、MLOpsプラクティスを導入して、モデルの生産性と安定性の確保を目指すことが望まれます。導入には様々なコストが掛かりますが、結果的に導入してよかったというケースのほうが多いかと思います。
5. まとめ
AWSでの代表的なサービスを用いたAI開発環境の構築を紹介してきました。
AWSではまだまだ便利なサービスが多く、学習を進めていくことで広く深く扱えるようになると思います。
また、AWSのサービス、AIに関するアップデートは日進月歩で進んでいるため、日々の情報収集が欠かせません。
当記事を参考に最初の1歩を踏み出されることを望んでいます。