Hugging Face Spaces部署教程:利用免费额度从零到一创建AI应用
Hugging Face Spaces部署教程:利用免费额度从零到一创建AI应用
Hugging Face Spaces 是一个专为AI开发者和爱好者打造的平台,它允许你免费托管和运行机器学习应用。本 Hugging Face Spaces部署教程 将带你从最基础的概念讲起,通过三个不同类型的实战案例,让你从零到一,完全掌握整个AI应用的部署流程。
Part 1: Hugging Face Spaces部署前须知
在开始您的第一个 Hugging Face Spaces部署 项目之前,了解免费额度包含什么是至关重要的,这能帮助您更好地规划项目。
1.1 免费额度的“真相”
- 硬件:默认提供一个共享的 CPU 环境,配备 16GB RAM 和 50GB 的持久化存储。这个配置对于绝大多数中小型模型的在线部署演示已足够。
- 休眠机制:如果你的 Space 在一段时间内(通常是1小时)没有收到任何访问请求,它会自动进入“休眠”状态。下次访问时会自动唤醒,但首次加载会需要一些时间。
- 网络:没有带宽限制,非常适合公开分享你的AI Demo。
- 用途:非常适合用于项目演示、个人作品集、学习和测试。不适合用于对稳定性要求极高的生产环境。
1.2 必备工具
- Hugging Face 账号:访问 huggingface.co 注册。
- Git:本地安装 Git,我们将用它管理和上传代码。Git 下载地址。
- Python 环境:建议使用 Python 3.8+。
- 代码编辑器:VS Code 或 PyCharm。
Part 2: 完整的Hugging Face Spaces部署流程
我们将通过部署一个简单的 情感分析模型 来走通整个流程。这个流程是所有 Hugging Face Spaces部署 任务的核心,掌握后便可举一反三。
Step 1: 在 Hugging Face 上创建新的 Space
- 登录后,点击右上角头像,选择 "New Space"。
- 填写信息:
- Space name: my-sentiment-analyzer
- License: mit
- Select the Space SDK: Gradio。Gradio是完成本次部署教程的关键,它能用极简代码生成Web UI。
- Space hardware: CPU basic - FREE。
- Public/Private: Public。
 
- Space name: 
- 点击 "Create Space"。
Step 2: 克隆 Space 仓库到本地
在你的 Space 页面,点击 "Files" -> "Clone repository",复制 git clone 命令并在本地终端执行。
# 替换成你自己的URL
git clone https://huggingface.co/spaces/YourUsername/my-sentiment-analyzer
cd my-sentiment-analyzer
Step 3: 编写应用代码 (app.py)
在 my-sentiment-analyzer 文件夹中,创建 app.py。这是你 Hugging Face Spaces部署 的核心逻辑文件。
app.py 内容如下:
import gradio as gr
from transformers import pipeline
# 1. 加载一个预训练的情感分析模型
print("正在加载模型...")
sentiment_pipeline = pipeline("sentiment-analysis")
print("模型加载完成!")
# 2. 定义一个预测函数
def predict_sentiment(text):
    results = sentiment_pipeline(text)
    return results[0]
# 3. 创建 Gradio 界面
iface = gr.Interface(
    fn=predict_sentiment,
    inputs=gr.Textbox(lines=2, placeholder="在这里输入英文句子..."),
    outputs="json",
    title="😊 情感分析器",
    description="这是一个基于 Hugging Face Spaces 部署的AI应用。输入一句英文,模型会判断它是积极的还是消极的。",
    examples=[["I love the new Hugging Face course!"], ["This movie was not what I expected."]]
)
# 4. 启动应用
iface.launch()
Step 4: 管理依赖 (requirements.txt)
Hugging Face Spaces 通过此文件了解项目依赖。创建 requirements.txt 文件:
gradio
transformers
torch
Step 5: 推送代码到 Hugging Face
在终端里执行以下 Git 命令,完成代码上传。
git add .
git commit -m "Initial sentiment analysis app"
git push
Step 6: 查看应用运行
代码推送成功后,回到浏览器中的 Space 页面。系统会显示 "Building" 状态,表示正在安装依赖。完成后,状态变为 "Running",恭喜你,你的第一个 Hugging Face Spaces部署 项目成功上线!
Step 7: 测试你的AI应用
刷新页面,即可看到 Gradio 生成的交互界面。输入文本并提交,就能看到模型的实时分析结果。
Part 3: 实战演练:更多模型的部署案例
掌握了基础流程后,我们可以轻松将其应用到不同模型的 Hugging Face Spaces部署 中。
示例二:文本生成图像 (Text-to-Image)
- 创建/克隆 Space: my-text-to-image-demo
- requirements.txt:- gradio torch diffusers transformers accelerate 
- app.py:- import gradio as gr import torch from diffusers import StableDiffusionPipeline # 提示:在免费CPU上,生成一张图约需1-3分钟。 print("正在加载模型...") pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float32) print("模型加载完成!") def generate_image(prompt): image = pipe(prompt, num_inference_steps=20).images[0] return image iface = gr.Interface( fn=generate_image, inputs=gr.Textbox(label="输入你的图像描述 (Prompt)"), outputs=gr.Image(label="生成的图像"), title="🎨 文本生成图像", description="一个部署在Hugging Face Spaces上的文生图Demo。在免费CPU上运行较慢,请耐心等待。" ) iface.launch() 
- 推送代码 并等待部署完成。
示例三:问答系统 (Question Answering)
- 创建/克隆 Space: my-qa-system
- requirements.txt: 与第一个情感分析的例子完全一样。
- app.py:- import gradio as gr from transformers import pipeline print("正在加载问答模型...") qa_pipeline = pipeline("question-answering", model="distilbert-base-cased-distilled-squad") print("模型加载完成!") def answer_question(context, question): result = qa_pipeline(question=question, context=context) return result['answer'] iface = gr.Interface( fn=answer_question, inputs=[ gr.Textbox(lines=5, label="背景文字 (Context)"), gr.Textbox(label="问题 (Question)") ], outputs=gr.Textbox(label="答案 (Answer)"), title="📖 智能问答系统", description="提供背景文字和问题,模型会从中找出答案。这也是一个经典的Hugging Face Spaces部署应用。" ) iface.launch() 
- 推送代码 并测试。
Part 4: 进阶技巧与常见问题 (FAQ)
- 
我的 Hugging Face Spaces 部署失败了怎么办? - 第一步:看日志! 在你的 Space 页面点击 "Logs" 选项卡。99% 的问题都能在这里找到线索,如 ModuleNotFoundError(依赖未写入requirements.txt) 或内存溢出。
 
- 第一步:看日志! 在你的 Space 页面点击 "Logs" 选项卡。99% 的问题都能在这里找到线索,如 
- 
如何处理大模型文件? - 最佳实践:不要将模型权重直接推送到 Space 仓库。应像本教程的示例一样,在 app.py中使用from_pretrained()从 Hugging Face Hub 动态加载。这能极大减小仓库体积,加快部署速度。
 
- 最佳实践:不要将模型权重直接推送到 Space 仓库。应像本教程的示例一样,在 
- 
如何保护 API Key 等秘密? - 在 Space 的 "Settings" -> "Repository secrets" 中添加。绝不要硬编码在代码里!在代码中通过 os.environ.get('YOUR_SECRET_NAME')获取。
 
- 在 Space 的 "Settings" -> "Repository secrets" 中添加。绝不要硬编码在代码里!在代码中通过