Notebook Serversを使って機械学習モデルを作成する

Original Post>

Kubeflowのコンポーネントの一つである「Notebook Servers」は、Jupyter notebookの作成と管理が行える機能を提供しています。管理画面(WebUI)から簡単な設定を行うだけで、Jupyter notebookの作成や利用することができ、ユーザーごとに複数管理することができます。

はじめに

前回は、Kubeflowの内部構造の解説と構築を行いました。今回は、Kubeflowのコンポーネントの一つである「Notebook Servers」を使ってJupyter notebookを作成し、その環境上で機械学習モデルを作成するところまでを解説します。なお、本稿の後半部分で解説する機械学習モデルの開発のステップやハンズオンで利用するサンプルは、次回以降に解説するTensorFlow Extended (TFX) を使った機械学習パイプラインの構築にもつながる内容となっているため、おさえておくことをお勧めします。

「Notebook Servers」について

Kubeflowのコンポーネントの一つである「Notebook Servers」は、Jupyter notebookの作成と管理が行える機能を提供しています。管理画面(WebUI)から簡単な設定を行うだけで、Jupyter notebookの作成や利用することができ、ユーザーごとに複数管理することができます。Jupyter notebookはローカル環境においてもAnacondaなどのパッケージを利用することで簡単に導入できますが、「Notebook Servers」を利用するメリットとしては以下の点が挙げられます。

  • 環境の再現性を高められる:「Notebook Servers」はコンテナ化されたJupyter notebookを前提に作成を行うため、あらかじめインストールが必要なパッケージや設定を含めた環境をコンテナイメージとして管理できます。ノートブック(.ipynbファイル)とセットで管理することで、開発時の環境を再現しやすくできます
  • ユーザー間で共有できる:複数のユーザーで利用できる共通の基盤上にJupyter notebookを作成できるため、データ分析や可視化した結果、開発中のモデルなどを共有し共同作業を行うことが可能です。
  • モデルの開発と運用を共通の基盤で実施できる:「KFServing」や「Kubeflow Pipelines」といったモデルのデプロイや運用を行うためのKubeflow のコンポーネントとシームレスに連携することが可能です。

手元の環境で試行錯誤した結果、ようやく高精度なモデルが作成できたとしても、いざ本番環境で稼働させようとした際に、「別の環境では再現ができない(結果が大きく変わってしまう)」や「チーム内で共有したいが簡単に共有できない」「(デプロイ先の環境や運用基盤の違いなどにより)すぐに本番環境で利用できない」といった問題が発生してしまうと、その価値を発揮させることが困難になります。「Notebook Servers」を利用することで、機械学習モデルの開発者が試行錯誤や共同作業ができる環境だけでなく、開発したモデルの本番稼働に近づけることも可能になります。

Jupyter notebook 環境を作成する

それでは、「Notebook Servers」を使って、Jupyter notebookを作成していきます。概略は以下のとおりで、すべてGUIで行うことができます。

  1. 「Kubeflow UI」にアクセス
  2. Jupyter notebook(ノートブックサーバー)の作成
  3. 必要なライブラリのインストール

それでは、まず「Kubeflow UI」にアクセスしてJupyter notebookを作成していきましょう。なお、本連載の第2回で解説した構築手順に沿ってKubeflowを構築済みの方は、記事内に記載されている「ポートフォワーディング」の手順が実施済みであることが前提となっています。

1. Kubeflow UIにアクセス

Kubeflow UIの左側にあるパネルの中から、「Notebook Servers」をクリックします。

図1-1:Kubeflow UI

図1-1:Kubeflow UI

ノートブックサーバーの管理画面に遷移しますので、画面上部にある「+ NEW SERVER」をクリックして新規ノートブックサーバーを作成します。

図1-2:ノートブックサーバー管理画面

図1-2:ノートブックサーバー管理画面

2. Jupyter notebook(ノートブックサーバー)の作成

作成するノートブックサーバーの名前やメモリ等の設定を行います。ノートブックサーバーはコンテナイメージ(Docker Image)から作成します。今回は標準で選択できるコンテナイメージを使用します。

図1-3:ノートブックサーバー設定画面

図1-3:ノートブックサーバー設定画面

本稿で使用するノートブックサーバーの設定は下記のようになります。ここで記載のない項目についてはデフォルト設定のままで問題ありません。

項目名 設定値 備考
Name example-notebook ノートブックサーバーの名前
Image gcr.io/kubeflow-images-public/tensorflow-2.1.0-notebook-cpu:1.0.0 ノートブックサーバーのDocker Image
CPU 2 ノートブックサーバーの CPU個数
Memory 5.0Gi ノートブックサーバーのメモリ容量
※Notebook Servers側の入力規則に従い、単位は「Gi」で設定します

設定が完了したら、画面下部にある「LAUNCH」ボタンをクリックしてノートブックサーバーを作成します。

数分待つとノートブックサーバーの作成が完了します。作成できたら「CONNECT」をクリックしてノートブックサーバーに接続します。

図1-4:ノートブックサーバー管理画面

図1-4:ノートブックサーバー管理画面

ノートブックに接続するとJupyter notebookのUIに遷移します。

図1-5:Jupyter notebook の UI

図1-5:Jupyter notebook の UI

3. 必要なライブラリのインストール

機械学習モデルを開発するために必要なライブラリをインストールします。まずはノートブックを作成するため、画面右上にある[New]→[Python 3]をクリックします。

図1-6:ノートブックの環境選択図1-6:ノートブックの環境選択

今回必要なライブラリとしてTensorFlow Extended(TFX)scikit-learnwitwidgetalibiseabornboto3をインストールします。ノートブックのセルにライブラリインストールのコマンドを入力し実行します。

!pip install tfx==1.2.1 scikit-learn==0.24.2 witwidget==1.8.1 alibi==0.6.0 seaborn==0.11.2 boto3==1.20.5 --user

上述のコマンドの実行結果は、以下のようになります。

図1-7:ライブラリインストール結果

図1-7:ライブラリインストール結果

画面上部の「restart the kernel」(赤枠)のボタンをクリックし、ノートブックの環境を再起動します。

図1-8:restart the kernel ボタン

図1-8:restart the kernel ボタン

再起動確認ポップアップが表示されますので、「Restart」ボタンをクリックします。

図1-9. 再起動確認ポップアップ

図1-9. 再起動確認ポップアップ

これで機械学習モデルを開発する環境の準備ができました。次は機械学習モデル開発の各ステップの概要を解説した後に、このJupyter notebookを使った実際の操作を解説していきます。