

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 的服务环境 AWS Batch
<a name="service-environments"></a>

服务环境可以 AWS Batch 与 SageMaker AI 集成。服务环境包含提交和管理 SageMaker训练作业所需 AWS Batch 的 SageMaker AI 特定配置参数，同时提供 AWS Batch队列、计划和优先级管理功能。

在服务环境中，数据科学家和机器学习工程师可以向服务作业队列提交优先级的 SageMaker 培训作业。通过这种集成，您将不再需要手动协调机器学习工作负载，防止意外超支，并提高组织机器学习工作流的资源利用率。

**Topics**
+ [服务环境在哪里 AWS Batch](what-are-service-environments.md)
+ [中的服务环境状态和生命周期 AWS Batch](service-environment-states.md)
+ [在中创建服务环境 AWS Batch](create-service-environments.md)
+ [更新中的服务环境 AWS Batch](updating-service-environments.md)
+ [删除中的服务环境 AWS Batch](deleting-service-environments.md)

# 服务环境在哪里 AWS Batch
<a name="what-are-service-environments"></a>

服务环境是一种 AWS Batch 资源，其中包含 AWS Batch 与 SageMaker AI 集成所需的配置参数。服务环境 AWS Batch 允许提交和管理 SageMaker 培训作业，同时提供 AWS Batch队列、日程安排和优先级管理功能。

服务环境可解决数据科学团队在管理机器学习工作负载时面临的常见挑战。组织经常会限制可用于训练模型的实例数量，以防止意外超支、满足预算约束、使用预留实例节省成本，或者为工作负载使用特定的实例类型。但数据科学家需要同时运行的工作负载数可能会超过所分配实例的容量，因此需要手动协调才能决定何时运行哪些工作负载。

这种协调方面的挑战会影响各类规模的组织，无论是仅有少数数据科学家的小型团队，还是大型规模化运营的企业。随着组织的发展，复杂性也随之增加，需要更多时间来管理工作负载的协调，而且经常会需要基础设施管理员的参与。这些手动操作会浪费时间并降低实例效率，进而给客户带来实际成本损失。

在服务环境中，数据科学家和机器学习工程师可以将具有优先级的 SageMaker 培训作业提交到可配置队列，从而确保工作负载在资源可用后立即自动运行，无需干预。这种集成利用 AWS Batch了广泛的排队和日程安排功能，使客户能够自定义其排队和日程安排策略以符合其组织的目标。

## 服务环境如何与其他 AWS Batch 组件配合使用
<a name="service-environment-integration"></a>

服务环境与其他 AWS Batch 组件集成以实现 SageMaker 训练作业队列：
+ **Job qu** eues-服务环境与作业队列相关联，使队列能够处理 SageMaker 训练作业的服务作业
+ **服务作业**-当您向与服务环境关联的队列提交服务作业时， AWS Batch 使用该环境的配置提交相应的 SageMaker 训练作业
+ **调度策略**-服务环境与 AWS Batch 调度策略配合使用，对 SageMaker 训练作业的执行顺序进行优先排序并对其执行顺序进行管理

这种集成使您可以利用成熟 AWS Batch的排队和调度功能，同时保持 SageMaker 训练作业的全部功能和灵活性。

## 有关服务环境的最佳实践
<a name="service-environment-best-practices"></a>

服务环境提供了大规模管理 SageMaker 培训作业的功能。遵循以下最佳实践有助您优化成本、性能和运营效率，同时避免可能影响机器学习工作流的常见配置问题。

在规划服务环境容量时，请考虑适用于 SageMaker 训练作业队列的特定配额和限制。每个服务环境都有以实例数表示的最大容量限制，它直接控制可以同时运行多少 SageMaker 训练作业。了解这些限制有助于防止资源争用，并确保作业执行时间的可预测性。

最佳的服务环境性能取决于对 SageMaker 训练作业调度的独特特征的理解。与传统的容器化作业不同，服务作业会通过`SCHEDULED`状态过渡，而 SageMaker AI 会获取和配置必要的训练实例。这意味着作业启动时间可能会因实例可用性和区域容量而有显著差异。

