機械学習機能を簡単に拡張: Rancher に Kubeflow をインストールする方法

機械学習機能を簡単に拡張: Rancher に Kubeflow をインストールする方法

機械学習の分野が発展し続けるにつれて、機械学習を扱うチームが単一のマシンでモデルをトレーニングすることが困難になり、機械学習はもはや単純なモデルトレーニングではないというのが業界のコンセンサスとなっています。

特に独自の ML モデルを生成しているチームの場合、モデルのトレーニングの前、最中、後に行われるアクティビティは多数あります。この状況を説明するために、次の図がよく引用されます。

多くのチームにとって、機械学習モデルを研究環境から本番環境に適用するプロセスは困難でストレスの多いものです。残念ながら、市場にはあらゆる種類の問題に対応する膨大な数のツールがあり、それらはすべて機械学習の課題をすべて解決すると約束しています。

しかし、チーム全体が新しいツールを習得するには時間がかかることが多く、これらのツールを現在のワークフローに統合するのは必ずしも簡単ではありません。この時点で、機械学習パイプラインを構築する必要のあるチーム向けに構築された機械学習プラットフォームである Kubeflow を検討できます。これには、モデルの提供やハイパーパラメータの調整のための他の多くのツールが含まれています。 Kubeflow が目指すのは、最善の ML ツールを集めて単一のプラットフォームに統合することです。

出典: https://www.kubeflow.org/docs/started/kubeflow-overview/

名前が示すように、Kubeflow は Kubernetes 上にデプロイする必要があります。この記事を Rancher のプラットフォームから読んでいるということは、おそらくどこかに Kubernetes クラスターをデプロイしているはずです。

Kubeflow の「フロー」は Tensorflow を意味するわけではないことに注意してください。 Kubeflow は PyTorch や任意の ML フレームワークでも使用できます (ただし、最もよくサポートされているフレームワークは Tensorflow と PyTorch です)。

この記事では、Kubeflow をできるだけ簡単にインストールする方法を紹介します。クラスターにすでに GPU がセットアップされている場合、プロセスははるかに簡単になります。機械学習の多くは NVIDIA GPU で実行する必要があるため、まだ行っていない場合は追加のセットアップ手順を実行する必要があります。

Kubeflow での GPU サポートの設定

Docker 19.x がすでにインストールされていることを前提としています。

1. NVIDIA コンテナ ランタイムをインストールする

GPU を搭載したすべてのノードで:

  1. %ディストリビューション= $(. /etc/os-release; echo $ID $VERSION_ID)  
  2. % curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -  
  3. % curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list  
  4. % sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit  
  5. % sudo apt-get インストール nvidia-container-runtime

次に、Docker デーモンのランタイム フィールドを変更します。

  1. % sudo vim /etc/docker/daemon.json

以下を貼り付けます。

  1. {  
  2. "デフォルトランタイム": "nvidia",  
  3. 「ランタイム」: {  
  4. "エヌビディア": {  
  5. "パス": "/usr/bin/nvidia-container-runtime",  
  6. "ランタイム引数": []  
  7. }  
  8. }  
  9. }

Docker デーモンを再起動します。

  1. % sudo systemctl dockerを再起動します

2. NVIDIAデバイスプラグインをインストールする

マスター ノードで、NVIDIA デバイス プラグインを作成します。

  1. % kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta/nvidia-device-plugin.yml

次に、Kubeflow のインストールを開始します。

Kubeflowをインストールする

注: この記事の執筆時点では、Kubeflow の最新バージョンは 1.0 です。 Kubernetes バージョン 1.14 および 1.15 と互換性があります。

ステップ0: ダイナミックボリューム構成を設定する

Kubeflow をインストールする前に、動的構成を設定する必要があります。

1 つの方法は、hostPath ベースのノード永続ボリュームを使用する Rancher の local-path-provisioner を使用することです。セットアップは非常に簡単です。ノード上のパスを指定して、YAML ファイルをデプロイするだけです。欠点は、ボリューム容量の制限を制御できないことです。

もう 1 つの方法は、ネットワーク ファイル システム (NFS) を使用することです。その手順を以下で説明します。

マスターノードにネットワークファイルシステムを設定する

