4.4 Pythonインタプリタを介したノートブックでのGPUコンピュート機能の有効化

このトピックでは、Pythonインタプリタを介してノートブックでGPUコンピュート機能を有効にする方法を示します。また、そのノートブックを実行中の現在のGPUに関する情報、およびその他の詳細を取得する方法を示します。

前提条件:
  • 有料のAutonomous Database Serverlessデータベース・インスタンス。
  • このGPU機能は、OMLアプリケーションに対して指定されているECPUが16以上であるOracle Autonomous Data Warehouse ServerlessインスタンスまたはOracle Autonomous Transaction Processing Serverlessインスタンスの場合に有効になっています。コストの詳細は、Oracle Cloud Servicesの契約ページにあるOracle PaaSおよびIaaSユニバーサル・クレジット・サービスの説明のドキュメントを参照してください。

    ノート:

    このGPU機能はノートブック・クラシックではサポートされていません。
  • 基本NVIDIAライブラリはベース環境に含まれていますが、ご自分のプロジェクトに必要な、GPU対応のサード・パーティ製ライブラリを使用して、カスタムConda環境を作成する必要があります。GPU対応のパッケージのみに、PythonパラグラフにおけるGPUによるメリットがあります。

    ノート:

    デフォルトでは、事前インストール済で事前構成済のNVIDIAライブラリが、ホストVMにあるGPUインタプリタ・コンテナに提供されます。ただし、GPUを使用するサードパーティ製Pythonパッケージには、通常は、依存関係として特定のバージョンのNVIDIA CUDAライブラリが必要になり、それにより、含まれているライブラリがオーバーライドされる場合があります。
  • GPU対応のサードパーティ製Pythonパッケージ。この例では、pytorchを使用します。

ノート:

GPUリソースの予約と起動が原因で、GPUコンピュート機能を備えたノートブックの起動では遅延が発生することが予想されています。これには数分かかる場合があります。
トランスフォーマ・モデルを使用した埋込みの生成は、OMLノートブックのPythonインタプリタを使用してPythonメモリーで実行できます。GPUを使用すると、トランスフォーマ・モデルで(文およびイメージ埋込みの生成の場合など)、大量のデータをより迅速かつ効率的に処理できます。
OMLノートブックでGPUコンピュート機能を使用するには:
  • 必要なGPU対応サードパーティ製Pythonパッケージを使用してConda環境を作成します(ADMINロールが必要)。
  • GPUコンピュート機能を使用するOMLノートブックでConda環境をダウンロードしアクティブ化します(OML_DEVELOPERロールが必要)。
  • OMLノートブックで、ノートブック・エディタにある「ノートブック・タイプの更新」ドロップダウン・メニューからノートブック・タイプ「GPU」を選択します(OML_DEVELOPERロールが必要)。この設定は、それを別のタイプに変更するまでそのノートブックで保持されます。
ノートブックでGPUコンピュート機能を有効にするには、およびGPUに関する情報を表示するには:
  1. ノートブックを作成し、それをノートブック・エディタで開きます。「ノートブック・タイプの更新」アイコンをクリックし、「GPU」を選択します。「GPU」を選択すると、GPUコンピュート機能を備えたノートブックが有効になります。

    図4-4 ノートブック・タイプ「GPU」



  2. 次のコマンドを実行して、Conda環境をダウンロードしアクティブ化します。Python用とR用のConda環境の作成方法の詳細は、下にある関連リンクの項を参照してください。
    %conda
    
    download gpuenv 
    activate gpuenv

    図4-5 Conda環境をダウンロードしアクティブ化するためのコマンド



  3. このConda環境では、GPU対応のサードパーティ製PythonライブラリであるTorchをインポートします。ノートブックにPythonパラグラフを追加してPythonライブラリtorchをインポートします。ディレクティブ%pythonを入力し、次のコマンドを実行します:
    %python
    import torch
    import torch.nn as nn
    import torch.optim as optim
    import time
  4. ノートブック内の別のPythonパラグラフで、次のコマンドを実行して、GPUが使用可能でありそれを使用しているかどうかを確認します:
    %python
             device = torch.device('cuda' if torch.cuda.is_available()else 'cpu')
             print(f"Device in use is: {device}")
    このコマンドは、次の情報を返します。
    コマンドによって、次のメッセージが返されます。
  5. このステップでは、別のPythonパラグラフを作成し、次のことを実行します:
    • デバイスをCPUに、または使用可能な場合はGPUに設定します
    • 指定されたデバイスにテンソルを作成します
    • 基本的な操作にかかる時間を測定します
    • 操作と結果を出力します
    %python
    
    import torch
    import time
    import matplotlib.pyplot as plt
    
    # Set the device to CPU or GPU if available
    device = 'cuda' if torch.cuda.is_available() else 'cpu'
    print(f"Running on device: {device}")
    
    # Create tensors on the specified device
    x = torch.randn(2, 3, device=device)
    y = torch.tensor([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]], device=device)
    
    # Measure time for basic operations
    start_time = time.time()
    z = x + y  # Element-wise addition
    w = torch.mm(x, y.T)  # Matrix multiplication
    v = torch.matmul(x, y.T)  # Another way to perform matrix multiplication
    end_time = time.time()
    
    # Print the operations and results
    print(f"x:\n{x}")
    print(f"y:\n{y}")
    print(f"Element-wise addition (z = x + y):\n{z}")
    print(f"Matrix multiplication (w = x * y^T):\n{w}")
    print(f"Matrix multiplication using matmul (v = x @ y^T):\n{v}")
    print(f"Tensor operations time: {end_time - start_time:.6f} seconds\n")
    このコマンドは、次の情報を返します。

    図4-7 テンソル操作の出力