**重要**  
服务环境具有特定的配额，这可能会影响您扩展 SageMaker 培训工作负载的能力。每个账户最多可以创建 50 个服务环境，并且每个作业队列仅支持一个关联的服务环境。此外，单个作业的服务请求有效载荷限制为 10 KiB，`SubmitServiceJob` API 限制为每个账户每秒 5 个事务处理。在容量计划期间了解这些限制有助于防止意外的扩缩约束。

要有效监控服务环境，需要同时 AWS Batch 关注 SageMaker 人工智能服务指标。通过[作业状态变换](service-job-status.md)可以深入了解系统性能，尤其是处于 `SCHEDULED` 状态的时间，因为这可以指示容量可用性模式，因此十分宝贵。与计算环境类似，服务环境维护自己的生命周期状态，即会经过 `CREATING`、`VALID`、`INVALID` 和 `DELETING` 状态变换，并且应对这些状态进行监控以确定运行状况。具有成熟监控实践的组织通常会跟踪队列深度、作业完成率和实例利用率模式，以不断优化其服务环境配置。

# 中的服务环境状态和生命周期 AWS Batch
<a name="service-environment-states"></a>

服务环境维护生命周期状态，这些状态表明其当前的运行状态和处理 SageMaker 培训作业的准备情况。了解这些状态有助于您监控服务环境的运行状况，排查配置问题，并确保可靠的作业处理。状态管理系统遵循计算环境中的既定模式，同时满足 SageMaker 培训作业集成的独特要求。

服务环境状态由 AWS Batch 基于配置验证、资源可用性和运行状况检查自动管理。与管理物理基础设施的计算环境不同，服务环境侧重于配置验证和与 SageMaker AI 服务的集成就绪。通过状态转换，您可以了解您的服务环境能否成功提交和管理 SageMaker 培训作业。

# 服务环境状态定义
<a name="service-environment-state-definitions"></a>

服务环境可以处于四种可能的状态之一，这些状态表明其当前的运行状态和处理 SageMaker 培训作业的准备情况。每种状态都代表服务环境生命周期中的一个特定阶段，包括初始创建、运行就绪、最终删除等。下表描述了每种状态及其含义：


| 州 | 说明 | 
| --- | --- | 
| CREATING |  创建服务环境时的初始状态。在此状态下， AWS Batch 验证配置参数并建立与 SageMaker AI 服务的集成。服务环境无法处理作业，与之关联的任何作业队列都不会接受服务作业提交。对于正确配置的服务环境，创建过程通常会在几秒钟内完成。  | 
| VALID |  表示服务环境已通过所有配置验证检查并准备好处理 SageMaker 训练作业的操作状态。此状态表示服务环境配置正确，所有必需的权限都已到位，并且 AWS Batch 可以代表您成功向 SageMaker AI 提交作业。服务环境的大部分运行生命周期都处于这一状态。  | 
| INVALID |  一种状态，表示服务环境遇到了无法处理 SageMaker 训练作业的配置或权限问题。如果服务环境处于无效状态，则与该服务环境关联的作业队列在相关问题得到解决之前将无法处理新的服务作业提交。  | 
| DELETING |  请求删除服务环境时出现的状态。在此状态下， AWS Batch 确保没有活动的 T SageMaker raining 作业与环境相关联，并执行必要的清理操作。处于这种状态的服务环境无法处理新的作业提交，并且在所有关联的资源都已正确清理后，将立即完成删除过程。  | 

## 服务环境状态变换
<a name="service-environment-state-transitions"></a>

服务环境状态变换会根据配置更改、验证结果和运行状况监控自动进行。该 AWS Batch 服务持续监控服务环境的运行状况并相应地更新状态。了解这些变换有助于您预测配置更改何时生效，以及如何解决导致无效状态的问题。

成功完成创建和验证后，服务环境的状态将从 `CREATING` 变为 `VALID`。此过渡确认所有配置参数均正确，所需的 IAM 权限配置正确，服务环境可以成功与 SageMaker AI 服务集成。一旦进入 `VALID` 状态，关联的作业队列就可以开始处理服务作业提交。

当配置验证失败或依赖项不可用时，服务环境的状态会从 `VALID` 变为 `INVALID`。出现这种情况的可能原因包括 IAM 角色修改、违反配额的容量限制更改或影响服务环境运行能力的外部资源修改等。状态原因字段会提供有关导致无效状态的具体原因详情。

