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

ブログ    

推薦する

AI開発者の皆さん、こちらをお読みください: 主流のモバイルディープラーニングフレームワークの包括的なレビュー

PCと比較すると、モバイルデバイスは携帯性に優れており、普及率も高くなっています。近年、モバイルデバ...

セキュリティ業界の大手企業はどのようにドローンを配備するのでしょうか?

ドローンは警報装置、検出器、カメラなどを搭載し、多くの機能を実現でき、セキュリティ監視、スマートビル...

トランプ大統領は自動運転技術を承認せず、自動運転車は決して成功しないと述べている

最近、外国メディアは複数の情報筋の話として、トランプ大統領は自動運転技術を承認していないと報じた。ト...

2021年は新たなAIを形作る

人工知能が世界を形作っています。コロナウイルスを克服する方法、自動車の自動化、ロボット工学など、世界...

ラマ事件じゃないよ!李開復の大型モデルが貝殻論争に巻き込まれ、チームの2度目の反応がここに!

ノアとシャオウが編集制作:51CTO テクノロジースタック(WeChat ID:blog)昨日、テク...

Java ガベージ コレクション アルゴリズムの紹介

51CTO 編集者注: 「Java ガベージ コレクション メカニズムの簡単な分析」では、Java ...

...

人工知能プログラミングは、人間がよりインテリジェントな機械を作成するのに役立ちますか?

テクノロジーが急速に進歩するにつれ、人工知能プログラミングはますます成熟しつつあります。その開発は、...

MetaのAIディレクターは、AIスーパーインテリジェンスがすぐに実現するとは考えておらず、量子コンピューティングにも懐疑的だ。

メタの主任科学者であり、ディープラーニングの先駆者であるヤン・ルカン氏は、現在のAIシステムが、山の...

Google、一般的な皮膚疾患を識別するための新しいAIツールを発表

5月19日、海外メディアの報道によると、人工知能はヘルスケア分野で多くの用途があるため、Google...

世界のAI競争は中国と米国がリード。人工知能は過大評価されているのか?

[[315351]]少し前、グーグルの元CEOであるシュミット氏は下院科学宇宙技術委員会の公聴会で...

All Research: AIガバナンス市場規模は2027年に13億4,520万米ドルに達する

9月28日、市場調査会社オールリサーチが発表したレポートでは、2027年までに人工知能ガバナンス市場...

...

AIは数学データベースの問題の82%を証明でき、Transformerをベースにした新しいSOTAが達成されました。

科学者たちは最近、AI に数学の授業をさせることに夢中になっていると言わざるを得ません。現在、Fac...