次の方法で共有


サーバーレス GPU コンピューティング

Von Bedeutung

この機能は ベータ版です

この記事では、Databricks のサーバーレス GPU コンピューティングについて説明し、推奨されるユース ケース、GPU コンピューティング リソースを設定する方法のガイダンス、および機能の制限について説明します。

サーバーレス GPU コンピューティングとは

サーバーレス GPU コンピューティングは、 サーバーレス コンピューティング オファリングの一部です。 サーバーレス GPU コンピューティングは、カスタムの単一ノードとマルチノードの ディープ ラーニング ワークロードに特化しています。 サーバーレス GPU コンピューティングを使用して、お気に入りのフレームワークを使用してカスタム モデルをトレーニングおよび微調整し、最先端の効率、パフォーマンス、品質を得ることができます。

サーバーレス GPU コンピューティングには、次のものが含まれます。

  • ノートブック、Unity カタログ、および MLflow 全体の統合されたエクスペリエンス: ノートブックを使用して対話形式でコードを開発できます。
  • A10 GPU アクセラレータ:A10 GPU は 、従来の ML モデルや小さな言語モデルの微調整など、小規模から中規模の機械学習とディープ ラーニングのワークロードを高速化するように設計されています。 A10 は、中程度の計算要件を持つタスクに適しています。
  • マルチ GPU とマルチノードのサポート: サーバーレス GPU Python API を使用して、分散トレーニング ワークロードを複数の GPU と複数のノードで実行できます。 分散トレーニングを参照してください。

サーバーレス GPU コンピューティングにプレインストールされたパッケージは、Databricks Runtime ML の代わりではありません。 一般的なパッケージがありますが、すべての Databricks ランタイム ML の依存関係とライブラリがサーバーレス GPU コンピューティング環境に反映されるわけではありません。

サーバーレス GPU コンピューティング上の Python 環境

Databricks には、異なるユース ケースに対応する 2 つのマネージド環境が用意されています。

カスタム ベース環境 は、サーバーレス GPU コンピューティングではサポートされていません。 代わりに、既定の環境または AI 環境を使用し、環境サイドパネル内で追加の依存関係を直接指定するかpip install 設定します。

既定の基本環境

これにより、アプリケーションの互換性を確保するために、安定したクライアント API を備えた最小限の環境が提供されます。 必要な Python パッケージのみがインストールされます。 これにより、Databricks はサーバーを個別にアップグレードでき、ワークロードにコードを変更することなく、パフォーマンスの向上、セキュリティの強化、バグ修正を実現できます。 トレーニングの環境を完全にカスタマイズする場合は、この環境を選択します。

詳細については、リリース ノートを参照してください。

AI 環境

Databricks AI 環境は、サーバーレス GPU 環境 4 で使用できます。 AI 環境は、GPU 上の機械学習に固有の共通ランタイム パッケージとパッケージを使用して、既定の環境の上に構築されます。 これには、PyTorch、langchain、transformers、ray、モデルのトレーニングと推論用の XGBoost など、一般的な機械学習ライブラリが含まれています。 トレーニング ワークロードを実行する場合は、この環境を選択します。

詳細については、リリース ノートを参照してください。

Databricks では、トレーニングのカスタマイズと GPU を必要とするモデル トレーニングユース ケースに対して、サーバーレス GPU コンピューティングをお勧めします。

例えば次が挙げられます。

  • LLM の微調整
  • Computer Vision
  • レコメンダー システム
  • 強化学習
  • ディープ ラーニングベースの時系列予測

要求事項

  • 次のいずれかの Azure でサポートされているリージョン内のワークスペース。
    • eastus
    • eastus2
    • centralus
    • northcentralus
    • westcentralus
    • westus

サーバーレス GPU コンピューティングを設定する

