使用Streamlit在Hugging Face Spaces上托管您的模型和数据集

在Hugging Face Spaces上托管模型和数据集,使用Streamlit

使用Hugging Face Spaces上的Streamlit展示您的数据集和模型

Streamlit允许您以简洁的方式可视化数据集并构建机器学习模型的演示。在本博文中,我们将向您展示如何在Hugging Face Spaces中托管模型和数据集,并提供Streamlit应用程序的服务。

为您的模型构建演示

您可以加载任何Hugging Face模型并使用Streamlit构建出色的用户界面。在这个特定的示例中,我们将一起重新创建”Write with Transformer”。这是一个应用程序,可以让您使用像GPT-2和XLNet这样的transformer写任何内容。

我们不会深入探讨推理工作的细节。您只需要知道您需要为这个特定应用程序指定一些超参数值。Streamlit提供了许多组件,供您轻松实现自定义应用程序。我们将使用其中一些组件在推理代码中接收所需的超参数。

  • .text_area组件创建了一个漂亮的区域,用于输入要完成的句子。
  • Streamlit的.sidebar方法使您可以在侧边栏中接受变量。
  • slider用于接收连续值。不要忘记给slider指定一个步长,否则它会将值视为整数。
  • 您可以使用number_input让最终用户输入整数值。
import streamlit as st

# 添加将显示在文本框中的默认文本
default_value = "查看现代神经网络如何自动补全您的文本 🤗 该网站由Hugging Face团队构建,可以直接在浏览器中编写整个文档,并且可以使用Tab键在任何位置触发Transformer。就像拥有一个能够完成您思维的智能机器 😀 通过键入自定义片段、查看存储库或尝试其中一个示例来开始吧!祝您玩得开心!"

sent = st.text_area("文本", default_value, height = 275)
max_length = st.sidebar.slider("最大长度", min_value = 10, max_value=30)
temperature = st.sidebar.slider("温度", 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('返回序列的数量', min_value=1, max_value=5, value=1, step=1)

推理代码返回生成的输出,您可以使用简单的st.write打印输出。st.write(generated_sequences[-1])

这是我们复制的版本的样子。

您可以在此处查看完整的代码。

展示您的数据集和数据可视化

Streamlit提供了许多组件,帮助您可视化数据集。它与🤗 Datasets、pandas以及诸如matplotlib、seaborn和bokeh等可视化库无缝配合。

让我们从加载数据集开始。在Datasets中的一个新功能称为streaming,它允许您立即处理非常大的数据集,无需下载所有示例并将其加载到内存中。

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("包括停用词在内的最常出现的单词")
st.bar_chart(words[0:50])

如果您想使用matplotlib、seaborn或bokeh等库,您只需要在绘图脚本的末尾添加st.pyplot()即可。

st.write("每个作者的诗歌数量")
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 中的版本相同。为了无缝使用,请参考 Spaces API 参考文档。

您可以使用许多组件和软件包来演示您的模型、数据集和可视化。您可以在此处开始。