サーバレス GPU コンピュート
ベータ版
この機能は ベータ版です。
この記事では、 Databricks 上のサーバレス GPU コンピュートについて説明し、推奨される使用例、GPU コンピュート リソースの設定方法のガイダンス、および機能の制限について説明します。
サーバレス GPU コンピュートとは?
サーバレス GPU コンピュ ートは、サーバレス コンピュート オファリングの一部です。 サーバレス GPU コンピュートは、カスタムのシングルノードおよびマルチノード ディープラーニング ワークロードに特化しています。 サーバレス GPU コンピュートを使用すると、お気に入りのフレームワークを使用してカスタムモデルをトレーニングおよび微調整し、最先端の効率、パフォーマンス、品質を得ることができます。
サーバレス GPU コンピュートには、次のものが含まれます。
- ノートブック、 Unity Catalog、 MLflowにわたる統合されたエクスペリエンス: ノートブックを使用して、コードを対話形式で開発できます。
- A10s および H100s GPU アクセラレータ: A10 GPU を使用して、費用対効果の高い中小規模の機械学習と ディープラーニング タスク、クラシック ML モデルやファインチューニングの小規模な言語モデルなど。大規模なAIワークロードには、トレーニングやファインチューニングの大規模モデルや高度なディープラーニングタスクの実行など、大規模なワークロードにはH100 GPUをお選びください。
- マルチ GPU およびマルチノードのサポート: サーバレス GPU Python APIを使用して、複数の GPU (A10 および H100) および複数のノード (A10 のみ) を分散トレーニング ワークロードを実行することができます。 分散 トレーニングを参照してください。
サーバレス GPU コンピュートにプリインストールされているパッケージは、 Databricks Runtime MLに代わるものではありません。 共通のパッケージは存在しますが、すべての Databricks Runtime ML 依存関係とライブラリがサーバレス GPU コンピュート環境に反映されるわけではありません。
推奨される使用例
Databricks は、トレーニングのカスタマイズと GPU を必要とするあらゆるモデルのトレーニングユースケースに、サーバレス GPU コンピュートを推奨します。
例えば:
- LLM ファインチューニング
- コンピュータビジョン
- レコメンダーシステム
- 強化学習
- ディープラーニングベースの時系列予測
必要条件
us-west-2
またはus-east-1
のワークスペース。
インストールされているもの
ノートブック向けサーバレス GPU コンピュートは、アプリケーションの互換性を確保するための安定したクライアント API を提供する環境バージョンを使用します。 これにより、Databricks はサーバーを個別にアップグレードし、ワークロードのコードを変更することなく、パフォーマンスの向上、セキュリティの強化、バグ修正を実現できます。
詳細については、リリースノートを参照してください。
ベース環境 は、サーバレス GPU コンピュートには対応していません。 サーバレス GPU コンピュートを環境に設定するには、 依存関係を [環境] サイド パネルで直接指定 するか、依存関係 pip install
します。
サーバレス GPU コンピュートのセットアップ
ノートブックをサーバレス GPU コンピュートに接続して環境を設定するには:
- ノートブックのコンピュートセレクタから、 サーバレスGPU を選択します。
をクリックして、 環境サイド パネルを開きます。
- [ アクセラレータ ] フィールドから [A10 ] または [H100 ] を選択します。
- 環境 バージョン を選択します。
- [適用] をクリックし、[サーバレス GPU コンピュートをノートブック環境に適用すること を確認します ] をクリックします。
コンピュートへの接続は、60分間操作がないと自動的に終了します。
環境へのライブラリの追加
サーバレス GPU コンピュート環境にライブラリを追加でインストールすることができます。 「ノートブックに依存関係を追加する」を参照してください。
ノート ブックへの依存関係の追加 に示されているように、[ 環境] パネルを使用した依存関係の追加は、サーバレス GPU コンピュート scheduled ジョブではサポートされていません。
ジョブの作成とスケジュール
次の手順は、サーバレス GPU コンピュート ワークロードのジョブを作成およびスケジュールする方法を示しています。 詳細については、「 スケジュールされたノートブック ジョブの作成と管理」 を参照してください。
使用するノートブックを開いたら、次の操作を行います。
- 右上の [スケジュール] ボタンを選択します。
- [ スケジュールの追加 ] を選択します。
- 新しいスケジュール フォームに ジョブ名 、 スケジュール 、および コンピュート を入力します。
- [作成] を選択します。
ジョブ とパイプライン UI からジョブを作成およびスケジュールすることもできます。ステップバイステップのガイダンスについては、「 新しいジョブの作成 」を参照してください。
分散トレーニング
マルチGPU分散トレーニングは、H100とA10の両方でサポートされています。マルチノード分散トレーニングは、A10 GPU でのみサポートされます。
単一ノード内または複数の GPU にわたって分散トレーニングを開始できます。 複数のノード - GPU Python APIを使用します。 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)、 DeepSpeedなどの一般的な並列トレーニングライブラリをサポートしています。 レイ。
まずはスターターノートブックをインポートしてAPIを実際に操作し、その後ノートブックのサンプルを調べます。 さまざまなライブラリを使用して、実際の分散トレーニング シナリオでどのように使用されるかを確認します。
詳細については、サーバレス GPU Python API のドキュメントを参照してください。
制限
-
サーバレス GPU コンピュートは、A10 および H100 アクセラレータのみをサポートします。
-
H100 アクセラレータは、単一ノードのワークフローとジョブのみをサポートします。H100 上のマルチノード ワークフローはまだサポートされていません。
-
PrivateLink はサポートされていません。PrivateLink の背後にあるストレージまたは pip リポジトリはサポートされていません。
-
サーバレス GPU コンピュートは、 コンプライアンス セキュリティ プロファイル ワークスペース (HIPPA や PCT など) ではサポートされていません 。 現時点では、規制対象データの処理はサポートされていません。
-
サーバレス GPU コンピュートは、対話型環境でのみサポートされています。
-
サーバレス GPU コンピュートのスケジュールされたジョブ:
- 1 つのタスクに対してのみサポートされます。
- ノートブックに関連付けられている互換性のないパッケージ バージョンの自動回復動作はサポートされていません。
ベスト プラクティス チェックリスト
サーバレス GPU コンピュートを使用してノートブックを実行する前に、以下を確認してください。
-
環境: ライブラリとパッケージが、選択したサーバレス環境バージョンと互換性があることを確認してください。
-
チェックポイントの保管: チェックポイントをDBFSに保存しているか、または指定しないままにして、 デフォルト DBFSにMLflow 。
-
ファイルサイズに500MBの制限がある
/Workspace
の使用は避けてください。 -
チェックポイントをより早く検証します。たとえば、1 エポックではなく 50 ステップ後です。
-
MLFlow ロギング: logger ステップ パラメーターを十分な数に設定して、すべての バッチ (デフォルト) がログに記録され、 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 コンピュートを使用する方法を示しています。 タスク。
タスク | 説明 |
---|---|
ファインチューニングの例 大規模言語モデル 低ランク適応 (LoRA) や教師ありファインチューニング アプローチなどのパラメーター効率の高い方法が含まれます。 | |
オブジェクト検出や画像分類などのコンピューター ビジョン タスクの例。 | |
2 タワー モデルなどの最新のディープラーニング アプローチを使用してレコメンデーション システムを構築する例。 | |
XGBoost モデルのトレーニングや時系列予測などの従来の機械学習タスクの例。 | |
分散ファインチューニングを含む、サーバレス GPU APIを使用した複数の GPU およびノードにわたるトレーニングのスケーリングの例。 |
以下は、さまざまな分散トレーニング ライブラリの使用方法を示すノートブックの例です。 マルチGPUトレーニングのためのサーバレスGPUコンピュート。
ライブラリ | 説明 |
---|---|
分散データ並列処理を使用したモデルのトレーニングの例。 | |
完全にシャーディングされたデータ並列処理を使用したモデルのトレーニングの例。 | |
DeepSpeed ライブラリの最適化を使用してモデルをトレーニングする例。 | |
Ray ライブラリを使用してモデルをトレーニングする例。 |