使用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 参考文档。
您可以使用许多组件和软件包来演示您的模型、数据集和可视化。您可以在此处开始。