零成本部署LLM应用:手把手教你用Streamlit和Hugging Face Spaces上线轻量级聊天机器人

大型语言模型(LLMs)目前非常流行,尝试新的项目和模型也变得很有趣。但要与他人分享你的项目却面临挑战——大多数云平台要么价格高昂,要么配置复杂,甚至兼而有之。

这正是 Hugging Face Spaces 与众不同的地方。Hugging Face 不仅仅是模型和数据集的集散地;它还像其他主流云服务商一样,提供机器学习基础设施。最棒的是?他们提供免费的 CPU 实例,非常适合轻量级的 LLM 应用。这意味着你可以将项目从本地迁移到线上,与全世界分享,而无需花一分钱。Hugging Face Spaces 让你能够用 Streamlit、Gradio 或 Docker 构建的机器学习应用,只需几次点击就能免费部署,几乎无需配置。

在本教程中,我将带你一步步实践,如何用 Streamlit 从零开始,将一个简单的聊天机器人部署到 Hugging Face Spaces,实现上线。

How to Deploy Your LLM to Hugging Face Spaces


一、将 LLM 部署到 Hugging Face Spaces

前置条件
你需要一个 Hugging Face 账户。如果还没有,请在登录页面注册一个新账户。完成后,你就可以开始了——无需额外设置或云服务。


1. 创建新 Space

前往 Hugging Face 的“创建新 Space”页面。页面上会包含以下信息:

  • Space Name(空间名称)

    :最终将体现在项目的 URL 和名称中。

  • SDK

    :选择 Streamlit 作为后端。其他选项还包括 Gradio、Docker 和静态 HTML。

  • Space Hardware(硬件资源)

    :默认是免费的 CPU 实例,Hugging Face 也提供付费的高配置实例和 GPU 实例。目前我们用基础 CPU 实例即可。

  • Visibility(可见性)

    :设置项目的可见性,默认公开,任何人都能访问你的 Space 并查看项目。私有实例则仅你本人及所在组织成员(如有)可见。

填写完上述信息后,页面应类似如下示例:

Screenshot-1

点击“Create Space”后,你会被重定向到新的 Space 页面,该页面包含设置说明和一个空仓库,供你上传代码。

此时,你的新 Space 应该如下所示:

Screenshot-2


2. 克隆新 Space

Hugging Face Spaces 的运作方式类似 GitHub 仓库;你可以克隆 Space 到本地,进行更改后再推送回去。一旦项目包含必要文件,Hugging Face 会自动检测更改、构建应用并上线。

首先,将 Space 克隆到本地:

你可以在 Space 页面找到 Git clone 命令,格式如下:

git clone https://huggingface.co/spaces/你的用户名/你的Space名称

在终端运行该命令,即可克隆已连接 Hugging Face Space 的 Git 仓库。注意,这并非空仓库——其中已包含预设配置文件,帮助 Hugging Face 配置和部署你的应用。

在克隆下来的仓库中,你会发现一个名为 README.md 的文件,用于存放应用的元数据。YAML 区块定义了 Hugging Face 应如何构建你的应用:

  • sdk

    :设置为 streamlit

  • sdk_version

    :指定使用的 Streamlit 版本

  • app_file

    :应用的入口文件(通常为 app.py),用于启动 Space

你的 README.md 文件大致如下:

---
title: Llm Demo
emoji: 👀
colorFrom: pink
colorTo: blue
sdk: streamlit
sdk_version: 1.44.1
app_file: app.py
pinned: false
---

详细配置参考:https://huggingface.co/docs/hub/spaces-config-reference


3. 用 Streamlit 编写你的 LLM 应用

现在 Space 已搭建好且已克隆到本地,接下来开始构建你的应用!

首先,创建 requirements.txt 文件。该文件告知 Hugging Face 应用所需的 Python 库,构建时会自动安装:

Screenshot-3

本项目需用到 transformers 和 PyTorch 以运行 LLM 应用。你的 requirements.txt 文件应如下:

transformers
torch
streamlit

