Azure Machine LearningのCompute インスタンスとクラスター、Kubernetesのクラスターの違いを理解する

こんにちは。この記事では、Azure Machie Learningで登場するCompute InstanceとClusterの違いについて、調べて分かったことをまとめておこうと思います。

なお、私もわからないところから調べながらまとめていっているため、理解が正しくない部分があるかもしれません。コメント等でご指摘いただけましたら幸いです。

コンピューティング インスタンスとは

こちらに公式の説明があります。

Azure Machine Learning コンピューティング インスタンスとは

https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-compute-instance

ポイントは以下と理解しました。

  • 機械学習開発環境向けの計算ノード
  • CPU、メモリに加えてGPUが使用できるなど、ノードのスペックは幅広く、用途に応じて柔軟な選択が可能
  • Azure Machie Learningの各機能と統合されている。Azure Machine Learningの各機能や、機械学習において一般的に必要になるライブラリなどが事前インストールされているため、すぐに開発をはじめられる
  • Azure上にデプロイされているため、一定のセキュリティレベルが保証されている。また設定変更も容易。

コンピューティング クラスターとは

こちらに公式の説明があります。

Azure Machine Learning コンピューティング クラスターの作成

https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-create-attach-compute-cluster

Azure Machine Learning コンピューティング クラスターは、シングルノードまたはマルチノードのコンピューティングを簡単に作成できるマネージド コンピューティング インフラストラクチャです。

公式Docより

以下のように理解しました。

  • コンピューティング インスタンスの集合体?
  • コンピューティングインスタンスはシングルノードなのに対して、クラスターはマルチノードであり、負荷状況に応じてスケーリングできる機能を備えている
  • クラスターは一般に、最大で 100 ノードまでスケールアップすることができる

スケーリングの設定は、UI上以下のようになっていて、とても簡単に構成できます。

Azure Kubernetes Serviceクラスターとは

こちらに公式の説明があります。

Azure Kubernetes Service クラスターにモデルをデプロイする

https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-azure-kubernetes-service?tabs=python

Azure Kubernetes Service

https://docs.microsoft.com/ja-jp/azure/aks/intro-kubernetes#clusters-and-nodes

超ざっくりポイントは以下のようです。

  • Azure Kubernetes Service(AKS, Azure Machine Learningとは独立したサービス)上のクラスターのこと
  • AKSクラスターはオープンソースのKubernetesのクラスターの概念がベース、土台で動作しているノードがAzureVM、という違いがある
  • 開発環境ではなく、開発したモデルを実ワークロードに対して運用するための環境として適している

[まとめ] コンピューティングの使い分け

最後に使い分け方をまとめておきます。公式Docに以下の説明があるところから、以下のように理解しました。

  • 軽量のモデル開発にはコンピューティング インスタンス
  • 実稼働レベルのモデル開発にはコンピューティング クラスター
  • デプロイしたモデルを実稼働レベルのワークロードで運用するにはAzure Kubernetes Serviceクラスター

実稼働レベルのモデルのトレーニングの場合は、マルチノード スケーリング機能を備える Azure Machine Learning コンピューティング クラスターを使用してください。 実稼働レベルのモデル デプロイの場合は Azure Kubernetes Service クラスターを使用してください。

https://docs.microsoft.com/ja-jp/azure/machine-learning/concept-compute-instance

Azure Kubernetes Service は高スケールの運用デプロイに適してします。 次のいずれかの機能が必要な場合は、Azure Kubernetes Service を使用します。

・高速の応答時間
・デプロイされたサービスの自動スケール
・Logging
・モデル データ収集
・認証
・TLS 終了
・GPU や Field Programmable Gate Array (FPGA) などのハードウェア アクセラレータ オプション

https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-azure-kubernetes-service?tabs=python

デプロイしたモデルの運用については、実際には他にもオプション(自前のサーバー、Azure Container Instance上など)にデプロイがあると思いますが最も高スケールなオプションとしてAKSの利用が推奨されているようですね。

勉強になりました。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。