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

基于AWS SAM部署FastAI模型时遇UnicodeDecodeError问题求助

解决FastAI模型在AWS Lambda本地测试的UnicodeDecodeError问题

关键修复步骤

1. 修正模型加载方式

FastAI的.pth是二进制文件,别直接用torch.load读取,优先用FastAI原生加载方法,或者指定二进制模式打开文件再加载:

# 若模型是用learn.export导出的,用FastAI原生加载
from fastai.learner import load_learner
learn = load_learner("test-fastai-project.pth")

# 用Torch加载时,必须以二进制模式打开文件
with open("test-fastai-project.pth", "rb") as f:
    model = torch.load(f, map_location=torch.device('cpu'))

注意:训练模型时的FastAI、Torch版本,要和Lambda环境里的版本完全一致,版本不匹配大概率会触发解析错误。

2. 彻底清理SAM与Docker缓存

Windows环境下SAM的缓存不止存于Docker镜像,需全链路清理:

  • 删除SAM本地缓存:执行 sam local delete
  • 清理Docker所有闲置资源:docker system prune -a(会删除所有未使用的镜像、容器、卷)
  • 删除项目目录下的.aws-sam文件夹
  • 启动SAM时强制重新构建镜像:sam local start-api --build

3. 强制设置Lambda环境编码

在Dockerfile中添加编码环境变量,确保运行环境编码统一:

ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8

如果使用Python 2,在Lambda入口文件最顶部补充编码声明:

import sys
sys.setdefaultencoding('utf-8')

4. 验证模型文件完整性

重新导出模型,避免导出方式错误:

  • FastAI标准导出:learn.export("test-fastai-project.pth")
  • Torch权重导出:torch.save(learn.model.state_dict(), "test-fastai-project.pth")
    导出后先在本地单独测试加载逻辑,确认无错误再部署到SAM环境:
# 本地测试脚本
from fastai.learner import load_learner
try:
    learn = load_learner("test-fastai-project.pth")
    print("模型加载成功")
except Exception as e:
    print(f"加载错误: {str(e)}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:45:42