本次演示采用 Google 的 FLAN-T5-small 轻量级模型,占用约 300MB 内存。由于我们用的是 CPU 实例,较复杂模型可能运行缓慢或因内存不足无法加载。我们将基于该模型搭建一个简单的 Streamlit 聊天机器人界面。

新建 app.py 文件,并粘贴以下代码:

import streamlit as st
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline

@st.cache_resource
def load_model():
    tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-small")
    model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-small")
    return pipeline("text2text-generation", model=model, tokenizer=tokenizer)

st.set_page_config(page_title="LLM Demo", layout="centered")
st.title("🚀 FLAN-T5 Small - HuggingFace Demo")

pipe = load_model()

user_input = st.text_area("Enter your instruction or question:", "")

if st.button("Generate Response"):
    if user_input.strip() == "":
        st.warning("Please enter some text.")
    else:
        with st.spinner("Generating..."):
            output = pipe(user_input, max_new_tokens=100)[0]["generated_text"]
            st.success("### Response:")
            st.write(output)

这段代码通过 transformers 库加载 FLAN-T5-small 模型,构建文本生成管道,实现基于用户输入生成回复。随后使用 Streamlit 搭建简洁交互界面,包含输入框,用户可输入指令或问题。提交后,应用会以聊天机器人的形式返回 LLM 生成的回答。为提高性能,@st.cache_resource 装饰器用于缓存模型,避免每次交互都重新加载,提升速度并减少资源消耗。

本地测试应用,请依次运行以下命令:

pip install -r requirements.txt
streamlit run app.py

4. 推送最新更改到 Spaces

应用准备好后,只需将代码推送到 Hugging Face Spaces 的仓库即可上线。具体步骤如下:

首先,将本地代码更改提交到 Git 仓库:

git add .
git commit -m "Initial commit with Streamlit LLM app"

推送到远程仓库前,需用有写权限的 Access Token 进行认证。前往 Hugging Face 账户的访问令牌设置页,创建一个具有写权限的新令牌,并妥善保存(页面只显示一次)。

在终端使用 Hugging Face CLI 登录认证:

pip install huggingface-hub
huggingface-cli login

系统会提示粘贴访问令牌并确认。大多数用户此流程可顺利完成,终端会提示登录成功。

Screenshot-4

认证完毕后,推送更改:

git push

如果你使用 macOS,可能会遇到 Git 推送失败、凭据冲突的已知问题:

Screenshot-5

如遇此情况,请用以下方法:

git push -u https://HF_USERNAME:HF_ACCESS_TOKEN@huggingface.co/spaces/HF_USERNAME/HF_SPACE_NAME

将 HF_USERNAMEHF_ACCESS_TOKENHF_SPACE_NAME 替换为你的实际用户名、访问令牌和空间名称。此命令显式使用令牌认证,绕过系统凭据问题,确保应用成功部署。


5. 测试已部署的 Space

Hugging Face Spaces 检测到仓库更新后,会自动启动构建和部署流程。你能看到实时构建日志,包括依赖安装和 Streamlit 应用的启动过程。

一切顺利的话,应用会顺利上线并可使用——无需手动设置!应用上线后界面大致如下:

Screenshot-6

你现在可以直接在浏览器与聊天机器人互动,也能获得一个公开链接分享给他人。这是向全世界展示你的 LLM 项目的极简、低成本方式!需要注意的是本教程用的是 Flan-T5-small,仅适合轻量级和 CPU 场景,对于复杂问题准确率有限。你可以根据需要,轻松更换为更强大或更精调的模型。


总结

本教程中,我们用 Streamlit 在 Hugging Face Spaces 上部署了一个轻量级 LLM 聊天机器人——从创建新空间、编写应用到上线部署,全部实现零成本。只需几个步骤,就能将本地原型变为可分享的 web 应用,底层由 Flan-T5-small 提供动力。你可以进一步完善界面(如添加聊天记录、markdown 支持)、更换更强大的模型,或尝试 Gradio、Docker 等其他后端。对于更复杂的应用,还能增加文件上传、语音输入等功能,或迁移到 GPU 实例以应对更重的负载。

Hugging Face Spaces 让你的 LLM 项目上线变得异常简单,尽情搭建、实验、分享你的创意吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值