ノートブックをサーバーレス GPU コンピューティングに接続し、環境を構成するには:

  1. ノートブックで、上部にある [接続 ] ドロップダウン メニューをクリックし、[ サーバーレス GPU] を選択します。
  2. [ 環境] アイコン をクリックして、[ 環境 ] サイド パネルを開きます。
  3. [アクセラレータ] フィールドから A10 を選択します。
  4. [基本環境] フィールドから、既定の環境には [なし] を選択し、AI 環境には [AIv4] を選択します。
  5. [基本環境] フィールドから [なし] を選択した場合は、[環境のバージョン] を選択します。
  6. [ 適用 ] をクリックし、サーバーレス GPU コンピューティングをノートブック環境に適用することを 確認 します。

コンピューティングへの接続は、非アクティブ状態が 60 分続くと自動的に終了します。

環境にライブラリを追加する

サーバーレス GPU コンピューティング環境に追加のライブラリをインストールできます。 「 ノートブックへの依存関係の追加」を参照してください。

「ノートブックへの依存関係の追加」に示されているように、[環境] パネルを使用した依存関係の追加は、サーバーレス GPU コンピューティングのスケジュールされたジョブではサポートされていません。

ジョブの作成とスケジュール設定

次の手順では、サーバーレス GPU コンピューティング ワークロードのジョブを作成してスケジュールする方法を示します。 詳細については、 スケジュールされたノートブック ジョブの作成と管理 に関するページを参照してください。

使用するノートブックを開いた後:

  1. 右上にある [スケジュール ] ボタンを選択します。
  2. [ スケジュールの追加] を選択します
  3. [ 新しいスケジュール ] フォームに ジョブ名スケジュールコンピューティングを設定します
  4. を選択してを作成します。

ジョブとパイプライン UI からジョブを作成 および スケジュールすることもできます。 詳細なガイダンスについては、「 新しいジョブを作成 する」を参照してください。

分散トレーニング

サーバーレス GPU Python API を使用して、1 つのノード内または複数のノード間で、複数の GPU 間で分散トレーニングを開始できます。 この API には、GPU プロビジョニング、環境のセットアップ、ワークロードの分散の詳細を抽象化する、シンプルで統一されたインターフェイスが用意されています。 コードの変更を最小限に抑えながら、単一 GPU トレーニングから、同じノートブックからリモート GPU 間で分散実行にシームレスに移行できます。

@distributedデコレーターは、torchrunを使用してマルチノード トレーニングを起動するのとよく似ていますが、純粋な Python では動作します。 たとえば、次のスニペットは、 hello_world 関数を 8 つのリモート A10 GPU に分散します。

# Import the distributed decorator
from serverless_gpu import distributed

# Decorate the function with @distributed and specify the number of GPUs, the GPU type, and whether
# or not the GPUs are remote
@distributed(gpus=8, gpu_type='A10', remote=True)
def hello_world(name: str) -> None:
  print('hello', name)

# Trigger the distributed execution of the hello_world function
hello_world.distributed('world')

実行すると、すべてのワーカーからのログと出力が収集され、ワークスペースの [実験 ] セクションに表示されます。

この API は、 分散データ並列 (DDP)、 フル シャード データ並列 (FSDP)、 DeepSpeedRay などの一般的な並列トレーニング ライブラリをサポートしています。

まず 、スターター ノートブック をインポートして API を実際に使い始め、 次にノートブックの例 を調べて、さまざまなライブラリを使用した実際の分散トレーニング シナリオでどのように使用されているかを確認します。

詳細については、 サーバーレス GPU Python API のドキュメントを参照してください。

