Amazon Web Services ブログ

Kubernetes 上にある機械学習ワークロードでのハイパフォーマンスストレージの使用

コンテナやマイクロサービスベースのアーキテクチャを導入してのアプリケーションの最新化が、現在、各組織で行われています。多くのお客様は、マイクロサービスアーキテクチャを機能させるために、パフォーマンスの高いワークロードをコンテナ内でデプロして、これらのコンテナーから低レイテンシで高スループットの共有ストレージにアクセスする必要があります。これは、コンテナは一時的なもので、長期にわたりアプリケーションを実行するには、データを耐久性のあるストレージに保存する必要があるからです。Amazon FSx for Lustre (FSx for Lustre) は、世界中で最も使用されているハイパフォーマンスファイルシステムを提供し、現在は完全マネージド型で Amazon S3 と統合されています。このサービスでは、Kubernetes ワークロード用にパフォーマンスのピークを確保ながら高い耐久性のあるストレージを実現する、POSIX 互換の高速並列ファイルシステムをご利用いただけます。FSx for Lustre では、Lustre ファイルシステムの設定や管理に関する従来の複雑さを取り除くことで、パフォーマンスの高いファイルシステムを数分で使用開始できるようになりました。FSx for Lustre のレイテンシーはミリ秒単位以下であり、スループットは最大数百 GB/秒、IOPS は数百万を実現しています。機械学習やハイパフォーマンスコンピューティング (HPC)、画像処理、そして金融モデリングなど、速度が重要視されるワークロードを実行するお客様が、この FSx for Lustre を使用されています。

Kubernetes は、コンテナ化されたアプリケーションのデプロイ、スケーリング、および管理を自動化するための、オープンソースなコンテナ用オーケストレーションシステムです。AWS のマネージド型サービスである Amazon Elastic Kubernetes Service (Amazon EKS) を使用することで、Kubernetes のコントロールプレーンやワーカーノードを独自にインストールしたり、操作する必要がなくなり、容易に Kubernetes を実行できるようになります。Amazon EKS では、複数のアベイラビリティゾーン間で Kubernetes のコントロールプレーンインスタンスを実行することで、高可用性を実現しています。障害のあるコントロールプレーンインスタンスは、Amazon EKS により自動的に検出および置き換えが行われ、またそれらに対する、バージョンのアップグレードやパッチ修正も自動で実施されます。

今回の記事では、GitHub のチュートリアルとして、Amazon EKS クラスターでの FSx for Lustre 永続的ファイルシステムのプロビジョニング方法と、FSx for Lustre と Amazon SageMaker により機械学習のトレーニングを高速化する方法をご紹介していきます。このブログ記事では機械学習に焦点を当ててはいますが、FSx for Lustre の永続的なファイルシステムは、パフォーマンスが高く永続的で POSIX 互換の、共有ファイルシステムへのアクセスをアプリケーションが必要とする場合に、Amazon EKS クラスター上のすべてのハイパフォーマンスワークロードで適用できるものです。

Kubernetes コンテナの基本コンポーネント

まず始めに、Kubernetes クラスターの基本コンポーネントのいくつかを確認しながら、永続的な共有ストレージが必要となる理由を再考してみましょう。ポッドは、Kubernetes アプリケーションにおける基本的な実行単位です。これは、共有ストレージ (および共有ネットワーク) を備えた複数のコンテナと、それらコンテナの実行に関する定義により構成されています。ポッドは、常にノード上で実行され、各ノードは Kubernetes マスターにより管理されます。ノードは Kubernetes 内のワーカーマシンとして捉えられ、仮想マシンあるいは物理マシンのいずれかになります。1 つのノードは複数のポッドを保持でき、Kubernetes マスターが、クラスター内にあるノード間でのポッドのスケジュール処理を自動的に行います。この一連のノードは、Kubernetes クラスターのコントロールプレーンに対応している各コンポーネントと組み合わされています。

ポッドがデータ保存に使用できるボリュームには、レギュラーと永続的の 2 種類があります。Kubernetes クラスターのレギュラーボリュームは、それをホスティングしているポッドによりシャットダウンされたときに削除されます。つまり、レギュラーボリュームは、ポッドのライフタイムを超えて維持する必要がない、一時的なデータを保存するのに適していることになります。永続的ボリュームは、クラスター全体を通じ、ポッドのライフタイム以降もデータを保存しつづけることがでるリソースです。永続的ボリュームは、特定のポッドでホスティングされますが、進行中のオペレーションが必要とする期間は機能し続けます。ポッドは、共有ストレージボリュームのグループを 1 つ指定することができます。この共有ボリュームは、ポッド内の全コンテナがアクセス可能なので、コンテナ間でのデータの共有が行えます。AWS で永続的ボリュームのプロビジョニングを選択される お客様は、Amazon EBSAmazon EFS、および FSx for Lustre 向けのコンテナストレージインターフェース (CSI) ドライバを使用していただけます。

FSx for Lustre での永続的ファイルシステム

