Hugging Face Spaces 適合把模型或 AI 功能做成「別人打開網址就能試」的 Demo。最短路徑是 Gradio:準備 app.py 和依賴,push 到 Space repo,平台自動建置;需要自訂系統套件、後端服務或特殊啟動流程時,再用 Docker。
它很適合作品集、研究展示、客戶概念驗證與內部試用,卻不是免維運的正式產品平台。免費硬體會休眠、磁碟不是永久儲存,公開 Space 還會公開原始碼。開始前先決定「誰能看 App、誰能看 code、資料要不要留下」。
建立第一個 Space:先選對 SDK
建立 Space 時要選名稱、license、visibility 與 SDK。Gradio 適合 Python 模型 Demo 和互動介面;Docker 適合需要完整容器控制的應用;static HTML 適合沒有伺服器推論的前端展示。官方目前已不把 Streamlit 列為內建 SDK,新專案若需要 Streamlit 可用 Docker 路線。
Space 本質上是 Git repository。每次 commit push 後會自動重新 build、restart;因此程式碼、requirements.txt、README metadata 與版本要一起管理。不要在網頁介面修一份、GitHub 又留另一份,否則出錯時很難知道哪個版本正在跑。
如果你還沒串過模型 API,先用 AI API 串接指南 建立伺服器端呼叫;若 Demo 主要跑本機模型,也可比較 Ollama 本機模型 的資源需求再決定是否需要 Space GPU。
Public、Protected、Private 差在哪?
Public 的 source code、執行 App 與 clone 全部公開,適合開源作品。Protected 只有 owner/collaborators 能看 code,但執行中的 App 可透過網址公開;這個選項屬於付費方案。Private 則連 App 都只開給有權限的成員,其他人造訪會得到 404。
公開 Demo 不要放客戶資料、內部文件或任何「雖然藏在介面後面,但 repo 裡看得到」的設定。即使 code private,訪客仍可能透過輸入測試、錯誤訊息與網路請求推測後端行為;正式資料應另有驗證、權限與稽核。
免費硬體、休眠與磁碟限制
官方目前列出的免費 CPU Basic 是 2 vCPU、16GB RAM、50GB disk;這個磁碟不保證持久,Space restart 或停止後資料可能消失。需要保留上傳檔、索引或使用紀錄時,使用 Storage Bucket/attached volume 或外部資料庫,別把檔案只寫在本機目錄。
免費 Space 閒置一段時間會 sleep,第一位訪客可能要等它重新啟動。展示時可在活動前先喚醒;需要長期常駐與穩定延遲,評估付費 CPU/GPU。升級硬體按小時計費,暫停 Space 時不計費;選 GPU 前先量實際記憶體、啟動時間與每次推論成本。
若 Space 會自行載入 open-weight 模型,先看參數量、量化格式與推論精度。7B/8B 級模型經 4-bit 量化後,所需顯示記憶體通常遠低於未量化版本;更大模型或長 context 還會增加 KV cache。不要只用「模型檔下載得下來」判斷,至少在目標硬體上量一次啟動峰值、單次推論顯示記憶體與兩位使用者同時請求的結果,再選 CPU、T4、L4 或更高規格。
Secrets 絕對不要寫進 repo
非敏感設定放 Variables,API token、資料庫密碼與私密 key 放 Secrets。官方說 Secrets 建立後不會在設定頁回顯,也不會跟著 Duplicate Space 複製;程式透過環境變數讀取。
Static Space 要特別小心:任何送到瀏覽器端的資料都可能被訪客看到,不能把真正的 secret 當前端變數。需要第三方 API key 時,改成 Gradio/Docker 後端呼叫,或使用自己的伺服器代理。即使平台有 secret scanner,也不能取代 key rotation 與用量上限。
常見問題
Hugging Face Spaces 免費嗎?
有免費 CPU Basic,官方目前列出 2 vCPU、16GB RAM 與 50GB 非持久磁碟。免費硬體會在閒置後休眠;GPU、較高 CPU 或長期運行要依當下價格付費。
Public Space 會公開原始碼嗎?
會。Public 的 source、App 與 clone 都公開。想公開 App 但隱藏 code,可評估付費 Protected;App 與 code 都要限制成員則選 Private。
為什麼 Space 重啟後上傳檔案不見了?
預設磁碟是 ephemeral,restart 或 stop 後不能當永久保存。要留資料,請接 Storage Bucket/volume 或外部資料庫,並先處理權限與備份。
可以把 OpenAI、Gemini 或 Claude API Key 放在 Space 嗎?
可以放在 Settings 的 Secrets,由後端環境變數讀取;不能寫進 repo、README、前端程式或 Variables。也要替 key 設使用上限,避免公開 Demo 被大量呼叫。