Microsoft* Azure* 上にセキュアな Kubeflow* パイプラインを構築

この記事は、The Parallel Universe Magazine 54 号に掲載されている「Build Secure Kubeflow* Pipelines on Microsoft Azure*」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


parallel_v54_06

多くのマシンラーニング・アプリケーションは、基礎となるコードとデータの機密性と整合性を確保する必要があります。これまで保存中 (ストレージ内) または転送中 (ネットワーク経由での転送) のデータの暗号化は注目されていましたが、 最近まで使用中 (メインメモリー内) のデータのセキュリティーは注目されていませんでした。インテル® ソフトウェア・ガード・エクステンションズ (インテル® SGX) (英語) は、アプリケーション・コードとデータを安全に処理および保存できる一連の手順を提供します。インテル® SGX は、CPU 内にトラステッド・エグゼキューション (信頼できる実行) 環境を作成することにより、コンテナからのユーザーレベルのコードが、エンクレーブと呼ばれるプライベートなメモリー領域を割り当てて、アプリケーション・コードを実行できるようにします。

Microsoft* Azure* Confidential Computing プラットフォームを使用すると、インテル® SGX が提供するセキュリティーと機密性を活用して、Windows* と Linux* の両方の仮想マシン (VM) をデプロイできます。このチュートリアルでは、Azure* Kubernetes* Services (AKS) クラスター上にインテル® SGX のノードをセットアップする方法を示します。次に、スケーラブルなマシンラーニング・パイプラインの構築とデプロイに使用できる Kubernetes* 向けのマシンラーニング・ツールキット、Kubeflow* をインストールします。最後に、XGBoost 向けインテル® オプティマイゼーション (英語)、インテル® oneAPI データ・アナリティクス・ライブラリー (インテル® oneDAL)、および scikit-learn 向けインテル® エクステンション (英語) を使用してモデルのトレーニングと推論を高速化する方法を説明します。

この最適化モジュールは、Amazon Web Services* (AWS*) 、Microsoft* Azure*、Google Cloud Platform* (GCP*) などの主要なクラウド・プロバイダー上でインテルにより最適化された AI ソリューションの構築とデプロイを容易にするために設計された、クラウドネイティブのオープンソース・リファレンス・アーキテクチャーのセットである Microsoft* Azure*向けインテル® クラウド・オプティマイゼーション・モジュール (英語) の一部です。各モジュール (リファレンス・アーキテクチャー) には、必要な手順とソースコードがすべて含まれています。

この最適化モジュールのクラウド・ソリューション・アーキテクチャーでは、インテル® SGX VM を中核コンポーネントとする AKS クラスターを使用します。Kubeflow* パイプラインがコンテナ化された Python* コンポーネントを構築できるように、Azure* Container Registry を AKS クラスターにアタッチします。これらの Azure* リソースは、Azure* リソースグループで管理されます。次に、Kubeflow* ソフトウェア・レイヤーを AKS クラスターにインストールします。Kubeflow* パイプラインを実行すると、各パイプライン Pod がインテル® SGX ノードに割り当てられます。クラウド・ソリューションのアーキテクチャーを図 1 に示します。


図 1. Kubeflow* パイプライン・アーキテクチャーの略図 (著者による画像)

準備

このチュートリアルを開始する前に、前提条件 (英語) をダウンロードしてインストールしていることを確認してください。次に、新しいターミナルウィンドウで次のコマンドを実行し、Azure* コマンドライン・インターフェイスを使用して Microsoft* Azure*アカウントにログインします。

az login

次に、ソリューションの Azure* リソースを保持するリソースグループを作成します。リソースグループの名前を intel-aks-kubeflow にして、場所を eastus に設定します。

Confidential Computing ノードを使用して AKS クラスターをセットアップするには、最初にシステム・ノード・プールを作成し、Confidential Computing アドオンを有効にします。Confidential Computing アドオンは、対象の各 VM ノードがインテル® SGX 向けの Azure* デバイスプラグイン Pod のコピーを実行するようにクラスターの DaemonSet を設定します。次のコマンドは、Dv5 シリーズ (第 3 世代インテル® Xeon® プロセッサー) の標準 VM を使用してノードプールをプロビジョニングします。これは、CoreDNS や metrics-server などの AKS システム Pod をホストするノードです。次のコマンドはさらに、クラスターのマネージド ID を有効にして、標準の Azure* Load Balancer をプロビジョニングします。

すでに Azure* Container Registry をセットアップしている場合は、パラメーター –attach-acr <registry-name> を追加することでクラスターにアタッチできます。

システム・ノード・プールがデプロイされたら、インテル® SGX ノードプールをクラスターに追加します。次のコマンドは、Azure* DCSv3 シリーズから 2 つの 4 コアのインテル® SGX ノードをプロビジョニングします。キー intelvm と値 sgx を使用して、このノードプールにノードラベルを追加しています。このキー/値のペアは、Kubernetes* nodeSelector で参照され、Kubeflow* パイプライン Pod をインテル® SGX ノードに割り当てます。

関連記事