如何通过Gradio将Transformer模型成功部署到Hugging Face Space
Hugging Face Space 部署Gradio图像分类模型解决方案
你遇到的ModuleNotFoundError: No module named 'transformers'报错,核心原因是Hugging Face Space不会自动识别Python代码里的导入语句安装依赖,直接在.py脚本中写pip install是无效的——pip是终端命令,不属于Python语法,直接写在脚本中既不会被正常执行,也不符合Space的依赖加载规则。
按照以下步骤操作即可完成部署:
1. 新增依赖声明文件
在和app.py同级的仓库根目录,新建名为requirements.txt的文件,写入所有需要的第三方依赖,Space在构建应用时会自动读取这个文件安装对应包,文件内容如下:
gradio transformers timm torch pillow
不需要手动指定包版本,Space的基础运行环境会自动匹配兼容的稳定版本,手动写死版本号反而容易触发版本冲突。
2. 修正原app.py的逻辑错误
你的原有代码存在两个会导致运行失败的逻辑问题:
- 模型pipeline初始化写在预测函数内部,每次用户提交图片都会重新加载模型,会导致响应超时、内存占用过高
- 最后生成界面时引用的
model是函数内的局部变量,全局作用域无法访问,就算依赖装完也会触发NameError
修正后的可直接运行的代码如下:
from transformers import pipeline import gradio as gr # 应用启动时全局加载模型,仅加载1次,降低运行开销 model = pipeline("image-classification", model="google/vit-base-patch16-224") def image_classifier(image): return model(image) gr.Interface.from_pipeline(model).launch()
原代码中导入的
timm没有实际调用,属于冗余导入,pipeline会自动匹配模型需要的后端依赖,不需要额外在代码中手动导入。如果需要使用timm库中的特定图像分类模型,直接在pipeline的model参数中传入对应的timm模型名即可。
3. 触发应用重新构建
将requirements.txt和修正后的app.py上传到Space仓库根目录后,Space会自动触发新一轮构建,等待构建日志显示应用启动成功后,就可以正常访问使用图像分类功能了。
内容的提问来源于stack exchange,提问作者Ifeanyi Idiaye
相关产品推荐
相关产品推荐

