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

在GPU实例部署端点时如何将模型加载至CUDA设备

解决PyTorch模型在SageMaker GPU实例加载到CPU的问题

针对你在ml.g4dn.xlarge实例上部署PyTorch模型却加载到CPU的问题,可按以下步骤排查解决:

1. 确保推理代码将模型迁移到CUDA设备

你当前的代码仅定义了DEVICE变量,但未将加载后的模型移动到目标设备上。这是最常见的原因,修改推理代码如下:

import torch
import logging

logger = logging.getLogger(__name__)

DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
logger.info('Model will be loaded into:{}'.format(DEVICE))

# 加载模型(替换为你的实际模型加载逻辑)
model = torch.load('model.pth')
# 关键步骤:将模型迁移到指定设备
model = model.to(DEVICE)
# 设置模型为推理模式
model.eval()

def predict(input_data):
    # 将输入数据同步迁移到CUDA设备
    inputs = torch.tensor(input_data).to(DEVICE)
    with torch.no_grad():
        outputs = model(inputs)
    # 若需返回CPU格式结果,再迁移回CPU
    return outputs.cpu().numpy()

2. 显式配置SageMaker模型的GPU环境

在创建PyTorchModel时,添加环境变量明确启用GPU支持:

model = PyTorchModel(
    entry_point='inference.py',
    source_dir='code',
    role=role,
    model_data=model_data,
    framework_version="1.12.0",
    py_version='py38',
    code_location='s3://staging',
    name='Staging-Model',
    # 添加GPU启用环境变量
    environment={"SAGEMAKER_USE_GPU": "true"}
)

3. 添加CUDA检测日志排查问题

在推理代码中增加更详细的CUDA状态日志,确认Torch是否真的检测到GPU:

logger.info(f"CUDA available: {torch.cuda.is_available()}")
logger.info(f"GPU数量: {torch.cuda.device_count()}")
if torch.cuda.is_available():
    logger.info(f"当前GPU索引: {torch.cuda.current_device()}")
    logger.info(f"GPU名称: {torch.cuda.get_device_name(0)}")

通过这些日志可以区分是Torch未检测到GPU,还是代码未正确迁移模型。

4. 验证模型权重兼容性

即使模型是在CPU上训练保存的,PyTorch也支持将其迁移到GPU使用,无需重新训练。只需确保加载后执行model.to(DEVICE)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:40:29