制限事項

  • サーバーレス GPU コンピューティングでは、A10 アクセラレータのみがサポートされます。
  • Private Link はサポートされていません。 Private Link の背後にあるストレージリポジトリまたは pip リポジトリはサポートされていません。
  • コンプライアンス セキュリティ プロファイル ワークスペース (HIPAA や PCI など) では、サーバーレス GPU コンピューティングはサポートされていません。 現時点では、規制対象データの処理はサポートされていません。
  • サーバーレス GPU コンピューティングでスケジュールされたジョブの場合、ノートブックに関連付けられている互換性のないパッケージ バージョンの自動回復動作はサポートされていません。
  • ワークロードの最大実行時間は 7 日間です。 この制限を超えるモデル トレーニング ジョブの場合は、チェックポイント処理を実装し、最大ランタイムに達したらジョブを再起動してください。

サーバーレス GPU コンピューティングに関する問題のトラブルシューティング

サーバーレス GPU コンピューティングでワークロードの実行に問題が発生した場合は、一般的な問題、回避策、サポート リソースの トラブルシューティング ガイドを 参照してください。

ベスト プラクティスチェックリスト

サーバーレス GPU コンピューティングを使用してノートブックを実行する前に、次のことを確認します。

  • [ ] 環境: ライブラリとパッケージが、選択したサーバーレス環境バージョンと互換性があることを確認します。

  • [ ] チェックポイント ストレージ: チェックポイントを DBFS に保存するか、未指定のままにして MLflow を DBFS に既定にするかどうかを確認します。

    • [ ] ファイル サイズの上限が /Workspaceは使用しないでください。
    • [ ] チェックポイント処理を早めに検証します。 たとえば、1 エポックではなく、50 ステップ後などです。
  • [ ] MLFlow ログ: ロガー ステップ パラメーターを十分な数のバッチに設定して、すべてのバッチのログ記録 (既定) を回避し、 1M メトリック ステップの制限を超えないようにします。

  • [ ] マルチノード起動: バリア タイムアウト の問題を回避するために再試行またはタイムアウト時間を追加します。

次のコードは、これらのベスト プラクティスを実装する方法を示しています。

# Settings for a quick run to verify logging and checkpointing

# If using transformers
from transformers import TrainingArguments

training_args = TrainingArguments(
    # checkpoint to /Vol if no symlinks created
    output_dir = "/Volumes/your_catalog/your_schema/your_vol/your_model",
    logging_strategy = "steps",
    logging_steps = 10, # avoid exceeding mlflow 1M metric step limit
    # save checkpoints earlier after 100 steps to verify checkpointing
    save_strategy = "steps",
    save_steps = 100,
    # terminate job earlier after 200 steps as a trial run to verify logging and checkpointing
    max_steps = 200,
    ...
)

ノートブックの例

さまざまなタスクにサーバーレス GPU コンピューティングを使用する方法を示すさまざまなノートブックの例を次に示します。

Task Description
大規模言語モデル (LLM) Low-Rank 適応 (LoRA) や教師あり微調整アプローチなどのパラメーター効率の高い方法を含む、大規模な言語モデルの微調整の例。
コンピューター ビジョン 物体検出や画像分類などのコンピューター ビジョン タスクの例。
ディープ ラーニング ベースのレコメンダー システム 2 タワー モデルなどの最新のディープ ラーニング アプローチを使用してレコメンデーション システムを構築する例。
クラシック ML XGBoost モデルのトレーニングや時系列予測など、従来の機械学習タスクの例。
マルチ GPU とマルチノード分散トレーニング 分散微調整など、サーバーレス GPU API を使用して複数の GPU とノード間でトレーニングをスケーリングする例。

以下は、サーバーレスGPUコンピューティングを用いて、マルチGPUトレーニングでさまざまな分散トレーニングライブラリを使用する方法を示すノートブックの例です。

図書館 Description
分散データ並列 (DDP) 分散データ並列処理を使用してモデルをトレーニングする例。
完全シャードデータ並列化 (FSDP) 完全にシャード化されたデータ並列処理を使用してモデルをトレーニングする例。
DeepSpeed DeepSpeed ライブラリの最適化を使用してモデルをトレーニングする例。
Ray Ray ライブラリを使用してモデルをトレーニングする例。