File size: 3,956 Bytes
141a818 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | # Dockerfile โ Hugging Face Spaces (Docker SDK) ไธ็จ
#
# ่ง่้ตๅฎ
# --------
# 1. ๆด้ฒ็ซฏๅฃ 7860๏ผHF ๅบๅฎๅ็ซฏ็ซฏๅฃ๏ผ็ฆๆญขไฝฟ็จ 8501๏ผ
# 2. ้ root ็จๆท `user`๏ผUID=1000๏ผ๏ผ็ฌฆๅ HF ๅฎๅ
จ็ญ็ฅ
# 3. ๅฏๅจๅฝไปค๏ผstreamlit run app.py --server.port=7860 --server.address=0.0.0.0
#
# ้ๅไฝ็งฏไผๅ
# ------------
# torch CPU-only wheel (~700MB) ไปฃๆฟๅฎๆด GPU ็ๆฌ (~3GB)
# Demo ไป
ๅๆจ็๏ผไธ้่ฆ CUDA ๆฏๆ
#
# ๆฌๅฐๆๅปบๆต่ฏ
# ------------
# docker build -t maze-dqn-demo .
# docker run -p 7860:7860 maze-dqn-demo
# ๆต่งๅจ่ฎฟ้ฎ๏ผhttp://localhost:7860
FROM python:3.10.14-slim
# โโ ็ณป็ปๅบ็กไพ่ต โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
git \
&& rm -rf /var/lib/apt/lists/*
# โโ ๅๅปบ้ root ็จๆท๏ผHF ๅฎๅ
จ่ฆๆฑ๏ผUID=1000๏ผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
RUN useradd -m -u 1000 user
WORKDIR /app
# โโ ๅ
ๅฎ่ฃ
ไพ่ต๏ผๅฉ็จ Docker layer cache๏ผไปฃ็ ๅๆดไธ่งฆๅ้่ฃ
๏ผโโโโโโโโโโโโโโ
COPY --chown=user:user requirements.txt .
# ๅ
ๅ็ฌๅฎ่ฃ
torch CPU-only wheel๏ผ้ฟๅ
้ป่ฎคๆๅ GPU ็ๆฌ๏ผ~3GB โ ~700MB๏ผ
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir torch --index-url https://download.pytorch.org/whl/cpu \
&& pip install --no-cache-dir -r requirements.txt
# โโ ๆท่ดๅบ็จๆ ธๅฟๆไปถ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
# app.py Web ๅ็ซฏไธป็จๅบ
# maze_env/ Gymnasium ็ฏๅขๅ
๏ผๅซ bfs.py๏ผ้่ฟ pip install ๅฎ่ฃ
๏ผ
# src/model.py ็ฅ็ป็ฝ็ปๆถๆ๏ผsys.path ๆณจๅ
ฅ src/ ๅๅฏผๅ
ฅ๏ผ
# config.yaml ่ถ
ๅๆฐ้
็ฝฎๆไปถ๏ผapp.py ๅฏๅจๆถ่ฏปๅ๏ผ
# results/best_model_train_*.pth ๅ็ฎๆณ่ฎญ็ปๆ้๏ผapp.py ๆ algorithm ๅๅจๆๅ ่ฝฝ๏ผ
# pyproject.toml ๅ
ๅฎ่ฃ
ๆ่ฟฐ็ฌฆ๏ผpip install -e . ้่ฆ๏ผ
COPY --chown=user:user app.py .
COPY --chown=user:user src/model.py src/model.py
COPY --chown=user:user maze_env/ maze_env/
COPY --chown=user:user pyproject.toml .
COPY --chown=user:user config.yaml .
COPY --chown=user:user results/best_model_train_vanilla.pth results/best_model_train_vanilla.pth
COPY --chown=user:user results/best_model_train_double.pth results/best_model_train_double.pth
COPY --chown=user:user results/best_model_train_dueling.pth results/best_model_train_dueling.pth
COPY --chown=user:user results/best_model_train_double_dueling.pth results/best_model_train_double_dueling.pth
# โโ ๅฎ่ฃ
maze_env ๅ
๏ผไฝฟ `from maze_env import ...` ็ๆ๏ผโโโโโโโโโโโโโโโโโโ
RUN pip install --no-cache-dir -e .
# โโ ๅๆขๅฐ้ root ็จๆท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
USER user
# โโ ๆด้ฒ HF ไธ็จ็ซฏๅฃ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
EXPOSE 7860
# โโ ๅฏๅจๅฝไปค๏ผHF ่ง่๏ผport=7860, address=0.0.0.0๏ผโโโโโโโโโโโโโโโโโโโโโโ
CMD ["streamlit", "run", "app.py", \
"--server.port=7860", \
"--server.address=0.0.0.0", \
"--server.headless=true", \
"--server.fileWatcherType=none"]
|