Hub documentation
Streamlit Spaces
Spaces์ ๊ธฐ๋ณธ ๋ด์ฅ SDK๋ก Streamlit์ ์ฌ์ฉํ๋ ์ต์ ์ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค. Streamlit๋ก Space๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด Docker SDK๋ฅผ ์ ํํ ํ Streamlit ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ธ์.
Streamlit Spaces
Streamlit๋ ๋ฐ์ํ ๋ฐฉ์์ผ๋ก Python์ ์ฌ์ฉํด ๊ธฐ๋ฅ์ ์ธ ์น ์ฑ์ ๊ตฌ์ถํ ์ ์๋ ์์ ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฑ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฝ๋๊ฐ ๋ค์ ์คํ๋ฉ๋๋ค. Streamlit์ ๋ฐ์ดํฐ ์๊ฐํ์๋ ํ์ํ๋ฉฐ Bokeh, Plotly, Altair์ ๊ฐ์ ์ฌ๋ฌ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. Spaces์์ Streamlit ์ฑ์ ๊ตฌ์ถํ๊ณ ํธ์คํ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ฝ์ด๋ณด์ธ์.
์๋ก์ด Space๋ฅผ ์์ฑํ ๋ Streamlit์ SDK๋ก ์ ํํ๋ฉด README.md ํ์ผ์ YAML ๋ธ๋ก์์ sdk ์์ฑ์ streamlit์ผ๋ก ์ค์ ํ์ฌ ์ต์ ๋ฒ์ ์ Streamlit๋ก Space๊ฐ ์ด๊ธฐํ๋ฉ๋๋ค. Streamlit ๋ฒ์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด sdk_version ์์ฑ์ ํธ์งํ ์ ์์ต๋๋ค.
Space์์ Streamlit์ ์ฌ์ฉํ๋ ค๋ฉด New Space ์์์ ํตํด Space๋ฅผ ์์ฑํ ๋ SDK๋ก Streamlit์ ์ ํํ์ธ์. ๊ทธ๋ฌ๋ฉด ๋ค์ ์์ฑ์ด ํฌํจ๋ YAML ๊ตฌ์ฑ ๋ธ๋ก์ด ์๋ README.md๊ฐ ํฌํจ๋ ์ ์ฅ์๊ฐ ์์ฑ๋ฉ๋๋ค:
sdk: streamlit
sdk_version: 1.25.0 # The latest supported versionsdk_version๋ฅผ ์์ ํ ์ ์์ง๋ง, ์ง์๋์ง ์๋ Streamlit ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ชจ๋ Streamlit ๋ฒ์ ์ด ์ง์๋๋ ๊ฒ์ ์๋๋ฏ๋ก, ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ์ ํ์ธํ๋ ค๋ฉด ์ฐธ์กฐ ์น์
์ ์ฐธ๊ณ ํ์ธ์.
Streamlit์ ๋ํ ์์ธํ ์ ๋ณด๋ Streamlit ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Streamlit Spaces์๋ 8501 ํฌํธ๋ง ํ์ฉ๋ฉ๋๋ค(๊ธฐ๋ณธ ํฌํธ). ๋ฐ๋ผ์ Space์
config.tomlํ์ผ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํฌํธ๊ฐ ์ฌ์ ์๋์ง ์๋๋ก ํ์ธํ์ธ์.
์ฒซ ๋ฒ์งธ Streamlit Space: ํซ๋๊ทธ ๋ถ๋ฅ๊ธฐ
๋ค์ ์น์ ์์๋ Space๋ฅผ ๋ง๋ค๊ณ , ์ค์ ํ๋ฉฐ, ์ฝ๋๋ฅผ ๋ฐฐํฌํ๋ ๊ธฐ๋ณธ ์ฌํญ์ ํ์ตํฉ๋๋ค. Streamlit์ ์ฌ์ฉํ์ฌ Hot Dog Classifier Space๋ฅผ ๋ง๋ค๊ณ , ์ฃผ์ด์ง ์ฌ์ง์ ํซ๋๊ทธ๊ฐ ํฌํจ๋์ด ์๋์ง ๊ฐ์งํ ์ ์๋ julien-c/hotdog-not-hotdog ๋ชจ๋ธ์ ๋ฐ๋ชจ๋ก ์ฌ์ฉํ ๊ฒ์ ๋๋ค ๐ญ
์์ฑ๋ ๋ฒ์ ์ NimaBoscarino/hotdog-streamlit์์ ํ์ธํ ์ ์์ต๋๋ค.
์๋ก์ด Streamlit Space ๋ง๋ค๊ธฐ
์๋ก์ด Space๋ฅผ ์์ฑํ๊ณ SDK๋ก Streamlit์ ์ ํํ๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค. Hugging Face Spaces๋ Git ์ ์ฅ์์ด๋ฏ๋ก ์ปค๋ฐ์ ํธ์ํ์ฌ Space๋ฅผ ์ ์ง์ ์ผ๋ก(๊ทธ๋ฆฌ๊ณ ํ์ ํ์ฌ) ์์ ํ ์ ์์ต๋๋ค. ๊ณ์ํ๊ธฐ ์ ์ ํ์ผ์ ์์ฑํ๊ณ ํธ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํด Getting Started with Repositories ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํด ๋ณด์ธ์.
์์กด์ฑ์ ์ถ๊ฐ
Hot Dog Classifier์์๋ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ค๋ฉด ๐ค Transformers pipeline์ ์ฌ์ฉํ๋ฏ๋ก, ๋จผ์ ๋ช ๊ฐ์ง ์์กด์ฑ์ ์ค์นํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ์ ์ฅ์์ requirements.txt ํ์ผ์ ์์ฑํ๊ณ , ์๋ ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค:
transformers
torchSpaces ๋ฐํ์์ด ์ข ์์ฑ์ ์ค์นํ๋ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค!
Streamlit ์ฑ ๋ง๋ค๊ธฐ
Streamlit ์ฑ์ ๋ง๋ค๋ ค๋ฉด ์ ์ฅ์์ app.py๋ผ๋ ์ ํ์ผ์ ๋ง๋ค๊ณ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ธ์:
import streamlit as st
from transformers import pipeline
from PIL import Image
pipeline = pipeline(task="image-classification", model="julien-c/hotdog-not-hotdog")
st.title("Hot Dog? Or Not?")
file_name = st.file_uploader("Upload a hot dog candidate image")
if file_name is not None:
col1, col2 = st.columns(2)
image = Image.open(file_name)
col1.image(image, use_column_width=True)
predictions = pipeline(image)
col2.header("Probabilities")
for p in predictions:
col2.subheader(f"{ p['label'] }: { round(p['score'] * 100, 1)}%")์ด Python ์คํฌ๋ฆฝํธ๋ ๐ค Transformers pipeline์ ์ฌ์ฉํ์ฌ Streamlit ์ธํฐํ์ด์ค์์ ์ฌ์ฉํ๋ julien-c/hotdog-not-hotdog ๋ชจ๋ธ์ ๋ก๋ํฉ๋๋ค. Streamlit ์ฑ์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๋๋ก ์๊ตฌํ๋ฉฐ, ์ ๋ก๋๋ ์ด๋ฏธ์ง๋ฅผ hot dog ๋๋ not hot dog๋ก ๋ถ๋ฅํฉ๋๋ค. ์ฝ๋๋ฅผ app.py ํ์ผ๋ก ์ ์ฅํ ํ App ํญ์ ๋ฐฉ๋ฌธํ์ฌ ์ฑ์ ์คํํ๋ ๋ชจ์ต์ ํ์ธํด ๋ณด์ธ์!

