AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何防止或解决 Amazon SageMaker 端点中的内存不足问题?
我想防止或解决 Amazon SageMaker 端点中的内存不足问题。
解决方法
要防止或解决 SageMaker 端点中的内存不足问题,请完成以下步骤:
对于基于 CPU 的模型
如果您部署的模型在 CPU 上运行且存在端点内存问题,请使用以下最佳实践:
如果您使用 SageMaker 内置算法容器,请使用 model_server_workers 参数来限制工作线程的数量。有关详细信息,请参阅 SageMaker 网站上的 model_server_workers。起始值为 1,然后逐渐增加该值以确定您的端点可拥有的最大工作线程数。
**注意:**当增加 model_server_workers 值时,创建的模型副本的数量也会增加。因此,内存需求也会增加。
要监控 SageMaker 上的内存使用情况,请使用 Amazon CloudWatch。
如果您的端点实例类型只能容纳单个模型副本,请将该实例类型增加到具有更多内存的类型。有关详细信息,请参阅 Amazon SageMaker 定价。
要在本地运行调用时测试端点并监控内存使用情况,请使用 SageMaker 本地模式。有关详细信息,请参阅 SageMaker 网站上的本地模式。确保使用相同的实例类型进行本地测试,以获得一致的结果。
如果您无法增加端点的单个实例的内存,请使用自动扩缩。自动扩缩允许您根据工作负载需求自动调整实例数量,以实现最佳的性能和资源利用率。有关详细信息,请参阅 Optimize your machine learning deployments with auto scaling on Amazon SageMaker。
要确定端点所需的实例类型和配置,请使用 Inference Recommender。
对于基于 GPU 的模型
如果您部署的模型在 GPU 上运行且存在端点内存问题,请使用以下最佳实践:
要计算加载模型权重所需的 GPU 内存,请使用以下公式。
运行 Llama 2 13B 的示例:
Model Size Calculation: Parameters (13B) × 4 bytes (FP32) = 52 GB Total Memory Required = Initial weights(52 GB) + Attention cache and Token Generation memory(4-10 GB)** + Additional overhead(2-3 GB) ** depends on sequence length, batch strategy, model architecture) Memory Precision Comparisons: • FP32 (Full Precision): Base reference ( 4 bytes for 1 parameter) • FP16 (Half Precision): 1/2 of FP32 • BF16 (Brain Float 16): 1/2 of FP32 • INT8 (8-bit Integer): 1/4 of FP32
如果您的模型需要的内存大于 GPU 的内存,请使用量化、张量并行化和连续批处理来优化性能。有关详细信息,请参阅使用 Amazon SageMaker 部署 LLM 和选择端点部署配置。如果您部署在 Hugging Face 上可用的 LLM,请使用模型内存估算器来确定估计的模型内存需求。有关详细信息,请参阅 Hugging Face 网站上的模型内存估算器。
要确定模型的最佳批量大小和可用的 GPU 内存,请参阅 Improve throughput performance of Llama 2 models using Amazon SageMaker。
如果您的模型需要处理长距离依赖关系,请调整序列长度。有关详细信息,请参阅使用新的 Amazon SageMaker 容器提高 LLM 的推理性能。
确保模型的 GPU 内存分配配置正确。要跟踪 GPU 内存消耗,请使用 nvidia-smi 等监控工具。有关详细信息,请参阅 NVIDIA 网站上的系统管理接口 SMI。此外,为了帮助识别和解决 GPU 内存问题,请使用额外的日志记录语句增强推理脚本。
对内存相关的常见错误进行故障排除
"botocore.errorfactory.ModelError: An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (503) from primary with message "{"code": 503, "type": "ServiceUnavailableException", "message": "No worker is available to serve request: model"}"
如果您收到上述错误,请完成以下步骤:
- 要识别与内存相关的问题,请查看您的端点的 CloudWatch 日志。
- 要检查端点实例是否可以管理同步请求,请检查您的容器配置。确保有多个工作线程可以高效地处理传入请求。
- 要支持多个工作线程,请调整 model_server_workers 参数。有关详细信息,请参阅 SageMaker 网站上的 model_server_workers。如果您使用诸如 TorchServe 之类的框架来部署模型,请根据您的用例配置最小和最大工作线程。
- 要确定端点的最佳配置,请对端点进行负载测试。如果您的容器没有足够的资源来处理多个工作线程,请配置自动扩缩以将负载分配给多个实例。
"torch.cuda.OutOfMemoryError: CUDA out of memory."
如果上述错误发生在端点部署阶段,请完成以下步骤:
- 检查模型的内存要求并查看配置。
- 使用每个 GPU 内存更大的实例类型,例如 p4d.* 和 p5.* 系列。或者,使用具有多个 GPU 的实例,例如 g5.12xlarge 和 g5.48xlarge。
- 如果您的模型无法容纳单个 GPU,请将模型权重分成多个 GPU。
如果上述错误发生在推理期间,则表示您的 GPU 没有足够的内存来处理输入请求。要解决此问题,请将批量大小减小到 1 并将生成长度缩短为单个令牌。然后,监控您的 GPU 内存使用情况并逐渐增加批量大小和生成长度,以确定 GPU 的最大容量。
**注意:**如果您使用 Hugging Face 的 Accelerate 库,请启用 DeepSpeed 以降低 GPU 内存利用率。此方法不会影响下游性能。有关详细信息,请参阅 Hugging Face 网站上的 Accelerate。
- 语言
- 中文 (简体)
