"WolframBatch" (批处理计算服务商)
详细信息
Wolfram Compute Services 需要一个 Wolfram 账户、互联网连接以及服务积分.
环境属性
"WolframBatch" 服务商是 $DefaultRemoteBatchSubmissionEnvironment 的默认值,允许使用如 RemoteBatchSubmit 这样的函数,无需显式指定环境.
作业设置
| "RemoteMachineClass" | "Basic1x8" | 使用的计算资源的类型 | |
| "RemoteGeoZone" | Automatic | 运行作业的地理区域 |
| "Basic1x8" | 基础机型,配备 1 个 CPU 核和 8 GB 内存 | |
| "Basic2x8" | 2 个 CPU 核和 8 GB 内存 | |
| "Basic4x16" | 4 个 CPU 核和 16 GB 内存 | |
| "Memory8x64" | 内存优化机型,配备 8 个 CPU 核和 64 GB 内存 | |
| "Memory16x128" | 16 个 CPU 核和 128 GB 内存 | |
| "Memory192x1536" | 192 个 CPU 核和 1536 GB 内存 | |
| "Compute64x128" | 计算优化机型,配备 64 个 CPU 核和 128 GB 内存 | |
| "Compute192x384" | 192 个 CPU 核和 384 GB 内存 | |
| "GPU1xL40S" | 1 个 NVIDIA L40S GPU,44 GiB 的 GPU 内存 | |
| "GPU4xL4" | 4 个 NVIDIA L4 GPU,总共 89 GiB 的内存 |
"WolframBatch" provider, RemoteMachineClass class 等价于 RemoteProviderSettings <|"RemoteMachineClass" class|>.
| "UnitedStates" | 在美国运行的作业 | |
| "EuropeanUnion" | 在欧盟运行的作业 |
CreditConstraint 指定了该作业可使用的服务积分的最大数量. 采用默认设置 Automatic时,只要您的账户中有足够的服务积分,作业就会运行至完成. 请访问 https://account.wolfram.com/products/service-credits 查看您的积分使用情况并管理您的积分.
超出 CreditConstraint 限制的作业将被终止,且不会提供任何输出数据.
作业通知
RemoteJobNotifications 指定要生成哪些通知事件以及针对这些事件采取何种操作.
| "Email" | 向 $WolframID 指定的地址发送电子邮件 | |
| "SMS" | 向 $MobilePhone 发送短信 |
| "JobStarting" | 作业不再排队,正在准备启动 | |
| "JobStarted" | 作业已开始运行 | |
| "JobCompleted" | 作业已成功完成或终止 | |
| "JobSucceeded" | 作业成功产生了结果 | |
| "JobTerminated" | 作业异常终止 | |
| "JobStatusChanged" | 为所有作业状态变更事件发出通知 |
| "Hourly" | 作业运行时大约每小时一次 | |
| "Daily" | 作业运行时大约每天一次 | |
| {"HoursElapsed",n} | 自作业创建后大约每 n 小时一次 |
| {"JobCreditsUsed",n} | 每当大约消耗了 n 个积分时 |
作业的属性
| "CreditsSpent" | 作业花费的服务积分的数量 | |
| "JobExitCode" | 作业容器中的内核返回的退出代码 | |
| "JobLogData" | 制台日志和时间戳数据列表 | |
| "JobLogString" | 来自作业容器的控制台日志 | |
| "JobLogTabular" | 控制台日志和时间戳数据,以 Tabular 格式给出 | |
| "JobStatusReason" | 字符串,描述作业处于当前状态的原因 | |
| "OutputPreviewImage" | 作业计算结果的图片预览 |
| "CreditsSpent" | 作业花费的服务积分的数量 | |
| "JobStatusReason" | 描述作业处于当前状态的原因的字符串 | |
| "OutputPreviewImage" | 第一个子作业计算结果的图片预览 |
| "JobLogString" | 作业容器的控制台日志 |
范例
打开所有单元 关闭所有单元基本范例 (1)
The default remote batch environment is "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"]]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"]神经网络运算默认使用 CPU,即使作业的机器类别配备了可用的 GPU 硬件:
job1 = RemoteBatchSubmit[NetTrain[NetModel["LeNet"], "MNIST"], RemoteMachineClass -> "GPU1xL40S"]StringCases[job1["JobLog"], "Device:" ~~ Except["
"]..]//First指定 TargetDevice 选项,以便使用 GPU 进行训练或推理:
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指定 TargetDevice{"GPU",All} 以使用所有可用的 GPU 进行训练:
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"]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)