データレイクコンピューティング DLC は GPU リソースの購入をサポートし、機械学習リソースグループに GPU リソースをマウントして、推論トレーニングジョブに使用できます。
このドキュメントでは、提供されているデモコード例を通じて、GPUリソースを使用したモデルトレーニングを体験できます。
説明:
リソースグループ:Spark標準エンジンの計算リソースの二次キュー分割で、リソースグループは親標準エンジンに属し、同じエンジン内のリソースグループは互いにリソースを共有します。
DLC Spark標準エンジンの計算ユニット(CU)とGPU(カード数)は、必要に応じて複数の機械学習リソースグループに分割でき、各リソースグループが使用できる計算ユニット(CU)とGPU(カード数)の最小値と上限を設定することで、マルチテナントやマルチタスクなどの複雑なシナリオにおける計算リソースの分離とワークロードの効率的な管理を実現します。
現在、DLCでのGPUリソース購入、機械学習リソースグループ、WeData Notebook探索、機械学習はすべてallowlist制御機能です。利用する場合は、チケットを提出してDLCおよびWeDataチームに連絡し、GPUリソース購入、機械学習リソースグループ、Notebook、MLflowサービスの開通を申請してください。 アカウントと製品の有効化
アカウントと製品の有効化
DLCアカウントと製品の有効化機能は、すべてTencent Cloudのメインアカウントによって有効化する必要があります。メインアカウントが完了すると、デフォルトでメインアカウントのすべてのサブアカウントが利用できます。調整が必要な場合は、CAM機能を通じて調整できます。具体的な操作手順については、新規ユーザー有効化の全プロセスを参照してください。 WeDataのMLflowサービスは、メインアカウント単位で開通され、メインアカウントでの操作が完了すると、そのメインアカウント配下のすべてのサブアカウントが利用可能になります。
MLflowサービスのネットワーク接続を確立するために、顧客の地域情報、APPID、メインアカウントUIN、VPC ID、およびサブネットIDを提供する必要があります。
説明:
製品内の複数の機能でネットワーク接続操作が必要なため、ネットワークの接続性を確保するために、今後のリソースグループの購入やNotebookワークスペースの作成などの操作は、この1つのVPCとサブネット内で行うことをお勧めします。
DLCでGPU計算リソースを購入する
製品サービスの開通が完了したら、まずデータレイクコンピューティングDLCでGPU計算リソースを購入できます。
2. 「リソースを作成」を選択します。
3. オンデマンドで年額/月額の標準エンジンを購入し、計算タイプでGPUタイプを選択し、さまざまな仕様のマシンタイプとマシン数量を選択できます。モデルの詳細と価格については課金ドキュメントを参照してください。 説明:
1. アカウントの購入には財務権限またはマスターアカウントが必要です。
2. GPU計算リソースの課金モードは現在、年額/月額モードのみをサポートしています。
4. GPU計算エンジンは、データ探索やデータジョブに関連する業務シナリオをまだサポートしていません。
機械学習リソースグループを作成
標準エンジンの購入が完了したら、エンジン管理ページに戻り、該当エンジンの下で機械学習リソースグループを作成する必要があります。その後、機械学習関連の機能を利用できるようになります。 1. リソースグループ/エンジン名を管理をクリックします。
2. リソースグループページに入ったら、左上のリソースグループ作成ボタンをクリックします。
3. 機械学習リソースグループのタイプを作成
業務シナリオ選択:機械学習。
フレームワークタイプ:実際の業務シナリオに応じて、適切なフレームワークを選択して作成できます:MLオープンソースフレームワーク(単一ノード計算モードをサポート)とSpark MLlib(Sparkクラスターモードをサポート)。
注意:
1. MLオープンソースフレームワークでGPUリソースを使用する場合、組み込みイメージにはtensorflow2.20-gpu-py311-cu124またはpytorch2.6-gpu-py311-cu124を選択してください。
2. Spark MLlibフレームワークでGPUリソースを使用する場合、組み込みイメージにはspark3.5-tensorflow2.20-gpu-py311-cu124またはspark3.5-pytorch2.6-gpu-py311-cu124を選択してください。
リソース構成:必要に応じて選択できます。
注意:
1. MLオープンソースフレームワークを選択した場合、GPUリソースは1(カード)ステップ単位で割り当てられます。
2. Spark MLlibフレームワークを選択した場合、GPUリソースは1(カード)ステップ単位で割り当てられます。
設定が完了したら、確認をクリックしてリソースグループリストページに戻ります。数分後、リストページ上部の更新ボタンをクリックして確認できます。
「Wedata-Notebook」機能でデモを実践してください
リソースグループとデモデータセットの作成が完了したら、WeDataに移動してNotebookとMLflowを使用してモデルトレーニングの実践を行います。
WeDataプロジェクトを作成し、DLCエンジンを関連付けます
1. プロジェクトを作成するか、既存のプロジェクトを選択してください。詳細はプロジェクトリストをご参照ください。 2. 必要なDLCエンジンを選択して、コンピューティングエンジンの設定を行います。
実行リソースグループを購入し、プロジェクトを関連付けます
Notebookタスクを編成スペースで定期的にスケジュールする必要がある場合は、スケジュールリソースグループを購入し、指定されたプロジェクトに関連付けてください。詳細はスケジュールリソースグループの設定をご参照ください。 操作手順:
1. 「実行リソースグループ > スケジューリングリソースグループ > 標準スケジューリングリソースグループ」に移動し、作成をクリックします。
2. リソースグループ構成。
地域:スケジューリングリソースグループの所在地域は、ストレージおよびコンピューティングエンジンの所在地域と一致させる必要があります。例えば、国際サイト-シンガポール地域のDLCエンジンを購入した場合、同じ地域のスケジューリングリソースグループを購入する必要があります。
VPCとサブネット:1.1のVPCとサブネットを直接選択することを推奨します。他のVPCとサブネットを選択する場合、選択したVPCとサブネットが1.1のVPCとサブネットとネットワーク接続されていることを確認する必要があります。
仕様:タスク量に基づいて選択します。
3. 作成後、リソースグループリストの操作欄で関連プロジェクトをクリックし、このスケジューリングリソースグループを使用したいプロジェクトに関連付けます。
Notebookワークスペースを作成
1. WeData コンソールで、「プロジェクトリスト > プロジェクト > オフライン開発 > Notebook 探索」に移動し、既存のワークスペースを使用するか新規作成します。 2. ワークスペースを作成する際は、購入済みのGPUリソースエンジンを選択してください。
3. 作成が完了したら、作成したワークスペースに入り、後続の操作を行うことができます。
Notebookファイルを作成
左側のリソースエクスプローラーでフォルダとNotebookファイルを作成できます。注意:Notebookファイルは(.ipynb)で終わる必要があります。リソースエクスプローラーには、あらかじめデモNotebookファイルが組み込まれており、ユーザーはすぐに使用できます。
カーネル(kernel)を選択
1. 対応するNotebookファイルの右上にあるカーネルを選択をクリックします。
2. カーネルをクリックして選択した後、ポップアップ表示されるドロップダウンオプションから「DLCリソースグループ」を選択します。
3. DLCリソースグループをクリックした後、次のレベルでDLCデータエンジンから作成したリソースグループをオンデマンドで選択します。このドキュメントで提供されているデモを体験する際は、MLオープンソースフレームワークでイメージがTensorFlowタイプのリソースグループを選択してください。カーネル選択におけるカーネルの命名規則は:フレームワークタイプ - (機械学習リソースグループ名) となっており、選択時には作成した機械学習の命名とフレームワークタイプに基づいて区別できます。
Notebookファイルを実行
1. カーネル選択が完了したら、ページをリフレッシュし、対応するNotebookファイルですべて実行をクリックするか、対応するコードブロックを個別に実行すると、ページにカーネル構成ウィンドウがポップアップ表示されます。この時、初期化構成を編集/確認できます。
2. 実践チュートリアルの実行:TensorFlowの行列乗算操作を使用してGPUの負荷テストを行い、リアルタイムリソース監視機能を統合し、計算性能指標を出力します。
import tensorflow as tf
import time
import subprocess
import threading
import os
def setup_gpu():
gpus = tf.config.list_physical_devices("GPU")
if not gpus:
raise RuntimeError("No GPU detected")
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
print(f"GPUs detected: {len(gpus)}")
def monitor_gpu(interval=5, duration=30):
end_time = time.time() + duration
while time.time() < end_time:
try:
result = subprocess.run(['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total,temperature.gpu', '--format=csv,noheader,nounits'],
capture_output=True, text=True, check=True)
gpu_util, mem_used, mem_total, temp = result.stdout.strip().split(', ')
print(f"GPU: {gpu_util}% | Mem: {mem_used}/{mem_total}MB | Temp: {temp}C")
except Exception as e:
print(f"Monitor error: {e}")
time.sleep(interval)
def run_gpu_stress(size=4096, duration=30):
with tf.device("/GPU:0"):
a = tf.random.normal([size, size], dtype=tf.float32)
b = tf.random.normal([size, size], dtype=tf.float32)
@tf.function
def matmul_step():
return tf.matmul(a, b)
_ = matmul_step()
print(f"Running GPU stress for {duration}s at full capacity")
start = time.time()
iters = 0
while time.time() - start < duration:
_ = matmul_step()
iters += 1
print(f"Completed {iters} iterations in {time.time() - start:.2f}s")
if __name__ == "__main__":
try:
setup_gpu()
monitor_thread = threading.Thread(target=monitor_gpu, args=(5, 30))
monitor_thread.start()
run_gpu_stress(size=4096, duration=30)
monitor_thread.join()
print("Test completed successfully")
except Exception as e:
print(f"Error: {e}")