[Kubernetes, Cloud] Deploy Kubeflow with Oracle Cloud Infrastructure Container Engine for Kubernetes

原文はこちら。
https://blogs.oracle.com/cloud-infrastructure/deploy-kubeflow-with-oracle-cloud-infrastructure-container-engine-for-kubernetes

このエントリでは、Oracle Cloud Infrastructure Container Engine for KubernetesにKubeflowをデプロイする方法の詳細な手順を紹介します。

Container Engine for Kubernetesは、コンテナ化されたアプリケーションのクラウドへのデプロイに利用できる、フルマネージドでスケーラブル、可用性の高いサービスです。
Overview of Container Engine for Kubernetes
https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm?tocpath=Services%7CContainer%20Engine%7C_____0
このサービスを使用し、開発チームがクラウドネイティブアプリケーションを信頼性高く構築、展開、および管理できます。アプリケーションが必要とするコンピューティング・リソースを指定するだけで、Container Engine for KubernetesはOracle Cloud Infrastructure上に自動的にプロビジョニングします。

Kubeflowは、Kubernetesでの機械学習ワークフローのデプロイと管理を簡単かつ可搬性を持たせ、拡張性高くするオープンソースのプロジェクトです。
Kubeflow - The Machine Learning Toolkit for Kubernetes
https://www.kubeflow.org/
KubeflowはKubernetesへのTensorFlowのデプロイを自動化します。TensorFlowは最先端の機械学習フレームワークを提供し、Kubernetesはコンテナ化されたアプリケーションのデプロイと管理を自動化します。

Step 1: Create a Kubernetes Cluster

Container Engine for KubernetesでKubernetesクラスタを作成します。このクラスタは、Oracle Cloud Infrastructureコンソールを使用して手動で作成することも、TerraformおよびSDKを使用して自動的に作成することもできます。
Creating a Kubernetes Cluster
https://docs.cloud.oracle.com/iaas/Content/ContEng/Tasks/contengcreatingclusterusingoke.htm?tocpath=Services%7CContainer%20Engine%7C_____3
Terraform provider for Oracle Cloud Infrastructure - container_engine sample
https://github.com/oracle/terraform-provider-oci/tree/master/docs/examples/container_engine
パフォーマンスを向上させるため、ベアメタルのシェイプを使用してノードプールにノードを作成することをお勧めします。データセットのサイズとモデルトレーニングに必要なコンピューティングキャパシティに応じて、ノードプール内の適切なシェイプとノード数を選択します。

以下のノードプールは、BM.DenseIO1.36 シェイプ(36 OCPU、512 GBのメモリ)で作成した例です。

Container Engine for Kubernetesは Kubernetesの "kubeconfig" 構成ファイルを作成します。kubectlならびにKubernetes Dashboardを使ってクラスタにアクセスするためにこのファイルを使います。

Step 2: Download the Kubernetes Configuration File

作成したばかりのクラスタのKubernetes構成ファイルをダウンロードします。
Downloading a kubeconfig File to Enable Cluster Access
https://docs.cloud.oracle.com/iaas/Content/ContEng/Tasks/contengdownloadkubeconfigfile.htm?tocpath=Services%7CContainer%20Engine%7C_____4
この構成ファイルは、クラスタのためのkubeconfigファイルとしても知られています。

この時点で、kubectlまたはKubernetes Dashboardを使用してクラスタにアクセスできます。

[注意]
"kubectl proxy"コマンドを実行した後、次のURLを使用してKubernetesダッシュボードにアクセスする必要があります。
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

Step 3: Deploy Kubeflow

Kubernetesクラスタ作成後、Kubeflowをデプロイできます。このエントリでは、Kubeflowをksonetを使ってデプロイします。
ksonnet
https://ksonnet.io/
ksonnetはKubernetes manifestの作成、共有、 デプロイのためのフレームワークで、Kubernetesのデプロイを簡素化するのに有用です。 ksonnetがローカルシステムにインストールされていることを確認してください。未インストールの場合は、先に進む前にksonnetをインストールしてください。

Kubeflowのドキュメントにあるように、以下のコマンドを使ってKubeflowをデプロイできます。
Getting Started - Quick Start
https://www.kubeflow.org/docs/started/getting-started/#quick-start
export KUBEFLOW_VERSION=0.2.2
curl https://raw.githubusercontent.com/kubeflow/kubeflow/v${KUBEFLOW_VERSION}/scripts/deploy.sh | bash
[注意]
このコマンドを使用すると、匿名ユーザーデータの収集が可能になり、Kubeflowの向上に役立ちます。 データを収集したくない場合は、明示的に無効にできます。手順については、Kubeflow Usage Reportingのガイドを参照してください。
Usage Reporting
https://www.kubeflow.org/docs/guides/usage-reporting/
Kubeflowのデプロイ中に、以下のエラーが発生する可能性があります。
"jupyter-role" is forbidden: attempt to grant extra privileges:
このエラーを回避するには、他のRBACロールを作成または編集するために必要なロールベースアクセス制御(RBAC)のロールを自分のユーザーに付与する必要があります。その後、以下のコマンドを実行します。
$kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin --user=ocid.user.oc1..aaaaa....

Step 4: Access Notebook

これでJupiter Notebookにアクセスできる準備が整いました。ML/AIモデルをデータセットを使って構築できます。
Jupyter Notebooks
https://www.kubeflow.org/docs/guides/components/jupyter/
notebookにローカル接続するために、以下のコマンドを実行できます。
$kubectl get pods --selector="app=tf-hub" --output=template --template="{{with index .items 0}}{{.metadata.name}}{{end}}"
$kubectl port-forward tf-hub-0 8000:8000

Summary

OCI Container Engine for KubernetesとKubeflowを使って、プロジェクト用の柔軟かつスケーラブルな機械学習およびAIプラットフォームを簡単にセットアップできます。基盤となるインフラストラクチャの管理ではなく、モデルの構築とトレーニングに注力できます。

0 件のコメント:

コメントを投稿