ほとんどのデータをローカルに保存する場合は、NFS を設定する必要があります。ここでは、NFS サーバーがマスター ノード 10.64.1.163 に配置されていると想定します。

まず、NFS の依存関係をインストールします。

  1. % sudo apt install -y nfs-common nfs-kernel-server

次に、ルート ディレクトリを作成します。

  1. % sudo mkdir /nfsroot

/etc/exports に次のエントリを追加します。

  1. /full/path/to/nfsroot 10.64.0.0/16(rw、ルート スカッシュなし、サブツリー チェックなし)

10.64.0.0 は Kubernetes Pod CIDR ではなく、ノードの CIDR であることに注意してください。

次に、sudo として次のコマンドを使用して共有ディレクトリをエクスポートします。

  1. % sudo エクスポートfs -a

最後に、すべての設定を有効にするには、次のように NFS カーネル サーバーを再起動します。

  1. % sudo systemctl nfs-kernel-serverを再起動します

また、サーバーの再起動時に nfs-kernel-server が起動されていることを確認してください。

  1. % sudo update-rc.d nfs-kernel-server を有効にする

ワーカーノードでの NFS の設定

NFS の依存関係をインストールします。

  1. % sudo apt install -y nfs-common

NFSクライアントプロビジョナーをインストールする

これで、NFS クライアント プロビジョナーをインストールできるようになりました。最後に、私のお気に入りの Rancher 機能の 1 つである App Store を紹介します。

デフォルトでは、Rancher にはテスト済みのアプリケーションが多数付属しています。さらに、Helm Chart 全体を自分でアプリ ストアに追加することもできます。

「アプリ」をクリックし、「カタログの管理」をクリックします。

次に[カタログを追加]を選択します。

次の値を入力してください。

[作成]をクリックして[アプリ]ページに戻ります。しばらく待つと、helm セクションに多くのアプリケーションが表示されます。 [更新] をクリックすると進行状況が表示されます。

ここで、検索ボックスに nfs と入力すると、2 つのエントリが表示されます。

そのうちの 1 つは、まさに私たちが探しているものです: nfs-client-provisioner。クリックすると次の画面が表示されます:

これらは nfs-client-provisioner チャートで使用できるすべてのオプションであり、これらを使用して次の項目を入力する必要があります。

フォームに入力後、[起動]ボタンをクリックします。 Kubernetes が Docker イメージをダウンロードしてすべてをセットアップするまでしばらくお待ちください。すべての操作が完了すると、次のページが表示されます。

私は App Store 機能がとても気に入っています。これは、クラスター上でアプリケーションのインストールと監視が簡単かつ便利になるため、私のお気に入りの機能の 1 つです。

ステップ1: kfctlをダウンロードしてインストールする

これは、kubectl に似た Kubeflow の制御ツールです。 Kubeflow リリース ページからダウンロードできます。

https://github.com/kubeflow/kfctl/releases/tag/v1.0.2

次に、ファイルを解凍し、バイナリを $PATH に配置します。

ステップ2: Kubeflowをインストールする

まず、すべての Kubeflow YAML ファイルを保存するフォルダーを指定します。

  1. $ エクスポートKFAPP =~/kfapp

kfctl 構成ファイルをダウンロードします。

  1. https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_k8s_istio.v1.0.2.yaml を取得します。

注意: Istio がすでにインストールされている場合は、kfctl_k8s_istio.v1.0.2.yaml を編集し、istio-crds および istio-install アプリケーション エントリを削除する必要があります。

次に、CONFIG_URI をエクスポートします。

  1. $ エクスポートCONFIG_URI = "/path/to/kfctl_k8s_istio.v1.0.2.yaml"  

次に、Kubeflow 構成ファイルをダウンロードする場所を示す一連の環境変数を指定する必要があります。

  1. KF_NAME = kubeflow -deploymentをエクスポートします 
  2. BASE_DIR =/optをエクスポートする 
  3. エクスポートKF_DIR =${BASE_DIR}/${KF_NAME}

Kubeflow をインストールします。

  1. % mkdir -p ${KF_DIR}  
  2. % cd ${KF_DIR}  
  3. % kfctl 適用 -V -f ${CONFIG_URI}

すべての設定が完了するまで、しばらくお待ちください。

Kubeflow UI にアクセスする