相关问题得到解决后，服务环境的状态可以从 `INVALID` 恢复到 `VALID`。这可能涉及更新 IAM 权限、更正容量配置或恢复对所需 AWS 资源的访问权限。通常，一旦 AWS Batch 检测到配置问题已得到解决，就会自动进行变换。

# 在中创建服务环境 AWS Batch
<a name="create-service-environments"></a>

您需要先创建一个服务环境 AWS Batch，然后才能在中运行 SageMaker 训练作业。您可以创建包含与 SageMaker AI 服务集成所需的配置参数 AWS Batch 的服务环境，并代表您提交 SageMaker 训练作业。

## 先决条件
<a name="create-service-environments-prerequisites"></a>

在创建服务环境之前，请确保您已满足下列前提条件：
+ **IAM 权限**：创建和管理服务环境的权限。有关更多信息，请参阅 [AWS Batch IAM 策略、角色和权限](IAM_policies.md)。

------
#### [ Create a service environment (AWS Console) ]

使用 AWS Batch 控制台通过 Web 界面创建服务环境。

**创建服务环境**

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 在导航窗格中，选择**环境**。

1. 选择**创建环境**，然后选择**服务环境**。

1. 对于**服务环境配置**，请选择 SageMaker AI。

1. 对于**名称**，为您的服务环境输入一个唯一的名称。有效字符为 a-z、A-Z、0-9、连字符（-）和下划线（\$1）。

1. 对于**最大实例数**，请输入并发训练实例的最大数量

1. （可选）要添加标签，请选择**添加标签**并输入键值对。

1. 选择**下一步**。

1. 检查新服务环境的详细信息，然后选择**创建服务环境**。

------
#### [ Create a service environment (AWS CLI) ]

使用`create-service-environment`命令 AWS 通过 CLI 创建服务环境。

**创建服务环境**

1. 创建具有基本必需参数的服务环境：

   ```
   aws batch create-service-environment \
       --service-environment-name my-sagemaker-service-env \
       --service-environment-type SAGEMAKER_TRAINING \
       --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=10
   ```

1. （可选）创建带标签的服务环境：

   ```
   aws batch create-service-environment \
       --service-environment-name my-sagemaker-service-env \
       --service-environment-type SAGEMAKER_TRAINING \
       --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=10 \
       --tags team=data-science,project=ml-training
   ```

1. 验证服务环境是否已成功创建：

   ```
   aws batch describe-service-environments \
       --service-environment my-sagemaker-service-env
   ```

服务环境在“环境”列表中显示为 `CREATING` 状态。成功完成创建后，服务环境的状态将变为 `VALID` 并准备就绪，可以向其添加服务作业队列，从而可以开始处理作业。

------

# 更新中的服务环境 AWS Batch
<a name="updating-service-environments"></a>

您可以更新服务环境以修改其容量限制、更改其运行状态或更新资源标签。服务环境更新允许您在 SageMaker 培训工作负载要求变化时调整容量，或者修改操作设置，而无需重新创建环境。在更新服务环境之前，应了解可以修改哪些参数以及更改将对正在运行的作业产生的影响。

您可以更改服务环境的容量限制、状态或标签。

------
#### [ Update a service environment (AWS Console) ]

使用 AWS Batch 控制台通过 Web 界面更新服务环境。

**更新服务环境**

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 在导航窗格中，选择**环境**。

1. 选择**服务环境**选项卡。

1. 选择要更新的服务环境。

1. 选择**操作**，然后选择以下任意一个选项：
   + **状态**：选择**启用**或**禁用**以更改状态。
   + **容量限制**：修改**最大实例数**

1. 选择**保存更改**以应用更改。

服务环境会立即更新。检查环境详细信息，以确认是否已成功应用更改。如果您禁用了服务环境，则在您将其重新启用之前，关联的作业队列将停止处理新的服务作业提交。

------
#### [ Update a service environment (AWS CLI) ]

使用`update-service-environment`命令 AWS 通过 CLI 修改服务环境。

**更新服务环境容量限制**

