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

从S3部署Llama 2 7B至Amazon SageMaker遇Hub连接错误求助

解决SageMaker部署自定义Llama 2模型时连接Hugging Face Hub的错误

问题原因

你遇到的错误根源在于:

  • 环境变量HF_MODEL_ID被设置为本地路径/opt/ml/model,但SageMaker的HuggingFace推理工具包会将该变量识别为Hugging Face Hub的仓库ID,而仓库ID必须符合repo_name或namespace/repo_name格式,因此触发格式验证错误。
  • 尽管指定了自定义的deploy.py,但工具包默认逻辑优先尝试从Hub加载模型,并未执行你的自定义代码。

解决方案

1. 替换环境变量,指定本地模型路径

将HF_MODEL_ID替换为HF_MODEL_DIR,该变量专门用于指向容器内的本地模型目录,工具包会直接从该路径加载模型,而非连接Hugging Face Hub。

修改后的环境配置:

import json

config = {
  'HF_MODEL_DIR': "/opt/ml/model", # 指定本地模型存储路径
  'SM_NUM_GPUS': json.dumps(number_of_gpu),
  'MAX_INPUT_LENGTH': json.dumps(1024),
  'MAX_TOTAL_TOKENS': json.dumps(2048),
}

2. 确保自定义deploy.py实现标准推理函数

你的deploy.py需要实现SageMaker推理工具包要求的核心函数,这样工具包才会调用你的自定义逻辑。示例代码如下:

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

def model_fn(model_dir):
    # 加载本地模型与tokenizer
    tokenizer = AutoTokenizer.from_pretrained(model_dir)
    # 适配Llama 2的加载参数
    model = AutoModelForCausalLM.from_pretrained(
        model_dir,
        torch_dtype=torch.bfloat16,
        device_map="auto",
        trust_remote_code=True
    )
    return model, tokenizer

def predict_fn(input_data, model_and_tokenizer):
    model, tokenizer = model_and_tokenizer
    # 处理输入文本并转移到GPU
    inputs = tokenizer(input_data["text"], return_tensors="pt").to("cuda")
    # 生成推理结果
    outputs = model.generate(
        **inputs,
        max_new_tokens=200,
        temperature=0.7,
        do_sample=True
    )
    return tokenizer.decode(outputs[0], skip_special_tokens=True)

3. 更换为GPU兼容的容器镜像

你当前使用的是CPU版本镜像,但部署实例为GPU类型(ml.g4dn.2xlarge),需更换为对应版本的GPU镜像,避免资源不匹配:

image='763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-inference:2.0.0-transformers4.28.1-gpu-py310-cu117-ubuntu20.04'

4. 完整修改后的部署代码

from sagemaker.huggingface import HuggingFaceModel
import json

model_s3_path = 's3://bucket/model/model.tar.gz'

# SageMaker配置
instance_type = "ml.g4dn.2xlarge"
number_of_gpu = 1
health_check_timeout = 300
# 使用GPU兼容镜像
image='763104351884.dkr.ecr.us-west-2.amazonaws.com/huggingface-pytorch-inference:2.0.0-transformers4.28.1-gpu-py310-cu117-ubuntu20.04'

# 修正后的环境变量配置
config = {
  'HF_MODEL_DIR': "/opt/ml/model",
  'SM_NUM_GPUS': json.dumps(number_of_gpu),
  'MAX_INPUT_LENGTH': json.dumps(1024),
  'MAX_TOTAL_TOKENS': json.dumps(2048),
}

# 创建HuggingFaceModel实例
llm_model = HuggingFaceModel(
  image_uri=image, 
  role=sagemaker.get_execution_role(),  
  model_data=model_s3_path,
  entry_point="deploy.py",
  source_dir="src",
  env=config,
)

# 部署模型
llm = llm_model.deploy(
  initial_instance_count=1,
  instance_type=instance_type,
  container_startup_health_check_timeout=health_check_timeout,
)

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:54:55