Python と Jupyter Notebook を使用してデータ サイエンスを教えるためのラボを設定する

この記事では、Jupyter Notebook の使い方を学生に教えるためのツールを含むテンプレート仮想マシン (VM) を Azure Lab Services で設定する方法について説明します。 また、ラボ ユーザーが仮想マシン上のノートブックに接続する方法についても説明します。

オープンソース プロジェクトである Jupyter Notebook を使うと、"ノートブック" と呼ばれる単一のキャンバス上で、リッチ テキストと実行可能な Python ソース コードを簡単に組み合わせることができます。 ノートブックを実行して、入力と出力の線形レコードを作成します。 これらの出力には、テキスト、情報テーブル、散布図などを含めることができます。

Note

この記事では、ラボ アカウントに代わり導入されたラボ プランで使用できる機能について説明します。

前提条件

  • このラボを設定するには、Azure サブスクリプションにアクセスする必要があります。 組織の管理者に相談して、既存の Azure サブスクリプションにアクセスできるかどうかを確認してください。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

ラボ プランの設定を構成する

Azure サブスクリプションを取得したら、Azure Lab Services でラボ計画を作成できます。 新しいラボ プランの作成の詳細については、「クイックスタート: ラボを作成するためのリソースの設定」を参照してください。 既存のラボ計画を使用することもできます。

このラボでは、Data Science Virtual Machine イメージの 1 つを基本 VM イメージとして使います。 これらのイメージは、Azure Marketplace で入手できます。 このオプションにより、ラボ作成者は、ラボの基本イメージとしてこのイメージを選択できます。 ラボ プランでこれらのイメージを有効にする必要があります。

ラボ作成者が使用できる Azure Marketplace イメージを有効にするには、次の手順に従います。

  • お使いのオペレーティング システムの要件に応じて、次のいずれかの Azure Marketplace イメージを選びます。

    • Data Science Virtual Machine – Windows Server 2019/Windows Server 2022
    • Data Science Virtual Machine – Ubuntu 20.04
  • または、カスタム VM イメージを作ります。

    Azure Marketplace の Data Science VM イメージは、Jupyter Notebooks を使って既に構成されています。 これらのイメージには、データ サイエンス用の他の開発ツールとモデリング ツールも含まれています。 これらの追加のツールが不要で、Jupyter Notebook だけを使用する簡易セットアップを行う場合は、カスタム VM イメージを作成します。 例については、Azure での JupyterHub のインストールに関する記事を参照してください。

    カスタム イメージを作成した後、イメージをコンピューティング ギャラリーにアップロードして、Azure Lab Services でそれを使います。 詳細については、Azure Lab Services でのコンピューティング ギャラリーの使用に関する記事を参照してください。

ラボを作成する

  • ラボ プラン用のラボを作成します。

    ラボを作成する方法については、チュートリアル: ラボの設定に関するページを参照してください。 次のラボ設定を指定します。

    ラボの設定 Value
    [仮想マシンのサイズ] Jupyter Notebook にアクセスする基本的なセットアップの場合は、[小規模] または [中規模] を選択します。 人工知能やディープ ラーニングのクラスで使われるコンピューティング集中型およびネットワーク集中型のアプリケーションの場合は、[Alternative Small GPU (Compute)] (代替小規模 GPU (コンピューティング)) を選びます。
    仮想マシン イメージ Data Science Virtual Machine – Windows Server 2019Data Science Virtual Machine – Windows Server 2022、または Data Science Virtual Machine – Ubuntu を選択します。
    仮想マシン設定のテンプレート [カスタマイズせずに仮想マシンを使用する] を選択します。
  • [代替小規模 GPU (コンピューティング)] サイズのラボを作成する場合は、GPU ドライバーをインストールします。

    このプロセスでは、GPU で高パフォーマンス コンピューティングを有効にするために必要な、最新の NVIDIA ドライバーと Compute Unified Device Architecture (CUDA) ツールキットがインストールされます。 詳しくは、GPU 仮想マシンでのラボの設定に関する記事をご覧ください。

