第8章 独立した Python 関数としてモデルを保存

データモデルを独立した Python 機能に切り替えて、ノートブックサーバー環境外でこれを実行し、これをインテリジェントアプリケーションで使用できます。

前提条件

  • JupyterLab インターフェイスへのアクセスがある。
  • Jupyter ノートブックで予測モデルを開発している。
  • Jupyter ノートブックが、Red Hat OpenShift DataScience サンプル S2I アプリケーションリポジトリーから作成された Git リポジトリーに保存されている。

手順

  1. JupyterLab で、新しい prediction.py ファイルを作成します。
  2. prediction.py ファイルを編集し、Jupyter ノートブックの予測モデルに基づいて predict 関数を定義します。

    • 予測の作成に必要なコードのみを含めます。たとえば、Jupyter ノートブックでのプロットのレンダリングにのみ関連するライブラリーをインポートする必要はありません。
    • 予測を実行するために新しいパッケージが必要な場合は、requirements.txt ファイルの内容を更新し、pip install -r requirements.txt を実行して新規パッケージをインストールします。
  3. 新しいノートブックセルで関数を呼び出すことにより、ノートブックから独立した Python 関数を実行できることをテストします。以下はその例です。

    from prediction import predict
      predict(data)

検証

  • predict 関数が正しく実行され、ノートブックセルから呼び出されると予想される出力を返します。

8.1. ノートブックサーバーへの Python パッケージのインストール

パッケージとバージョンを requirements.txt ファイルに追加し、ノートブックセルで pip install コマンドを実行すると、デフォルトのノートブックサーバーイメージには含まれない Python パッケージをインストールできます。

注記

パッケージを直接インストールすることもできますが、Red Hat は、requirements.txt ファイルを使用して、ファイルに記載されているパッケージを異なるノートブック間で簡単に再利用できるようにすることをお勧めします。さらに、requirements.txt ファイルを使用すると、S2I ビルドを使用してモデルをデプロイする場合にも役立ちます。

前提条件

  • Jupyter にログインし、ノートブックを開いている。

手順

  1. 以下の方法のいずれかを使用して、新規テキストファイルを作成します。

    • + をクリックして新規ランチャーを開き、Text file をクリックします。
    • FileNewText File の順にクリックします。
  2. テキストファイルの名前を requirements.txt に変更します。

    1. ファイルの名前を右クリックし、Rename Text をクリックします。Rename File ダイアログが開きます。
    2. New Name フィールドに requirements.txt を入力し、Rename をクリックします。
  3. Requirements.txt ファイルにインストールするパッケージを追加します。

    altair

    == (equal to) 演算子を使用して、インストールするバージョンを指定できます。以下はその例です。

    altair==4.1.0
    注記

    Red Hat は、時間が経過してもノートブックサーバーの高い安定性を確保するために、正確なパッケージバージョンを指定することをお勧めします。新しいパッケージバージョンは、お使いの環境における動作に対し、望ましくない/予期しない変更を加える可能性があります。

    複数のパッケージを同時にインストールする場合は、各パッケージを別々の行に配置します。

  4. ノートブックセルを使用して、requirements.txt のパッケージをサーバーにインストールします。

    1. ノートブックに新しいセルを作成し、以下のコマンドを入力します。

      !pip install -r requirements.txt
    2. Shift と Enter を押してセルを実行します。
    重要

    ノートブックサーバーにパッケージがインストールされますが、コードセルで import ディレクティブを実行してコード内のパッケージを使用する必要があります。

    import altair

検証