# Nanochat with GPU support (CUDA + PyTorch). Use to get a clean NCCL/CUDA environment. # Build: docker build -t nanochat:gpu . # Run: docker run --gpus all -it --rm -v "$(pwd)":/workspace/nanochat -w /workspace/nanochat nanochat:gpu bash # Test NCCL: docker run --gpus all -it --rm -v "$(pwd)":/workspace/nanochat -w /workspace/nanochat --shm-size=1g nanochat:gpu bash scripts/try_nccl_8gpu.sh FROM nvidia/cuda:12.4.0-cudnn-runtime-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ python3 \ python3-pip \ python3-venv \ git \ curl \ && rm -rf /var/lib/apt/lists/* # Install uv (install script puts it in /root/.local/bin when run as root) RUN curl -LsSf https://astral.sh/uv/install.sh | sh ENV PATH="/root/.local/bin:$PATH" WORKDIR /workspace/nanochat # Copy project (context should be repo root) COPY pyproject.toml uv.lock ./ COPY nanochat ./nanochat COPY scripts ./scripts COPY runs ./runs COPY tasks ./tasks COPY docs ./docs # Create venv and install with GPU extra (PyTorch cu128); venv in /opt so mount doesn't override it RUN uv venv /opt/venv && UV_PROJECT_ENVIRONMENT=/opt/venv uv sync --extra gpu ENV PATH="/opt/venv/bin:$PATH" VIRTUAL_ENV=/opt/venv # Default: bash so you can run torchrun / scripts manually CMD ["bash"]