テンプレート マシンの構成

ラボを作成した後、選んだ仮想マシンのサイズとイメージに基づいてテンプレート VM を作成します。 このクラスの学生に提供するすべてのものを使って、テンプレート VM を構成します。 詳細については、「Azure Lab Services におけるテンプレートの作成と管理」を参照してください。

Data Science VM のイメージには、この種類のクラスに必要な多くのデータ サイエンス フレームワークとツールが付属しています。 たとえば、イメージには、以下が含まれます。

  • Jupyter Notebook: データ科学者が生データの取得、計算の実行、結果の表示を同じ環境で行える Web アプリ。 ローカル環境のテンプレート VM で実行されます。
  • Visual Studio Code: ノートブックを作成およびテストするときの多くの機能を備えた対話型エクスペリエンスを提供する統合開発環境 (IDE)。 詳細については、「Visual Studio Code での Jupyter Notebooks の使用」を参照してください。

Data Science Virtual Machine – Ubuntu イメージは X2Go サーバーでプロビジョニングされており、ラボ ユーザーはグラフィカル デスクトップ エクスペリエンスを使用できます。

ツールで GPU を使用できるようにする

代替小規模 GPU (コンピューティング) サイズを使う場合は、Data Science フレームワークとライブラリが GPU を使うように適切に設定されていることを確認することをお勧めします。 別のバージョンの NVIDIA ドライバーと CUDA ツールキットのインストールが必要になる場合があります。 GPU を構成するには、フレームワークまたはライブラリのドキュメントを参照する必要があります。

たとえば、TensorFlow が GPU を使っていることを検証するには、テンプレート VM に接続し、Jupyter Notebook で次の Python-TensorFlow コードを実行します。

import tensorflow as tf
from tensorflow.python.client import device_lib

print(device_lib.list_local_devices())

このコードからの出力が次のような結果になる場合、TensorFlow は GPU を使っていません。

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 15833696144144374634
]

例の続きに関するガイダンスについては、TensorFlow GPU のサポートに関するページを参照してください。 TensorFlow のガイダンスは、次の内容を網羅しています。

TensorFlow の手順に従って GPU を構成した後、テスト コードを再実行すると、次のような結果が表示されます。

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 15833696144144374634
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 11154792128
locality {
  bus_id: 1
  links {
  }
}
incarnation: 2659412736190423786
physical_device_desc: "device: 0, name: NVIDIA Tesla K80, pci bus id: 0001:00:00.0, compute capability: 3.7"
]

クラス用のノートブックを提供する

次のタスクは、使用するノートブックをラボ ユーザーに提供することです。 ノートブックはローカル環境のテンプレート VM に保存できるため、各ラボ ユーザーが独自のコピーを持つことができます。

Azure Machine Learning のサンプルのノートブックを使用する場合は、Jupyter Notebook で環境を構成する方法に関するセクションをご覧ください。

テンプレート マシンを発行する

ラボ ユーザーがラボ VM を使用できるようにするには、テンプレートを発行します。 ラボ VM には、前に構成したすべてのローカル ツールとノートブックが含まれます。

Jupyter Notebook に接続する

以下のセクションでは、ラボ ユーザーがラボ VM 上の Jupyter Notebook に接続するためのさまざまな方法を示します。

ラボ VM 上の Jupyter Notebook を使用する

ラボ ユーザーは、ローカル コンピューターからラボ VM に接続して、ラボ VM 内の Jupyter Notebook を使用できます。

Windows ベースのラボ VM を使っている場合、ラボ ユーザーはリモート デスクトップ (RDP) 経由でラボ VM に接続できます。 詳しくは、「Windows ラボ VM に接続する」の方法をご覧ください。