๋ค๋ฅธ ์นํ์ด์ง์ Streamlit Spaces ์๋ฒ ๋
HTML <iframe> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ Streamlit Space๋ฅผ ๋ค๋ฅธ ์นํ์ด์ง์ ์ธ๋ผ์ธ ํ๋ ์์ผ๋ก ์๋ฒ ๋ํ ์ ์์ต๋๋ค. .hf.space ์ ๋ฏธ์ฌ๋ก ๋๋๋ Space์ URL์ ํฌํจํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. Space์ URL์ ์ฐพ์ผ๋ ค๋ฉด Spaces ์ต์
์ โEmbed this Spaceโ ๋ฒํผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์ ๋ฐ๋ชจ๋ ๋ค์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์์ ์ฝ์ ํ ์ ์์ต๋๋ค:
<iframe
src="https://huggingface.co/proxy/NimaBoscarino-hotdog-streamlit.hf.space?embed=true"
title="My awesome Streamlit Space"
></iframe>URL์ ?embed=true๋ฅผ ์ถ๊ฐํ์ฌ Streamlit ์ฑ์ ์๋ฒ ๋ ๋ชจ๋๋ฅผ ํ์ฑํํ์ต๋๋ค. ์ด๋ฅผ ํตํด ์ผ๋ถ ์ฌ๋ฐฑ๊ณผ ํธํฐ๊ฐ ์ ๊ฑฐ๋์ด ์ฌ๋ฆผํ ์๋ฒ ๋๊ฐ ๋ฉ๋๋ค.
์๋ ํฌ๊ธฐ ์กฐ์ ๋๋ IFrames๋ก Streamlit Spaces ์๋ฒ ๋
Streamlit์ 1.17.0๋ถํฐ ์๋ iframe ๋ฆฌ์ฌ์ด์ง์ ์ง์ํ์ฌ, ์๋ฒ ๋๋ Streamlit ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝํ ์ธ ์์ ๋ง์ถฐ ๋ถ๋ชจ iframe์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ์กฐ์ ๋ฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ iFrame Resizer ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ฉฐ, ์๋ ์์์ ๊ฐ์ด ๋ช ์ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
id์ ์๋ ๋ฆฌ์ฌ์ด์ฆ ๋์ ์ง์ ์ ์ํด<iframe />์ผ๋ก ์ค์ ๋ฉ๋๋ค.iFrame Resizer๋scriptํ๊ทธ๋ฅผ ํตํด ๋ก๋๋ฉ๋๋ค.iFrameResize()ํจ์๋ ๋์iframe์์์ ID๋ฅผ ์ธ์๋ก ๋ฐ์, ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋๋ก ํธ์ถ๋ฉ๋๋ค.
iFrameResize()์ ์ฒซ ๋ฒ์งธ ์ธ์์ ์ต์
์ ์ ๋ฌํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
<iframe
id="your-iframe-id"
src="https://<space-subdomain>.hf.space"
frameborder="0"
width="850"
height="450"
></iframe>
<script src="https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.4/js/iframeResizer.min.js"></script>
<script>
iFrameResize({}, "#your-iframe-id")
</script>๋ํ ๋ฌธ์๋ฅผ ํ์ธํด ๋ณด์ค ์ ์์ต๋๋ค.
Update on GitHub