"AzureBatch" (批处理计算服务商)

详细信息

Azure Batch 是一种基于云的批处理计算服务,可在 Microsoft Azure 平台上跨越多个托管虚拟机节点池调度容器化作业。
要配置 "AzureBatch" 批处理计算提供程序以在 Wolfram 语言中使用,请按照设置 Azure Batch 计算提供程序工作流中的说明进行操作.
"AzureBatch" 批处理计算提供程序根据每个作业的 vCPU 计数要求将作业打包到池节点中. 多个作业可以在单个节点上同时执行,每个作业在专用容器中运行.
"AzureBatch" 批处理计算提供程序将作业的输入和输出数据以及控制台日志存储在与运行作业的 Azure Batch 帐户相关联的 Azure Blob 存储帐户中. 文件根据 Microsoft 的批处理文件规约标准在 Azure Blob 存储容器中组织.
"AzureBatch" 批处理计算提供程序仅支持基于 Linux 的作业.

环境属性

"AzureBatch" 提供程序的 RemoteBatchSubmissionEnvironment 对象支持以下属性:
  • "PoolID"(required)作业提交到的 Azure Batch 的 ID
  • "PoolID" 属性是构造有效 RemoteBatchSubmissionEnvironment 对象所必需的.
    首次计算 RemoteBatchSubmissionEnvironment["AzureBatch",] 时,将显示一个对话框以收集 Azure Batch 和 Azure Blob 存储服务的 API 凭据. 如果在对话框中选中 "Save Connection"(保存连接),则提供的凭据将被永久保存并在以后的会话中自动使用.
    要忽略保存的凭据并强制再次显示身份验证对话框,请指定环境设置 "ServiceObject""New". »
    设置 Azure Batch 计算提供程序工作流提供了有关使用自动化 Azure 资源管理器模板在 Microsoft Azure 订阅中创建所有必需环境资源的说明.

    作业设置

    使用 "AzureBatch" 提供程序时,RemoteProviderSettings 选项支持以下设置:
  • "ContainerImage"用于作业容器的图像名称/ URL
    "JobPriority"0作业的优先级,介于 -1 和 +1 之间
    "VCPUCount"1vCPU 的整数数量 »
  • Azure Batch 池执行 "jobs"(作业),每个作业包含一个或多个 "tasks"(任务). RemoteBatchSubmitRemoteBatchMapSubmit 中使用的术语对应这个结构如下:
  • RemoteBatchSubmit job ("single" job)包含单个任务的 Azure Batch 作业
    RemoteBatchMapSubmit array job包含多个任务的 Azure Batch 作业
    RemoteBatchMapSubmit array child jobAzure Batch 作业中的任务
  • Azure Batch 根据每个任务的 "slot"(槽)要求将任务打包到池节点中. 多个任务可以在单个节点上同时执行,每个任务都在专用容器中运行.
    "AzureBatch" 批处理计算提供程序将每个任务的插槽要求设置为等于 "VCPUCount" 设置,并假设池级别的每个节点的任务插槽设置配置为等于池的节点 VM 大小中的 vCPU 数量. 有关详细信息,请参阅 Microsoft 关于并行任务执行池节点大小的文档.
    "VCPUCount" 设置的值仅用于作业调度和设置作业容器内的 $ProcessorCount$DefaultKernels. 这不会影响 CPU 调度或远程内核进程可用的 CPU 资源量. »
    "JobPriority" 设置的值范围从 -1(最低优先级)到 +1(最高优先级). 在给定的池中,高优先级作业的调度优先级高于低优先级作业. 有关详细信息,请参阅 Microsoft 关于作业优先级的文档.
    "ContainerImage" 设置的值是与 Docker 兼容的图像引用字符串. 如果不运行基于 GPU 的作业,您可以通过将 "wolframresearch/wolframengine:cuda-azurebatch" 更改为 "wolframresearch/wolframengine:latest" 来减小下载到池节点的图像大小.
    由于 GPU 驱动程序不兼容,"wolframresearch/wolframengine:cuda-azurebatch" 图像可能落后于最新的 Wolfram 引擎版本. 要始终使用最新可用版本的 Wolfram 引擎和 Wolfram 语言,请选择 "wolframresearch/wolframengine:latest" 图像.

    作业状态

    以下是使用 "AzureBatch" 提供程序时 "Single""ArrayChild" 作业的 "JobStatus" 作业属性的可能值,按一般作业通过的顺序列出:
  • "Active"作业任务已排队并能够运行,但尚未安排到计算节点
    "Running"作业任务正在计算节点上运行
    "Succeeded"作业任务执行成功,输出已上传
    "Failed"作业任务执行失败
  • 处于 "Running" 状态的作业可能正在下载输入文件、评估作业代码或上传输出数据.
    以下是使用 "AzureBatch" 提供程序时 "Array" 作业的 "JobStatus" 作业属性的一般值:
  • "Active"阵列作业正在运行子作业任务或等待子作业任务的提交
    "Completed"所有子作业任务已完成或终止
  • 有关详细信息,请参阅 Microsoft 关于任务状态作业状态的文档.

    作业属性

    使用"AzureBatch" 提供程序时,除了 RemoteBatchJobObject 支持的标准属性外,"Single" 类型的作业对象还提供以下属性:
  • "JobExitCode"作业容器中内核返回的退出代码
    "JobLog"来自作业容器的标准输出控制台日志
    "JobStandardErrorLog"来自作业容器的标准错误控制台日志
    "JobStatusReason"描述作业处于当前状态的原因的字符串
    "ProviderJobID"Azure Batch 中作业的独有标识符
    "ProviderTaskID"Azure Batch 中作业任务的独有标识符
  • 使用 "AzureBatch" 提供程序时,除了 RemoteBatchJobObject 支持的标准属性外,"Array" 类型的作业对象还提供以下属性:
  • "ChildJobExitCodes"每个数组子作业的 "JobExitCode" 属性
    "ChildJobStatusReasons"每个数组子作业的 "JobStatusReason" 属性
    "JobStatusReason"描述数组作业处于其当前状态的原因的字符串
    "ProviderFirstTaskID"第一个子作业的顺序数字标识符
    "ProviderJobID"Azure Batch 中数组作业的独有标识符
  • 使用 "AzureBatch" 提供程序时,除了 RemoteBatchJobObject 支持的标准属性外,"ArrayChild" 类型的作业对象还提供以下属性:
  • "JobExitCode"子作业容器中内核返回的退出代码
    "JobLog"来自子作业容器的标准输出控制台日志
    "JobStandardErrorLog"来自子作业容器的标准错误控制台日志
    "JobStatusReason"描述子作业处于当前状态的原因的字符串
    "ProviderJobID"Azure Batch 中父阵列作业的独有标识符
    "ProviderTaskID"Azure Batch 中子作业任务的独有标识符
  • "JobExitCode" 属性的一些可能值的含义列在 Exit 的参考页面上. 1539950006
    "JobStatusReason" 属性的值基于 Azure Batch 提供的信息,并且可能不存在于给定作业中,具体取决于其当前状态.
    Azure Batch 分别存储任务进程的标准输出和标准误差流,因此有单独的 "JobLog""JobStandardErrorLog" 属性. 在大多数情况下,"JobStandardErrorLog" 属性将为空.
    "JobLog""JobStandardErrorLog" 属性的值通常从作业的计算节点中检索以获取正在运行的作业,并从 Azure Blob 存储中获取已完成的作业.
    "ProviderJobID""ProviderTaskID"/"ProviderFirstTaskID" 属性的值分别对应于 Azure Batch 中的作业和任务 ID.
    单个作业的任务 ID 通常是字符串 "10000000". 数组子作业的任务 ID 通常是从 "10000001" 开始的连续数字字符串.
    存储的作业输出数据和日志将保留在 Azure Blob 存储中,直到手动删除或由存储帐户上的生命周期管理策略自动过期.
    除了 "EvaluationResult" 属性中可用的作业表达式的返回值外,导出到作业容器工作目录中目录 ./JobOutput/ 的额外输出文件将根据 Microsoft 的批处理文件规约标准上传到作业的 Azure Blob 存储容器. 然而,这些额外的输出文件不能从 Wolfram 语言中下载.

    范例

    打开所有单元关闭所有单元

    基本范例  (2)

    在按照设置 Azure Batch 计算提供程序工作流中所述配置 "AzureBatch" 批处理计算提供程序后,创建一个 "AzureBatch" RemoteBatchSubmissionEnvironment 对象:

    查询作业状态:

    完成后再次查询作业的状态:

    下载作业的输出:

    向 Azure Batch 提交一个数组作业,该作业使用 GPU 计算通过预训练的神经网络执行:

    下载阵列作业输出:

    作业设置  (1)

    "VCPUCount"  (1)

    指示 Azure Batch 将提交的作业安排到至少有四个可用 vCPU 的节点:

    作业属性  (2)

    "Single" 作业  (1)

    使用 RemoteBatchSubmit 将批处理作业提交到 Azure Batch:

    查询作业的状态和退出代码:

    从作业容器获取控制台输出:

    "Array" 和 "ArrayChild" 作业  (1)

    使用 RemoteBatchMapSubmit 将数组作业提交到 Azure Batch:

    查询每个子作业的状态:

    获取代表第一个子作业的 RemoteBatchJobObject 表达式:

    查询子作业的状态和退出代码:

    从子作业容器获取控制台输出:

    属性和关系  (1)

    如果作业被 RemoteBatchJobAbort 终止,则 "JobStatusReason" 属性的值将表明终止请求源自 Wolfram 语言:

    可能存在的问题  (1)

    如果之前在 Azure Batch 身份验证对话框中选中了 "Save Connection"(保存连接),则提供的凭据将永久保存并在以后的会话中自动使用. 指定环境属性 "ServiceObject""New" 以忽略保存的凭据并强制再次显示身份验证对话框: