"WolframBatch" (バッチ計算プロバイダ)
"WolframBatch" (バッチ計算プロバイダ)
詳細
Wolfram Compute Servicesには, Wolframアカウント,インターネットの接続,Service Creditsのみが必要である.
環境特性
"WolframBatch"プロバイダが$DefaultRemoteBatchSubmissionEnvironmentのデフォルト値であるため,明示的に環境を指定しなくても,RemoteBatchSubmit等の関数を使うことが可能である.
ジョブ設定
| "RemoteMachineClass" | "Basic1x8" | 使用する計算リソースのタイプ | |
| "RemoteGeoZone" | Automatic | ジョブを実行する地理領域 |
| "Basic1x8" | 1個のCPUコアと8GBのメモリを使う基本のマシンクラス | |
| "Basic2x8" | 2個のCPUコアと8GBのメモリ | |
| "Basic4x16" | 4個のCPUコアと16GBのメモリ | |
| "Memory8x64" | 8個のCPUコアと64GBのメモリでメモリが最適化されたクラス | |
| "Memory16x128" | 16個のCPUコアと128GBのメモリ | |
| "Memory192x1536" | 192個のCPUコアと1536GBのメモリ | |
| "Compute64x128" | 64個のCPUコアと128GBのメモリで計算が最適化されたクラス | |
| "Compute192x384" | 192個のCPUコアと384GBのメモリ | |
| "GPU1xL40S" | 44GiBのGPUメモリが搭載された1個のNVIDIA L40S GPU | |
| "GPU4xL4" | 総GPUメモリが89GiBである4個のNVIDIA L4 GPU |
サポートされるマシンクラスのリストは変更される場合がある.最新のリストおよび対応する価格情報については,https://www.wolfram.com/compute-services を参照されたい.
"WolframBatch"プロバイダを使用する場合,RemoteMachineClass class は,RemoteProviderSettings <|"RemoteMachineClass" class|>を設定することに等しい.
| "UnitedStates" | アメリカ合衆国で実行するジョブ | |
| "EuropeanUnion" | ヨーロッパ連合で実行するジョブ |
"WolframBatch"プロバイダを使用する場合,RemoteGeoZonezone は,RemoteProviderSettings<|"RemoteGeoZone"zone|>を設定することに等しい.
CreditConstraintは,ジョブに使うサービスクレジットの最大数を指定する.デフォルト設定のAutomaticを使うと,アカウントに十分なサービスクレジットがある限り,ジョブは完了まで実行される.クレジットの使用量のチェックとクレジットの管理は,https://account.wolfram.com/products/service-credits から行える.
CreditConstraintを超えるジョブは中断され,出力データは全く使用できない.
ジョブの通知
RemoteJobNotificationsは,どの通知イベントを生成するか,そしてそれらのイベントに対してどのようなアクションを取るかを指定する.
| "Email" | 電子メールを$WolframIDで指定されたアドレスに送信する | |
| "SMS" | SMSテキストメッセージを$MobilePhoneに送信する |
| "JobStarting" | ジョブがもうキューになく,開始が準備されている | |
| "JobStarted" | ジョブの実行が開始された | |
| "JobCompleted" | ジョブが成功あるいは停止した | |
| "JobSucceeded" | ジョブが結果を出すことに成功した | |
| "JobTerminated" | ジョブが異常な形で停止された | |
| "JobStatusChanged" | ジョブステートの変更イベントすべてについて発せられる |
| "Hourly" | ジョブの実行中はほぼ毎時間 | |
| "Daily" | ジョブの実行中はほぼ毎日 | |
| {"HoursElapsed",n} | ジョブの作成以降ほぼ毎 n 時間 |
| {"JobCreditsUsed",n} | ジョブで使用されたクレジットがある指定のレベルに達したとき |
ジョブ特性
"WolframBatch"プロバイダを使っている場合には,RemoteBatchJobObjectがサポートする標準的な特性に加えて,以下の特性が"Single"タイプのジョブオブジェクトから使用可能である.
| "CreditsSpent" | ジョブが使うサービスクレジットの数 | |
| "JobExitCode" | ジョブコンテナ内のカーネルによって終了コードが返された | |
| "JobLogData" | リストとしてのコンソールログとタイムスタンプデータ | |
| "JobLogString" | ジョブコンテナからのコンソールログ | |
| "JobLogTabular" | Tabular形式でのコンソールログとタイムスタンプデータ | |
| "JobStatusReason" | ジョブが現行のステートである理由を説明する文字列 | |
| "OutputPreviewImage" | ジョブの評価結果の画像プレビュー |
| "CreditsSpent" | ジョブが使うサービスクレジットの数 | |
| "JobStatusReason" | ジョブが現在のステートにある理由を説明する文字列 | |
| "OutputPreviewImage" | 最初の子ジョブの評価結果の画像プレビュー |
"WolframBatch"プロバイダを使用する場合,RemoteBatchJobObjectによってサポートされる標準特性に加えて,"ArrayChild"型のジョブオブジェクトから以下の特性が利用できる.
| "JobLogString" | ジョブコンテナからのコンソールログ |
例題
すべて開く すべて閉じる例 (1)
デフォルトのリモートバッチ環境は,"WolframBatch"である:
$DefaultRemoteBatchSubmissionEnvironmentデフォルトの"WolframBatch"環境を使ってジョブを送信する.RemoteBatchSubmitは,ジョブステートを管理したり見たりすることができるRemoteBatchJobObjectを返す:
job = RemoteBatchSubmit[2 + 2]job["JobStatus"]ジョブが完了してから,ジョブステートについてもう一度クエリを行う:
job["JobStatus"]job["EvaluationResult"]ジョブ設定 (4)
RemoteMachineClass (3)
job = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> "GPU"], RemoteMachineClass -> "GPU1xL40S"]StringCases[job["JobLogString"], "Starting training" ~~ __]//Firstjob["EvaluationResult"]%[[image], "TopProbabilities"]job = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", All}, BatchSize -> 512], RemoteMachineClass -> "GPU4xL4"]job = RemoteBatchSubmit[Counts[NetModel["Wolfram ImageIdentify Net V1"][Flatten@Table[RandomImage[max], {max, .1, 10, .1}, 10], TargetDevice -> "GPU"]], RemoteMachineClass -> "GPU1xL40S"]job["EvaluationResult"]特性と関係 (8)
大きなメモリ容量を持つコンピュータ上でバッチジョブを実行する:
RemoteBatchSubmit[FactorInteger[2 ^ 1023 - 7], RemoteMachineClass -> "Memory8x64"]RemoteBatchSubmit[FactorInteger[2 ^ 1023 - 7], CreditConstraint -> Quantity[700, "Credits"]]RemoteBatchSubmit[FactorInteger[2 ^ 1023 - 7], TimeConstraint -> Quantity[10, "Hours"]]ジョブ状態の変更イベントに対してSMSテキスト通知を受け取る:
RemoteBatchSubmit[FactorInteger[2 ^ 1023 - 7],
RemoteJobNotifications -> {"JobStatusChanged" -> "SMS"}
]ジョブの開始時と終了時にテキスト通知を受け取り,実行されている間は2時間ごとに電子メールを受け取る:
RemoteBatchSubmit[FactorInteger[2 ^ 1023 - 7],
RemoteJobNotifications -> {{"JobStarted", "JobCompleted"} -> "SMS", {"HoursElapsed", 2} -> "Email"}
]RemoteBatchSubmit[$Version, RemoteJobNotifications -> None]job = RemoteBatchSubmit[$Version, RemoteJobNotifications -> Automatic]job["RemoteJobNotifications"]job = RemoteBatchSubmit[$Version, RemoteJobNotifications -> "JobCompleted"]job["RemoteJobNotifications"]考えられる問題 (4)
job = RemoteBatchSubmit[Array[Range[1, #]&, 38000]]job["JobStatus"]ニューラルネットワークの操作には,ジョブのマシンクラスにGPUハードウェアが使える場合でも,デフォルトでCPUが使われる:
job1 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST"], RemoteMachineClass -> "GPU1xL40S"]StringCases[job1["JobLog"], "Device:" ~~ Except["
"]..]//First訓練や推論のためにGPUを使うためには,TargetDeviceオプションを指定する:
job2 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> "GPU"], RemoteMachineClass -> "GPU1xL40S"]StringCases[job2["JobLog"], "Device:" ~~ Except["
"]..]//FirstNetTrain[…,TargetDevice"GPU"]は,ジョブに使用できるGPUの数にかかわらず,単一のGPUを使う:
job1 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> "GPU", BatchSize -> 128], RemoteMachineClass -> "GPU4xL4"]StringCases[job1["JobLog"], "Device:" ~~ Except["
"]..]//First訓練に使用可能なGPUすべてを使用するためには,TargetDevice{"GPU",All}を指定する:
job2 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", All}, BatchSize -> 128], RemoteMachineClass -> "GPU4xL4"]StringCases[job2["JobLog"], "Device:" ~~ Except["
"]..]//Firstjob3 = With[{net = job2["EvaluationResult"]}, RemoteBatchSubmit[net[Table[RandomImage[1], 50], TargetDevice -> {"GPU", All}], RemoteMachineClass -> "GPU4xL4"]]job3["EvaluationMessagesText"]バッチサイズが指定されていない場合には,複数のGPUを使う訓練は失敗する:
job1 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", All}], RemoteMachineClass -> "GPU4xL4"]{job1["EvaluationResult"], job1["EvaluationMessagesText"]}複数のGPUで訓練を行う場合には,BatchSizeオプションを指定する:
job2 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", All}, BatchSize -> 128], RemoteMachineClass -> "GPU4xL4"]job2["EvaluationResult"]関連リンク
履歴
2025 で導入 (14.3)