Hugging Face Spaces 2026:用Gradio和Streamlit免费托管AI演示
做完模型或脚本想给人看,部署演示却意味着云账号、域名和账单。Hugging Face Spaces 把这三样都免了,代价是几条必须知道的限制。下面是从零上线第一条演示的完整操作。
📜 目录
Hugging Face Spaces 2026:用Gradio和Streamlit免费托管AI演示
做完模型或脚本想给人看,部署演示却意味着云账号、域名和账单。Hugging Face Spaces 把这三样都免了,代价是几条必须知道的限制。下面是从零上线第一条演示的完整操作。
一、Spaces是什么
一个Git仓库加一个应用文件,HF 自动构建、自动分配域名(用户名-空间名.hf.space)、自动上HTTPS。你不需要服务器、不需要备案、不需要信用卡就能建公开空间。
它适合三类东西:模型演示、内部工具原型、写文章时配一个能点的例子。不适合生产流量和企业敏感数据。
二、免费层给到什么程度
| 资源 | 免费公开 Space | 说明 |
|---|---|---|
| CPU 基础运行 | 有月度额度 | 额度用尽后空间会暂停,细节以官方定价页为准 |
| GPU | 共享的 ZeroGPU,按时段配额 | 需要排队,长任务易被打断 |
| 存储 | 仓库有容量上限 | 大模型权重建议放模型库再挂载,别塞进空间仓库 |
| 私有空间 | 需付费 | 免费层面向公开演示 |
| 休眠 | 空闲后休眠 | 有人访问时冷启动,首屏会等几十秒 |
这些数字官方会调整,动手前扫一眼定价页比记我的数字可靠。
三、5分钟上线第一个 Gradio 演示
第1步:建空间。 登录 HF,右上角 New Space,填名字,SDK 选 Gradio,硬件保持免费 CPU,可见性选 Public。
第2步:写 app.py。
import gradio as gr
def summarize(text):
if not text.strip():
return "请输入内容"
return text.strip()[:300] + "..."
demo = gr.Interface(
fn=summarize,
inputs=gr.Textbox(lines=6, label="粘贴一段文字"),
outputs=gr.Textbox(lines=4, label="摘要"),
title="文本摘要演示",
examples=[["把你的第一段示例文本放这里,访问者可以一键试用。"]],
)
demo.launch()
examples 是最容易被忽略的一行:给出来访者能一键点的样例,试用率差好几倍。
第3步:写 requirements.txt。 只列真正用到的包,并且尽量钉版本:
gradio==5.*
requests
第4步:写 README.md 的YAML头。 Space 靠这段元数据识别框架:
---
title: Text Summarizer Demo
emoji: 🚀
colorFrom: blue
colorTo: green
sdk: gradio
app_file: app.py
pinned: false
---
第5步:看构建日志。 提交后进入 Logs 标签,构建失败九成是依赖冲突或 app_file 名字对不上。改完再推一次,几十秒重建。
四、Gradio 还是 Streamlit
| 维度 | Gradio | Streamlit |
|---|---|---|
| 定位 | 模型输入输出演示 | 完整数据应用 |
| 上手成本 | 低,声明输入输出即可 | 中,按脚本顺序渲染 |
| 适合 | 单模型试用、对比两个模型 | 多页、图表、表格、状态管理 |
| 短板 | 复杂布局费劲 | 交互逻辑多了会绕 |
一句话:只演示一个功能用 Gradio,要做一个能点来点去的小工具用 Streamlit。HF 上两种都一键支持,切换成本很低。
五、把密钥放对地方
不要在代码里写API key,公开空间是人人可见的。正确做法是用 Space 设置里的 Secrets,然后在代码里读环境变量:
import os
api_key = os.environ.get("MY_API_KEY")
本地调试用 .env,并把 .env 写进 .gitignore。
六、把Space当内容资产用
一个能点的演示,比十张截图更能说明你会做东西。三个提高利用率的做法:
- 嵌进文章:Space 支持 iframe,把
<iframe src="https://用户名-空间名.hf.space" width="100%" height="480"></iframe>放进博客对应段落,读者不用跳转就能试。 - 写清限制:在标题和描述里说明支持什么(例如"最多500字""只支持中文"),能挡掉大部分"怎么报错了"的抱怨。
- 留版本痕迹:README 里写清依赖版本和模型来源,几个月后回来改才不会一头雾水。
七、什么时候该从Space搬走
出现这三种情况,说明演示阶段结束了:
- 访问量稳定上来,开始遇到限流或冷启动投诉。
- 任务变长,跑几分钟的活被休眠打断。
- 需要接内部数据库或私有模型权重。
搬去哪:静态前端用对象存储或 Pages 类服务,后端用一台小VPS跑容器,把 app.py 换成 FastAPI 加前端页面即可,Gradio 那套接口逻辑可以基本保留。搬之前先把密钥从代码里彻底拔掉。
八、常见问题
Q:空间打不开或者一直转圈? A:先看它是不是休眠了(免费CPU空间空闲会睡),第一次访问要冷启动。持续报错就去 Logs 看构建或运行时错误。
Q:能不能跑7B模型?
A:免费CPU基本跑不动,量化小模型勉强。真要用大模型,走 ZeroGPU 配额或调用外部API,把权重放模型库再用 from_pretrained 拉,不要提交进仓库。
Q:能绑定自己的域名吗? A:公开空间用的是 hf.space 子域。要自定义域名,通常得自己起一层反向代理。
Q:商用可以吗? A:平台条款和模型许可证是两件事。空间能商用不代表模型能商用,模型卡上的许可证必须单独看。
Q:能不能当正式产品后端? A:不建议。免费层有限流和休眠,长任务会被打断。演示和原型可以,正式流量请迁到自己的服务器。
注:免费额度、GPU配额与私有空间政策以 Hugging Face 官方定价页与文档为准。
相关文章
本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。