Streamlitを使用して、Hugging Face Spacesにモデルとデータセットをホスティングする

Streamlitを使用して、Hugging Face Spacesにモデルとデータセットをホスティングする

Streamlitを使用してHugging Face Spacesでデータセットとモデルを紹介する

Streamlitを使用すると、データセットを視覚化し、機械学習モデルのデモをきれいに構築することができます。このブログ記事では、モデルとデータセットのホスティング、およびHugging Face SpacesでのStreamlitアプリケーションの提供方法をご紹介します。

モデルのデモを作成する

Hugging Faceのモデルを読み込んで、Streamlitを使用してクールなUIを構築することができます。この具体的な例では、「Write with Transformer」を一緒に再現します。GPT-2やXLNetなどのtransformerを使用して何でも書けるアプリケーションです。

推論の仕組みについては詳しく触れません。ただし、この特定のアプリケーションにはいくつかのハイパーパラメータ値を指定する必要があることを知っておく必要があります。Streamlitには、カスタムアプリケーションを簡単に実装できる多くのコンポーネントが提供されています。必要なハイパーパラメータを推論コード内で受け取るために、それらの一部を使用します。

  • .text_areaコンポーネントは、入力する文章を受け入れるための素敵なエリアを作成します。
  • Streamlitの.sidebarメソッドを使用すると、サイドバーで変数を受け入れることができます。
  • sliderは連続値を取るために使用されます。ステップを指定しない場合、値は整数として扱われますので、忘れずにステップを指定してください。
  • number_inputを使用すると、エンドユーザーに整数値の入力をさせることができます。
import streamlit as st

# テキストボックスに表示されるデフォルトのテキストを追加
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("テキスト", 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("上位-k", min_value = 0, max_value=5, value = 0)
top_p = st.sidebar.slider("上位-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という新機能のストリーミングを使用すると、非常に大きなデータセットで直ちに作業し、すべての例をダウンロードしてメモリにロードする必要がなくなります。

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コンポーネントはたくさんあります。そのうちの1つが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 APIのリファレンスを参照してください。

モデル、データセット、可視化をデモンストレーションするために使用できるコンポーネントやパッケージはたくさんあります。ここから始めることができます。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more