You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SageMaker部署LLM调用端点遇offload_folder及CUDA错误求助

问题解决方案:SageMaker多模型部署与推理错误排查

一、offload_folder参数无效问题

SageMaker多模型容器的offload_folder要求指定实例本地路径,而非S3路径——模型卸载是在实例本地磁盘完成的,S3路径无法被容器直接调用。

解决步骤:

  • 修改推理脚本(inference.py)的model_fn函数,在加载模型时指定本地临时存储目录(如/tmp/offload,ml.g5系列实例的/tmp目录有100GB左右空间,足够满足卸载需求)
  • 无需在InvokeEndpoint的请求payload中传递offload_folder参数,所有卸载配置统一在模型加载阶段完成

示例代码:

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import torch

def model_fn(model_dir):
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    # 配置自动设备映射与本地卸载目录
    model = AutoModelForSeq2SeqLM.from_pretrained(
        model_dir,
        device_map="auto",
        offload_folder="/tmp/offload",
        torch_dtype=torch.bfloat16
    )
    return model, tokenizer

二、ml.g5.4xlarge无法同时部署两个模型

ml.g5.4xlarge仅配备1张24GB显存的A10G GPU,而huggingface-text2text-flan-t5-xxl(11B参数)在bfloat16精度下就占用约22GB显存,两个模型同时加载会超出显存上限。

解决思路:

  • 启用SageMaker多模型端点(MME)的动态模型加载:默认情况下MME只会在收到对应模型的推理请求时加载模型,推理完成后自动卸载,无需同时加载所有模型。需确保创建端点时设置ModelDataDownloadTimeoutInSeconds和ContainerStartupHealthCheckTimeoutInSeconds为300秒以上,给模型加载留足时间
  • 若必须同时加载两个模型,需升级到更大显存的实例(如ml.g5.12xlarge,配备4张A10G GPU,总显存96GB),但会带来更高成本

三、单独部署flan-t5-xxl的CUDA设备不匹配错误

该错误源于模型加载时部分参数分配在CPU、部分在GPU,推理时输入张量与模型参数设备不一致。

解决步骤:

  • 加载模型时使用device_map="auto",让Transformers库自动分配设备,避免手动指定设备导致的不匹配
  • 在predict_fn函数中,确保输入张量被转移到模型所在设备

示例代码:

def predict_fn(input_data, model_and_tokenizer):
    model, tokenizer = model_and_tokenizer
    # 将输入张量转移到模型所在设备
    inputs = tokenizer(input_data["text"], return_tensors="pt").to(model.device)
    outputs = model.generate(**inputs)
    return tokenizer.decode(outputs[0], skip_special_tokens=True)
  • 使用SageMaker官方HuggingFace容器,其预配置的CUDA、PyTorch、Transformers版本已做兼容性适配,避免手动环境配置导致的问题

内容的提问来源于stack exchange,提问作者Mustapha Unubi Momoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:15:05