some finalish touches

This commit is contained in:
Pawel
2026-05-22 15:59:05 -04:00
parent ecc4723013
commit 5941bda75e
3 changed files with 27 additions and 13 deletions

View File

@@ -2,8 +2,8 @@
**ClimbingBoardGPT** is a unified transformer-style modeling project for climbing-board routes on: **ClimbingBoardGPT** is a unified transformer-style modeling project for climbing-board routes on:
- **Tension Board 2 Mirror** - **Tension Board 2 Mirror** (12ftx12ft)
- **Kilter Board Original** - **Kilter Board Original** (16ftx12ft)
The project treats climbing-board problems as symbolic sequences of board-aware hold-role tokens. It supports: The project treats climbing-board problems as symbolic sequences of board-aware hold-role tokens. It supports:
@@ -637,6 +637,7 @@ models/joint_route_gpt_generator.pth
models/joint_transformer_grade_predictor.pth models/joint_transformer_grade_predictor.pth
data/processed/tokenized/token_metadata.csv data/processed/tokenized/token_metadata.csv
data/processed/tokenized/token_vocab.json data/processed/tokenized/token_vocab.json
data/processed/tokenized/route_sequences.csv
configs/ configs/
images/ images/
src/climbingboardgpt/ src/climbingboardgpt/
@@ -675,7 +676,9 @@ Example prediction payload:
} }
``` ```
Board-size-specific generation is a planned future extension. For now, the demo uses the full TB2 12x12 and Kilter 16x12-style background images and placement sets. # Future Work
- Board-size-specific generation is a planned future extension. For now, the demo uses the full TB2 12x12 and Kilter 16x12-style background images and placement sets.
- "No Match" token and "No Match" options in the demo.

View File

@@ -2,7 +2,7 @@ services:
climbingboardgpt-webapp: climbingboardgpt-webapp:
build: build:
context: . context: .
dockerfile: Dockerfile.webapp dockerfile: webapp/Dockerfile
container_name: climbingboardgpt-webapp container_name: climbingboardgpt-webapp
restart: unless-stopped restart: unless-stopped
ports: ports:

View File

@@ -1,24 +1,35 @@
FROM python:3.11-slim FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
WORKDIR /app WORKDIR /app
RUN apt-get update \ # Install CPU-only PyTorch first (separate index, ~200MB vs ~2.5GB)
&& apt-get install -y --no-install-recommends build-essential \ RUN pip install --no-cache-dir \
&& rm -rf /var/lib/apt/lists/* --index-url https://download.pytorch.org/whl/cpu \
torch
COPY requirements.txt pyproject.toml README.md ./ # Install only runtime dependencies (no matplotlib, jupyter, etc.)
COPY pyproject.toml README.md ./
COPY src ./src COPY src ./src
RUN pip install --no-cache-dir -e . \
--no-deps \
&& pip install --no-cache-dir \
numpy \
pandas \
scipy \
matplotlib \
scikit-learn \
fastapi \
"uvicorn[standard]" \
pydantic
COPY configs ./configs COPY configs ./configs
COPY images ./images COPY images ./images
COPY webapp ./webapp COPY webapp ./webapp
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir fastapi "uvicorn[standard]" pydantic \
&& pip install --no-cache-dir -e .
EXPOSE 8055 EXPOSE 8055
CMD ["uvicorn", "webapp.app:app", "--host", "0.0.0.0", "--port", "8055"] CMD ["uvicorn", "webapp.app:app", "--host", "0.0.0.0", "--port", "8055"]