本年冒頭に当社では、FSx for Lustre による永続的なストレージファイルシステムのデプロイのオプションを発表しています。永続的ファイルシステムのオプションは、長期もしくは永続的に実行する、あるいは中断が問題となり得るワークロードに対し、可用性と耐久性の高いストレージを提供します。

FSx for Lustre では、複数のネットワークファイルサーバー間でデータを保存することで、パフォーマンスを最大化しながらボトルネックを減少させます。こういったファイルサーバは複数のディスクを使用しています。永続的ファイルシステムのファイルサーバーが使用不能になった場合は、障害発生から数分以内に自動的な置き換えが実行されます。この時間中、クライアントがサーバー上のデータに送るリクエストは透過的に再試行され、最終的にファイルサーバーの置き換えが完了した時点で、新たなサーバーに引き継がれます。永続的ファイルシステムのデータはディスク上で複製が作られているので、障害が起きたすべてのディスクは、透過的な置き換えが自動的に行われます。

Kubernetes クラスターにおいてプロビジョニングする永続的ストレージでは、Amazon FSx の永続的ファイルシステムのオプションを使用することを推奨しています。FSx for Lustre CSI ドライバでは、Amazon EKS クラスターで Amazon FSx for Lustre ファイルシステムのライフサイクルを管理するための、インターフェースをご利用になれます。

SageMaker Operators for Kubernetes

では次に、Amazon SageMaker Operators for Kubernetes を使用して機械学習ワークロードを実行する方法を見ていきましょう。Amazon SageMaker は、あらゆるデベロッパーやデータサイエンティストが、機械学習 (ML) モデルを迅速に構築、トレーニング、デプロイできるようにするための、完全マネージド型サービスです。SageMaker により、機械学習プロセスの各ステップにおける面倒な作業から解放されるため、高品質なモデルの開発がさらに容易になります。

Amazon SageMaker Operators for Kubernetes は、デベロッパーおよびデータサイエンティストが Kubernetes を介して行う、Amazon SageMaker 内の機械学習 (ML) モデルのトレーニング、チューニング、デプロイをより簡単にします。Amazon EKS 内の Kubernetes クラスターに SageMaker Operators をインストールすると、Kubernetes API や “kubectl” といったコマンドラインの Kubernetes ツールを使用して、ネイティブな SageMaker ジョブを作成することが可能になります。次の図は、この GitHub チュートリアルで扱うユースケースでのアーキテクチャの概観を示しています。

この GitHub チュートリアルで扱うユースケースでのアーキテクチャ概観図

GitHub チュートリアル

それでは、前出の各コンセプトを実践するチュートリアルに進みましょう。各ステップは次のとおりです。

  • Amazon EKS クラスターをデプロイし、そのクラスターにおいて Amazon SageMaker Operators for Kubernetes の設定を行います。
  • Kubernetes 用の CSI ドライバーをインストールし、FSx for Lustre の永続的なハイパフォーマンスファイルシステムをプロビジョニングします。
  • FSx for Lustre の永続的ファイルシステムを入力データソースとして使用する、Amazon SageMaker のトレーニングジョブを作成します。
  • Amazon SageMaker Operator を使用しながら、Amazon SageMaker 内で勾配ブースティングモデルのトレーニングを実施します。

使用開始するには、「Using a high-performance persistent storage for machine learning workloads on Kubernetes! (Kubernetes での機械学習ワークロード向けのハイパフォーマンスな永続的ストレージの使用)」から GitHub チュートリアルを起動してください。

まとめ

今回の記事では、Amazon EKS 上の機械学習モデルをトレーニングする Amazon SageMaker のために、Amazon FSx for Lustre の永続的ファイルシステムを利用する方法に関する、GitHub のチュートリアルをご紹介しました。このチュートリアルでは、まず、Kubernetes クラスター上での SageMaker Operator の設定を行いました。次に、Amazon EKS クラスター上で CSI ドライバーを使用しながら、FSx for Lustre の永続的ファイルシステムを永続的ボリュームとして定義しました。その上で、FSx for Lustre を入力データソースとして使用するようにトレーニングジョブを設定し、Amazon SageMaker Training Operator を使用して、勾配ブースティングモデルのトレーニングを起動しました。

FSx for Lustre により、大規模なデータセットのダウンロードが高速化されるため、トレーニングジョブも迅速に実施できます。その後に行うトレーニングジョブでは、Amazon FSx ファイルシステムに既に用意されているデータセットを利用できるので、Amazon S3 へ繰り返しリクエストするためのコストを省くことができます。FSx for Lustre の永続的なファイルシステムは、パフォーマンスが高く永続的で POSIX 互換の、共有ファイルシステムへのアクセスをアプリケーションが必要とする場合に、Amazon EKS クラスター上のすべてのハイパフォーマンスワークロードに適用できます。

本ブログをお読みいただき、ありがとうございました。ご質問やフィードバックがございましたら、コメントをお寄せください。