minchun Claude Sonnet 5 commited on
Commit
f072ca3
·
1 Parent(s): e02ce54

改用 Docker SDK 部署,繞開 HF 免費層級 Gradio SDK 強制 ZeroGPU 的限制

Browse files

HF 目前的平台政策:免費層級的 Gradio SDK Space 一律跑 ZeroGPU,啟動時
要求偵測到 @spaces.GPU 標記的函式;本專案是純 CPU 應用(scikit-learn/
scipy/matplotlib),沒有這類函式,導致 Gradio SDK 直接啟動失敗
(runtime error: No @spaces.GPU function detected during startup)。

- 新增 Dockerfile:python:3.11-slim 基底,安裝 fonts-noto-cjk(matplotlib
圖表標題與座標軸多為中文,容器內建 Linux 沒有中文字型會變方框;
app_agent.py 的 _find_cjk_font() 候選清單本來就含 Noto Sans CJK
TC/SC,裝了字型套件即可直接吃到,不用改程式碼),pip 安裝
requirements.txt 內容,EXPOSE 7860,CMD 執行 app.py
- 新增 .dockerignore,排除 sessions/、.env、.git 等不該進映像檔的內容
- README.md frontmatter 的 sdk 從 gradio 改成 docker,移除 Docker SDK
用不到的 sdk_version/app_file,改加 app_port: 7860 對應
Dockerfile 的 EXPOSE

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

Files changed (3) hide show
  1. .dockerignore +16 -0
  2. Dockerfile +39 -0
  3. README.md +13 -3
.dockerignore ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 建置映像檔時不需要進容器的東西(跟 .gitignore 邏輯一致,這裡是防呆:
2
+ # 就算有人直接對整個工作目錄 docker build,也不會把執行期產生的資料、
3
+ # 本機密鑰或開發用檔案打進映像檔)
4
+ sessions/
5
+ .git/
6
+ .env
7
+ __pycache__/
8
+ *.pyc
9
+ .venv/
10
+ .gradio/
11
+ .vscode/
12
+ .idea/
13
+ .claude/
14
+ _dev_launch.py
15
+ 系統方法論述.md
16
+ 系統方法論述.docx
Dockerfile ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hugging Face Space(Docker SDK)用的容器設定。
2
+ #
3
+ # 為什麼不用 Gradio SDK:HF 免費層級的 Gradio SDK Space 現在預設跑在
4
+ # ZeroGPU 上(HF 平台政策),啟動時要求偵測到 @spaces.GPU 標記的函式,
5
+ # 本專案是純 CPU 應用(scikit-learn/scipy/matplotlib,完全不用 GPU),
6
+ # 沒有這種函式,Gradio SDK 會直接啟動失敗。改用 Docker SDK:由這份
7
+ # Dockerfile 自己控制執行環境,不吃 Gradio SDK 的 ZeroGPU 預設規則,
8
+ # 一樣可以跑在免費的 CPU 硬體上。
9
+
10
+ FROM python:3.11-slim
11
+
12
+ # fonts-noto-cjk:matplotlib 圖表(特徵重要性、分群圖等)標題與座標軸
13
+ # 都是中文,容器內建的 Linux 沒有任何中文字型,沒裝的話中文會變成方框。
14
+ # app_agent.py 的 _find_cjk_font() 本來就把 "Noto Sans CJK TC"/
15
+ # "Noto Sans CJK SC" 排在候選字型清單裡(原本是留給 Linux 部署用的),
16
+ # 裝了這個套件就能直接吃到,不用改程式碼。
17
+ RUN apt-get update && apt-get install -y --no-install-recommends \
18
+ fonts-noto-cjk \
19
+ && rm -rf /var/lib/apt/lists/*
20
+
21
+ WORKDIR /app
22
+
23
+ # 先只複製 requirements 檔案再裝套件,Docker layer cache 才會生效——
24
+ # 之後只改程式碼、沒改依賴套件時,重新建置不用重跑 pip install。
25
+ COPY requirements.txt .
26
+ RUN pip install --no-cache-dir --upgrade pip \
27
+ && pip install --no-cache-dir -r requirements.txt \
28
+ && pip install --no-cache-dir python-dotenv
29
+
30
+ COPY . .
31
+
32
+ # HF Docker Space 的容器以非 root、UID 1000 執行;sessions/ 是執行期才會
33
+ # 建立與寫入的資料夾(session 上傳檔、分析產出),這裡先建好並開放寫入
34
+ # 權限,避免執行期因權限不足寫入失敗。
35
+ RUN mkdir -p sessions && chmod -R 777 sessions
36
+
37
+ EXPOSE 7860
38
+
39
+ CMD ["python", "app.py"]
README.md CHANGED
@@ -3,13 +3,23 @@ title: 譯彩紛呈:重譯文本分析系統 TransPrism II
3
  emoji: "\U0001F308"
4
  colorFrom: blue
5
  colorTo: indigo
6
- sdk: gradio
7
- sdk_version: 6.2.0
8
- app_file: app.py
9
  pinned: false
10
  license: mit
11
  ---
12
 
 
 
 
 
 
 
 
 
 
 
 
13
  # 譯彩紛呈:重譯文本分析系統
14
 
15
  **TransPrism: An Analytical Framework for Retranslation II|分析引擎 Spectra Engine**
 
3
  emoji: "\U0001F308"
4
  colorFrom: blue
5
  colorTo: indigo
6
+ sdk: docker
7
+ app_port: 7860
 
8
  pinned: false
9
  license: mit
10
  ---
11
 
12
+ <!--
13
+ 2026-08-22:sdk 從 gradio 改成 docker。原因:HF 免費層級的 Gradio SDK
14
+ Space 現在強制跑 ZeroGPU(平台政策,見 Space 建立畫面的提示:「On the
15
+ free tier, Gradio Spaces run on ZeroGPU. Subscribe to PRO for unlocking
16
+ free cpu-basic flavor」),啟動時要求偵測到 @spaces.GPU 標記的函式,
17
+ 本專案是純 CPU 應用,沒有這種函式會直接啟動失敗。改用 Docker SDK
18
+ (見專案根目錄 Dockerfile)繞開這條規則,一樣是免費 CPU 硬體。
19
+ sdk_version/app_file 是 Gradio SDK 專用欄位,Docker SDK 不需要,已移除;
20
+ 改加 app_port 對應 Dockerfile 的 EXPOSE 7860。
21
+ -->
22
+
23
  # 譯彩紛呈:重譯文本分析系統
24
 
25
  **TransPrism: An Analytical Framework for Retranslation II|分析引擎 Spectra Engine**