使用Streamlit在Hugging Face Spaces上托管您的模型和数据集
使用 Streamlit 在 Hugging Face Spaces 上展示您的数据集和模型
Streamlit 允许您以简洁的方式可视化数据集并构建机器学习模型演示。在这篇博文中,我们将引导您在 Hugging Face Spaces 中托管模型和数据集,并提供 Streamlit 应用程序。
为您的模型构建演示
您可以使用 Streamlit 加载任何 Hugging Face 模型并构建炫酷的 UI。在这个特殊的例子中,我们将一起重现 “与 Transformer 一起写作”。它是一个允许您使用 GPT-2 和 XLNet 等 Transformer 编写任何内容的应用程序。
我们不会深入探讨推理的工作原理。您只需要知道,对于这个特定的应用程序,您需要指定一些超参数值。Streamlit 提供了许多 组件,让您可以轻松实现自定义应用程序。我们将使用其中的一些组件来接收推理代码中必要的超参数。
.text_area
组件创建了一个漂亮的区域,用于输入要完成的句子。- Streamlit 的
.sidebar
方法允许您在侧边栏中接受变量。 slider
用于获取连续值。不要忘记给slider
一个步长,否则它会将值视为整数。- 您可以使用
number_input
让终端用户输入整数值。
import streamlit as st
# adding the text that will show in the text box as default
default_value = "See how a modern neural network auto-completes your text 🤗 This site, built by the Hugging Face team, lets you write a whole document directly from your browser, and you can trigger the Transformer anywhere using the Tab key. Its like having a smart machine that completes your thoughts 😀 Get started by typing a custom snippet, check out the repository, or try one of the examples. Have fun!"
sent = st.text_area("Text", default_value, height = 275)
max_length = st.sidebar.slider("Max Length", min_value = 10, max_value=30)
temperature = st.sidebar.slider("Temperature", value = 1.0, min_value = 0.0, max_value=1.0, step=0.05)
top_k = st.sidebar.slider("Top-k", min_value = 0, max_value=5, value = 0)
top_p = st.sidebar.slider("Top-p", min_value = 0.0, max_value=1.0, step = 0.05, value = 0.9)
num_return_sequences = st.sidebar.number_input('Number of Return Sequences', min_value=1, max_value=5, value=1, step=1)
推理代码返回生成的输出,您可以使用简单的 st.write
打印输出。st.write(generated_sequences[-1])
您可以在此处查看完整代码。
展示您的数据集和数据可视化
Streamlit 提供了许多组件来帮助您可视化数据集。它与 🤗 Datasets、pandas 以及 matplotlib、seaborn 和 bokeh 等可视化库无缝协作。
让我们从加载数据集开始。Datasets 中的一项新功能,称为流式传输,允许您立即处理非常大的数据集,无需下载所有示例并将其加载到内存中。
from datasets import load_dataset
import streamlit as st
dataset = load_dataset("merve/poetry", streaming=True)
df = pd.DataFrame.from_dict(dataset["train"])
如果您有像我这样的结构化数据,您可以简单地使用 st.dataframe(df)
来显示您的数据集。Streamlit 有许多组件可以交互式地绘制数据。其中一个组件是 st.barchart()
,我用它来可视化诗歌内容中最常用的单词。
st.write("Most appearing words including stopwords")
st.bar_chart(words[0:50])
如果您想使用 matplotlib、seaborn 或 bokeh 等库,您所要做的就是在绘图脚本的末尾加上 st.pyplot()
。
st.write("Number of poems for each author")
sns.catplot(x="author", data=df, kind="count", aspect = 4)
plt.xticks(rotation=90)
st.pyplot()
您可以在下面看到交互式条形图、数据框组件以及托管的 matplotlib 和 seaborn 可视化。您可以在此处查看代码。
在 Hugging Face Spaces 中托管您的项目
您可以简单地拖放您的文件,如下所示。请注意,您需要在 requirements.txt 中包含您的附加依赖项。另请注意,您本地的 Streamlit 版本是相同的。为了无缝使用,请参阅 Spaces API 参考。