Linux ベースのラボ VM を使っている場合、ラボ ユーザーは SSH 経由で、または X2Go を使って、ラボ VM に接続できます。 詳しくは、「Linux ラボ VM に接続する」の方法をご覧ください。

VM 上の Jupyter サーバーへの SSH トンネル

Linux ベースのラボの場合、ローカル コンピューターからラボ VM 内の Jupyter サーバーに、直接接続することもできます。 SSH プロトコルを使うと、ローカル コンピューターとリモート サーバーの間でポート転送が有効になります。 これはユーザーのラボ VM です。 サーバー上の特定のポートで実行されているアプリケーションは、ローカル コンピューター上の対応するポートに "トンネリング" されます。

ユーザーのローカル コンピューターとラボ VM 上の Jupyter サーバーの間に SSH トンネルを構成するには、次の手順のようにします。

  1. Azure Lab Services の Web サイトに移動します。

  2. Linux ベースのラボ VM が実行されていることを確認します。

  3. [接続] アイコン>[SSH を使用して接続する] を選んで、SSH 接続コマンドを取得します。

    SSH 接続コマンドは次の例のようになります。

    ssh -p 12345 student@ml-lab-00000000-0000-0000-0000-000000000000.eastus2.cloudapp.azure.com
    

    Linux VM に接続する方法の詳細を確認してください。

  4. ローカル コンピューターで、ターミナルまたはコマンド プロンプトを起動し、それに SSH 接続文字列をコピーします。 次に、-L 8888:localhost:8888 をコマンド文字列に追加します。これにより、ポート間のトンネルが作成されます。

    最終的なコマンドは次の例のようになります。

    ssh –L 8888:localhost:8888 -p 12345 student@ml-lab-00000000-0000-0000-0000-000000000000.eastus.cloudapp.azure.com
    
  5. Enter キーを押してコマンドを実行します。

  6. プロンプトが表示されたら、ラボ VM のパスワードを入力してラボ VM に接続します。

  7. VM に接続したら、次のコマンドを使って Jupyter サーバーを起動します。

    jupyter notebook
    

    このコマンドからは、Jupyter サーバーの URL がターミナルに出力されます。 URL は次の例のようになります。

    http://localhost:8888/?token=8c09ecfc93e6a8cbedf9c66dffdae19670a64acc1d37
    
  8. Jupyter Notebook に接続して作業を行うには、この URL をローカル コンピューターのブラウザーに貼り付けます。

    Note

    Visual Studio Code でも、優れた Jupyter Notebook の編集エクスペリエンスが可能です。 リモート Jupyter サーバーに接続する方法の指示に従って、前の手順と同じ URL を使用して、ブラウザーからではなく VS Code から接続できます。

コストを見積もる

このセクションでは、25 人のラボ ユーザーを対象にこのクラスを実行する場合のコストの見積もりを示します。 予定された授業時間は 20 時間です。 また、各ユーザーには、予定された授業時間外に宿題や課題を行うための 10 時間の割り当てが与えられます。 ここで選んだ VM のサイズは、代替小規模 GPU (コンピューティング) で、139 ラボ ユニットでした。 [小規模] (20 のラボ ユニット) または [中規模] (42 のラボ ユニット) を使用する場合は、こちらの式のラボ ユニット部分を適切な数値に置き換えることができます。

このクラスで考えられるコスト見積もりの例を次に示します: 25 lab users * (20 scheduled hours + 10 quota hours) * 139 lab units * 0.01 USD per hour = 1042.5 USD

重要

このコスト見積もりは、例を示すためだけのものです。 価格について詳しくは、「Azure Lab Services の価格」をご覧ください。

この記事では、Jupyter Notebook クラス用のラボを作成する方法と、ユーザーがラボ VM 上のノートブックに接続できる方法について説明しました。 他の機械学習クラスにも同様のセットアップを使用できます。

テンプレート イメージをラボに発行できるようになります。 詳細については、「テンプレート VM の発行」を参照してください。

ラボを設定するときは、次の記事を参照してください。