1. 更新服务环境的容量限制：

   ```
   aws batch update-service-environment \
       --service-environment my-sagemaker-service-env \
       --capacity-limits capacityUnit=NUM_INSTANCES,maxCapacity=20
   ```

1. 验证是否已成功应用更新：

   ```
   aws batch describe-service-environments \
       --service-environments my-sagemaker-service-env
   ```

**更新服务环境状态**

1. 禁用服务环境以停止处理新作业：

   ```
   aws batch update-service-environment \
       --service-environment my-sagemaker-service-env \
       --state DISABLED
   ```

1. 重新启用服务环境以恢复处理：

   ```
   aws batch update-service-environment \
       --service-environment my-sagemaker-service-env \
       --state ENABLED
   ```

服务环境更新将立即生效。监控服务环境状态，以确保在提交新作业之前成功完成更新。

------

# 删除中的服务环境 AWS Batch
<a name="deleting-service-environments"></a>

当您的 SageMaker 训练作业不再需要服务环境时，您可以将其删除。删除服务环境会移除配置并阻止进一步的作业提交。在删除服务环境之前，请确保没有活动的 SageMaker 训练作业依赖于该服务环境，并且没有作业队列与该服务环境相关联。

**重要**  
服务环境的删除是不可逆的。删除完成后，您将无法恢复服务环境或其配置。如果您将来需要类似的功能，则必须使用所需设置创建一个新的服务环境。如果您稍后可能需要重新激活该服务环境，可考虑将其禁用而不是删除。

**注意**  
删除账户中的所有服务环境不会自动移除为 AWS Batch 和 SageMaker AI 集成创建的服务相关角色。该服务相关角色仍然可用于在未来创建服务环境。如果要移除该服务相关角色，则必须在确保您的账户中不存在任何服务环境后，单独使用 IAM 将其删除。

## 删除的先决条件
<a name="service-environment-deletion-prerequisites"></a>

要删除某个服务环境，您必须首先将所有服务作业队列取消关联，然后禁用该服务环境。

**在删除服务环境之前：**
+ **检查活动作业**-确保服务环境中当前没有正在运行的 SageMaker 训练作业。
+ **检查作业队列**：识别与该服务环境关联的作业队列，然后将作业队列关联到其他服务环境，或禁用并删除作业队列。

**作业队列管理**：与已删除的服务环境关联的作业队列可能会仍然存在，但无法处理服务作业。在删除原始服务环境之前，应首先删除未使用的作业队列或将其关联到其他服务环境。

------
#### [ Delete a service environment (AWS Console) ]

使用 AWS Batch 控制台通过 Web 界面删除服务环境。

**删除服务环境**

1. 打开 AWS Batch 控制台，网址为[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/)。

1. 在导航窗格中，选择**环境**。

1. 选择**服务环境**选项卡，然后选择一个服务环境。

1. 如果服务环境已启用，请选择**操作**，然后选择**禁用**。

1. 禁用服务环境后，选择**操作**，然后选择**删除**。

1. 在确认对话框中，选择**确认**。

删除期间，服务环境会显示 `DELETING` 状态。删除完成后，服务环境将从“环境”列表中消失。

------
#### [ Delete a service environment (AWS CLI) ]

使用`delete-service-environment`命令 AWS 通过 CLI 删除服务环境。

**删除服务环境**

1. 检查与该服务环境相关的作业队列：

   ```
   aws batch describe-job-queues
   ```

   如果该服务环境关联了任何作业队列，则可以从该服务环境中[将作业队列取消关联](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateJobQueue.html)并将其关联到其他服务环境，也可以删除该作业队列。

1. 禁用服务环境：

   ```
   aws batch update-service-environment \
       --service-environment my-sagemaker-service-env \
       --state DISABLED
   ```

1. 删除服务环境：

   ```
   aws batch delete-service-environment \
       --service-environment my-sagemaker-service-env
   ```

1. 监控删除过程：

   ```
   aws batch describe-service-environments \
       --service-environment my-sagemaker-service-env
   ```

在删除过程中，服务环境的状态将变为 `DELETING`。删除完成后，服务环境将不再在 describe 操作中列出。关联的作业队列会继续存在，但在关联到其他服务环境之前无法处理服务作业。

------