原文はこちら。
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は、コンテナ化されたアプリケーションのクラウドへのデプロイに利用できる、フルマネージドでスケーラブル、可用性の高いサービスです。
Kubeflowは、Kubernetesでの機械学習ワークフローのデプロイと管理を簡単かつ可搬性を持たせ、拡張性高くするオープンソースのプロジェクトです。
以下のノードプールは、BM.DenseIO1.36 シェイプ(36 OCPU、512 GBのメモリ)で作成した例です。
Container Engine for Kubernetesは Kubernetesの "kubeconfig"構成ファイルを作成します。kubectlならびにKubernetes Dashboardを使ってクラスタにアクセスするためにこのファイルを使います。
この時点で、kubectlまたはKubernetes Dashboardを使用してクラスタにアクセスできます。
[注意]
"kubectl proxy"コマンドを実行した後、次のURLを使用してKubernetesダッシュボードにアクセスする必要があります。
Kubeflowのドキュメントにあるように、以下のコマンドを使ってKubeflowをデプロイできます。
このコマンドを使用すると、匿名ユーザーデータの収集が可能になり、Kubeflowの向上に役立ちます。 データを収集したくない場合は、明示的に無効にできます。手順については、Kubeflow Usage Reportingのガイドを参照してください。
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このサービスを使用し、開発チームがクラウドネイティブアプリケーションを信頼性高く構築、展開、および管理できます。アプリケーションが必要とするコンピューティング・リソースを指定するだけで、Container Engine for KubernetesはOracle Cloud Infrastructure上に自動的にプロビジョニングします。
https://docs.cloud.oracle.com/iaas/Content/ContEng/Concepts/contengoverview.htm?tocpath=Services%7CContainer%20Engine%7C_____0
Kubeflowは、Kubernetesでの機械学習ワークフローのデプロイと管理を簡単かつ可搬性を持たせ、拡張性高くするオープンソースのプロジェクトです。
Kubeflow - The Machine Learning Toolkit for KubernetesKubeflowはKubernetesへのTensorFlowのデプロイを自動化します。TensorFlowは最先端の機械学習フレームワークを提供し、Kubernetesはコンテナ化されたアプリケーションのデプロイと管理を自動化します。
https://www.kubeflow.org/
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この構成ファイルは、クラスタのためのkubeconfigファイルとしても知られています。
https://docs.cloud.oracle.com/iaas/Content/ContEng/Tasks/contengdownloadkubeconfigfile.htm?tocpath=Services%7CContainer%20Engine%7C_____4
この時点で、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を使ってデプロイします。ksonnetksonnetはKubernetes manifestの作成、共有、 デプロイのためのフレームワークで、Kubernetesのデプロイを簡素化するのに有用です。 ksonnetがローカルシステムにインストールされていることを確認してください。未インストールの場合は、先に進む前にksonnetをインストールしてください。
https://ksonnet.io/
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 ReportingKubeflowのデプロイ中に、以下のエラーが発生する可能性があります。
https://www.kubeflow.org/docs/guides/usage-reporting/
このエラーを回避するには、他のRBACロールを作成または編集するために必要なロールベースアクセス制御(RBAC)のロールを自分のユーザーに付与する必要があります。その後、以下のコマンドを実行します。"jupyter-role" is forbidden: attempt to grant extra privileges:
$kubectl create clusterrolebinding default-admin --clusterrole=cluster-admin --user=ocid.user.oc1..aaaaa....
Step 4: Access Notebook
これでJupiter Notebookにアクセスできる準備が整いました。ML/AIモデルをデータセットを使って構築できます。Jupyter Notebooksnotebookにローカル接続するために、以下のコマンドを実行できます。
https://www.kubeflow.org/docs/guides/components/jupyter/
$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