AWS* クラウド上で加速された分散型 AI アプリケーションの展開


この記事は、インテル® コミュニティーのブログに公開されている、以下の記事の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。

Deploy Accelerated Distributed AI Applications on the AWS Cloud

Kubernetes* ベースの分散アーキテクチャーをインテル® AI ソフトウェア・ツールおよびインテルの最適化されたハードウェアと組み合わせることで、開発者はわずか数行のコードでハードウェアレベルのアクセラレーションを実現することができます。これらのスケーラブルなアクセラレーション・ワークロードの例は、インテル® Cloud Optimization Modules (ICOMs) に格納されています。ICOMs は、コード化されたインテル® AI の最適化と適切なインテルのハードウェアの選択のための指示が組み込まれたオープンソースのコードベースであり、Microsoft* Azure*、Google Cloud Platform* (GCP)、Amazon Web Services* (AWS*) のいずれかのクラウドサービス・プロバイダー (CSP) でクラウドネイティブに実行するためのものです。

Kubernetes* の概要

Kubernetes* は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するために設計されたオープンソースのコンテナ・オーケストレーション・システムです。Kubernetes* アプリケーションの一般的な構造は、上記の図に示されているように分解できます。Kubernetes* クラスターサービスは、コンテナ化されたアプリケーションを実行する「ワーカー」またはノードのセットとして理解することができます。ポッドは基本的にアプリケーションの個々のインスタンスです。ポッドに Docker* コンテナをデプロイすることで、ポッドはワーカーマシンに展開され、アプリケーションがこのワーカークラスター内で分散して実行されるようになります。最後に、アプリケーションには少なくとも deployment.yaml ファイルと service.yaml ファイルが含まれている必要があります。これらはさまざまな条件を定義するための設定ファイルであり、ワーカーごとの CPU 利用率の制限や、サーバーへのリクエスト時の許可されるコンピューター・リソースの利用率のしきい値などを指定するために使用されます。特に service.yaml ファイルでは、負荷分散器などのサービスをポッドに設定して有効にすることができます。基本的に、Kubernetes* を使用してアプリケーションを複数のワーカーに分散することで、与えられたアプリケーションへの外部リクエストの増加に対応する能力を向上させ、複数のワーカーに「作業」を分散することでスケーラビリティーと安定性を提供します。

インテル® Cloud Optimization Modules for Kubernetes*

具体的には、インテル® Cloud Optimization Modules for Kubernetes* について説明し、これらを使用して AWS* クラウド上で AI アプリケーションを構築およびデプロイする方法を見ていきます。このソリューションのアーキテクチャーでは、アプリケーションのコンテナ化には Docker* が使用され、AWS* 上の Elastic Container Registry (ECR) ストレージを使用します。次に、Amazon* Elastic Compute Cloud* (Amazon EC2*) インスタンスのクラスター (Elastic Kubernetes Service (EKS) によって管理される) にアプリケーション・イメージがデプロイされます。データとモデル・オブジェクトの保存には Amazon* Simple Storage Service (Amazon* S3) が使用され、ML パイプラインのさまざまなステップで取得されます。クライアントはこのインフラストラクチャーと Elastic Load Balancer を介してやり取りし、それ自体が Kubernetes* サービスによってプロビジョニングされます。この最適化ツールの目的は、高可用性のソリューション・アーキテクチャーに基づいて、第 4 世代インテル® Xeon® スケーラブル・プロセッサーと AI キットのコンポーネントの使用を強調し、パフォーマンスを向上させながら Kubernetes* を使用してスケールを実現することです。

インテル® Cloud Optimization Modules for Amazon SageMaker*

2 つ目の最適化ソリューションは、インテル® Cloud Optimization Modules for Amazon SageMaker* です。Amazon SageMaker* は AWS* クラウド上の完全に管理された機械学習サービスです。このプラットフォームの目的は、管理された AWS* クラウドサービスの上に堅牢な機械学習パイプラインを構築するプロセスを簡素化することです。残念ながら、そのシンプルさを実現するための抽象化がカスタマイズを困難にしています。この最適化モジュールは、開発者に対して、カスタム・トレーニングおよび推論コードを事前構築された SageMaker パイプラインに組み込む方法を示すことで、この問題に対処しています。主な目標は、daal4py などのインテル® AI アナリティクス・ツールキットを活用して、SageMaker パイプラインでエンドツーエンドの機械学習パイプラインを構築できるようにすることです。


このソリューション・アーキテクチャーでは、xgboost-daal4py アプリケーションとラムダ推論ハンドラーのために Amazon* Elastic Container Register (ECR) にイメージをビルドして登録します (daal4py に関する詳細はこちらで確認できます)。xgboost-daal4py ECR URI は SageMaker パイプライン・スクリプトに提供されるため、パイプラインが実行されると、データを処理し、モデルをトレーニングおよび検証し、作動モデルを推論エンドポイントにデプロイします。その後、ラムダイメージを使用してリアルタイムの生データ前処理を処理し、処理済みのデータを SageMaker 推論エンドポイントに送信するために、AWS* API Gateway と呼ばれる REST API サービスが管理する推論エンドポイントへのアクセスが行われます。このモジュールの情報を使用することで、開発者は daal4py などのインテルのハードウェア向けに最適化された機械学習ライブラリーを活用しながら、SageMaker でエンドツーエンドの機械学習パイプラインを構築できる方法を示すことができます。

コンピュートに対する意識のある AI 開発者

AI 開発者として、AI ソフトウェア・スタック全体において重要なパフォーマンスの決定が行われること、およびソフトウェアの実行環境や実行するハードウェアについて意識的な決定をすることは、AI 開発者として成長するために重要なことです。この領域の最新のイノベーションやトレンドを理解することは不可欠です。インテルの最新ハードウェア向けに最適化された Python* パッケージ (例: PyTorch* 向けインテル® エクステンションおよび TensorFlow* 向けインテル® エクステンション) や、インテル® AVX-512 のベクトル・ニューラル・ネットワーク命令やインテル® アドバンスト・マトリクス・エクステンションといった機械学習専用の ISA、そして量子化および精度を考慮したモデルの圧縮などのトピックを理解することが重要です。AI 開発者としてコンピュートに対する意識を持つことで、使用しているスタックについてより詳しく知ることができ、ワークフローを最適化するための最良の方法 (例: コア、メモリー、ネットワーキング速度の検証、アプリケーションに最適化されたパッケージの選択、これらの最適化を活性化するための正しいコードの追加、コアの利用率のモニタリングとベンチマーキングなど) を知ることができます。


インテル® Cloud Optimization Modules の目的は、開発者がインテルのソフトウェアとハードウェアを使用してアプリケーションのパフォーマンスとスケーラビリティーを向上させることです。高性能なクラウド・アプリケーションへの需要が増えている中、開発者に、最新の技術とツールを活用できるように情報を提供することが非常に重要です。また、インテルのほかの AI ツールやフレームワークの最適化にも目を向けることをおすすめします。さらに、インテルの AI ソフトウェア・ポートフォリオの基盤となる統一されたオープンで標準ベースの oneAPI プログラミング・モデルについても学ぶことを奨励します