機械学習機能を簡単に拡張: 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があなたが何歳で死ぬかを予測?トランスフォーマーの「占い」がネイチャーのサブジャーナルに掲載され、事故死の予測に成功

AIは本当に科学的に占いができるんですね! ?デンマーク工科大学(DTU)の研究者らは、各人の死亡の...

2022年の最先端技術トップ10:将来ロボットは多用途化することが予想される

最近、アリババDAMOアカデミーは、2022年に最も注目に値する最先端技術トップ10をまとめました。...

情報理論に基づくキャリブレーション技術により、マルチモーダル機械学習の信頼性が向上

マルチモーダル機械学習は、さまざまなシナリオで目覚ましい進歩を遂げています。しかし、マルチモーダル学...

「リーフチップ」が小型ロボットに油圧パワーを提供

[[186706]]マサチューセッツ工科大学(MIT)は最近、同校の研究者らが樹木や植物のポンプ機構...

日本の警察は、AIを使って不審者の動きや表情を分析し、「一匹狼」犯罪に対処する予定

7月10日、日経中国版ウェブサイトの報道によると、日本の警察庁は早ければ年内にもAIによる捜査活動を...

AIを使って死後の意識を蘇らせることは信頼できるのか?デジタル不滅には経済計算が必要

十分なデータがあれば、愛する人が亡くなった後でも、その人の意識を生かし続けることができます。それは何...

...

ChatGPTネットワーキング機能が正式に開始され、Plusメンバーが利用可能になりました

10月19日、チャットボットChatGPTはリリース以来、インターネットにアクセスできず、2021年...

...

...

エンタープライズ AI の 4 つのトレンド: 現在地と今後の方向性

[[275946]]ビッグデータダイジェスト制作出典: フォーブス編纂者:張大毓人工知能は従来の産業...

CCTV 3.15は顔認識の悪用を暴露し、多くの教育企業が同様のカメラを使用する可能性がある

CCTV スクリーンショット街面の李婷が報告顔認識の応用シナリオはますます多様化しており、その背後...

AIが本当に成功する方法

[[412385]]人工知能は現在、特に自動運転車でより広く深く活用されています。人工知能を使用して...