機械学習機能を簡単に拡張: 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が教育技術分野にもたらす変化 パーソナライズされた学習が従来の教育方法を超える

推薦する

...

人工知能はプライバシー侵害につながり、人々は顔スキャンが安全を奪うのではないかと心配している

データの蓄積、コンピュータの計算能力の飛躍的向上、アルゴリズムの最適化により、人工知能は生活をより効...

ChatGPTは自分で質問することを学習し、複数のファイルのアップロードをサポートしています

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

データが多すぎたり、乱雑すぎたり、複雑すぎたりしていませんか?このようなデータガバナンスプロセスが必要です

機械学習の基盤となるデータは、GB、TB、PB と数え切れないほど増加してきました。現在、より大規模...

ソフトマックスを放棄した初の大規模線形アテンショントランスフォーマーモデル: 1750億のパラメータ、より優れた速度と精度

最近、上海人工知能研究所とOpenNLPLabの研究チームが、ソフトマックスベースの注意メカニズムを...

...

LeCunの新作、カード1枚でトレーニングできる!分散正規化、スパースエンコーダがクラッシュしなくなりました

最近、LeCun は、依然として崩壊問題と自己監督に関する新しい研究を発表しました。今回、彼は新しい...

人工知能に必要な3つの条件

人工知能に必要な条件:ディープラーニングモデル、ビッグデータ、計算能力著者: マイケル・チャン201...

OpenVINOの新バージョンがリリースされ、視覚を超えた音声をサポートし、よりインテリジェントなエッジ開発者の力を高める

本日、インテルとその開発者エコシステム パートナーは、「インテリジェント エッジに焦点を当て、開発者...

機械学習/ディープラーニング プロジェクトを始める 8 つの方法

[[392342]] [51CTO.com クイック翻訳]探索的データ分析から自動機械学習 (Aut...

人工知能は都市をよりインテリジェントに発展させる力を与える

人工知能などのハイテク手段を基盤として構築された都市脳は、都市の経済発展のための「ブラックテクノロジ...

自動運転:最も安全ではないが、より安全

「九章」量子コンピューティングのプロトタイプ、「天極」脳型チップ、国内最大直径のシールドマシン「景華...

シリコンバレーの大手企業のAIスタートアップへの投資レイアウトを解明! Nvidiaが全力で取り組み、MicrosoftとOpenAIの関係が独占禁止法調査につながる

今年、新たな AI スタートアップ企業がシリコンバレーとビジネス界全体に衝撃を与えました。 Open...

...

新たな市場トレンドをリードする百度Apollo Zhituがグローバルインテリジェント運転マップをリリース

自動車の知能化の時代が到来しました。 12月8日、広州で開催された第2回百度アポロエコシステムカンフ...