こんにちは。この記事では、Azure Machie Learningで登場するCompute InstanceとClusterの違いについて、調べて分かったことをまとめておこうと思います。
なお、私もわからないところから調べながらまとめていっているため、理解が正しくない部分があるかもしれません。コメント等でご指摘いただけましたら幸いです。
Contents
コンピューティング インスタンスとは
こちらに公式の説明があります。
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 クラスターにモデルをデプロイする
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 を使用します。
・高速の応答時間
https://docs.microsoft.com/ja-jp/azure/machine-learning/how-to-deploy-azure-kubernetes-service?tabs=python
・デプロイされたサービスの自動スケール
・Logging
・モデル データ収集
・認証
・TLS 終了
・GPU や Field Programmable Gate Array (FPGA) などのハードウェア アクセラレータ オプション
デプロイしたモデルの運用については、実際には他にもオプション(自前のサーバー、Azure Container Instance上など)にデプロイがあると思いますが最も高スケールなオプションとしてAKSの利用が推奨されているようですね。
勉強になりました。
おしまい
コメントを残す