UI にアクセスするには、Web UI が配置されているポートを知る必要があります。

  1. % kubectl -n istio-system で istio-ingressgateway サービスを取得します

以下を返します。

  1. 名前 タイプ クラスター IP 外部 IP ポート 年齢
  2. istio-ingressgateway ノードポート 10.43.197.63 <なし> 15020:30585/TCP、**80:31380/TCP**、443:31390/TCP、31400:31400/TCP、15029:32613/TCP、15030:32445/TCP、15031:30765/TCP、15032:32496/TCP、15443:30576/TCP 61 分

この場合は 80:31380 であり、http://localhost:31380 で Kubeflow UI にアクセスできることを意味します。

このページが正常に表示されたら、おめでとうございます。Kubeflow のセットアップは成功です 🎉

結論は

この記事では、まず、機械学習自体の複雑さを制御するために Kubeflow のようなツールが必要な理由について検討しました。次に、機械学習ワークロード用にクラスターを準備する手順に従い、特にクラスターが利用可能な NVIDIA GPU を活用できるようにしました。

NFS をセットアップしながら、Rancher App Store を調べて、Helm Chart を App Store に追加しました。 Kubernetes クラスターにインストールできるすべての Kubernetes アプリケーションが提供されます。最後に、クラスターに Kubeflow をインストールする手順が完了しました。

<<:  顔認識システムのセキュリティに関する簡単な分析: どの業界が攻撃に対して脆弱ですか?

>>:  AIが教育技術分野にもたらす変化 パーソナライズされた学習が従来の教育方法を超える

ブログ    
ブログ    
ブログ    

推薦する

自動運転車の未来に関するレポート:乗用車の95%が消滅し、7兆ドルの旅行市場に4つの大きなチャンスがある

[[199334]]自動運転車は20年以内に世界経済を劇的に変え、保険、メディア、セキュリティ、物流...

...

第4回パラダイム NeurIPS 2020: ナレッジグラフ埋め込みの自動化

少し前に、Fourth Paradigm の上級研究員である Quanming Yao 博士が、Ne...

GPT-4Vに匹敵し、120万データと8つのA100のみを使用し、トレーニングは1日で完了し、LLaVA-1.5は11のベンチマークSOTAを更新しました。

マルチモーダル大型モデル着陸の風がようやく吹いた。 12日前、OpenAIはChatGPTに画像認識...

SAPはイノベーションで顧客の成功を支援し、AI時代のデータ主導のビジネス変革の未来を形作ります

SAP は、AI 時代において顧客がデータの潜在能力を最大限に活用し、より深い洞察、より速い成長、よ...

なぜ私たちは、AI による顔の変形が「偽物」だと今でも思っているのでしょうか?

『スター・ウォーズ』のスピンオフシリーズ『ボバ・フェットの書』には、ファンの間で刺激的な議論を巻き...

...

AI搭載のレンガ積みロボットが建設業界に革命を起こす

現在、建設部門は大規模なプロジェクトによって活性化しており、大きな成長を牽引しています。しかし、これ...

車載グレードの安全チップとチップ安全性テスト技術を1つの記事で理解する

世界の自動車産業におけるインテリジェンスと車両のインターネットの発展により、新時代の人々はますます便...

企業は適切なAI推論を得る方法を知る必要がある

人工知能は、Amazon、Google、Microsoft、Netflix、Spotify などの大...

人工知能が教育分野に参入し「スマート教育」を創出

最先端の技術力に加え、人工知能は教育分野にも進出し始めています。北京では先日、中国・外国教師科学教育...

ハイブリッドAIは企業がデータの価値を掘り出すための好ましい方法である

人工知能については、誰もがよくご存知だと思います。実際、人工知能には幅広い知識が含まれており、さまざ...

PubMedBERT: 生物医学的自然言語処理のためのドメイン固有の事前トレーニング済みモデル

今年、大規模言語モデルが急速に発展したため、BERT のようなモデルは「小規模」モデルと呼ばれるよう...

デジタルマーケティングにおけるAI革命

ほんの数年前までは、マーケティングに特化した AI エンジンがマーケティングの未来につながると信じて...

農業革命:農業ロボットの台頭

近年、農業ロボットの登場により農業業界は大きな変化を遂げています。これらの最先端の機械は、作物の栽培...