divhanimajokweni-ctrl's picture
feat: submit ProofBridge Liner to LabLab AI AMD Developer Hackathon
93c7565
# Dockerfile.rocm
# ProofBridge Liner β€” AMD MI300X / ROCm 7 variant
#
# Target: DigitalOcean FX-AM7-gpu-mi300x1-192gb (Ubuntu 24.04, ROCm 7 pre-installed)
#
# Strategy: lightweight Node.js 20 image β€” ROCm libraries are mounted
# from the HOST at /opt/rocm (already installed by the DO marketplace image).
# This avoids pulling the 20+ GB rocm/dev base image and gives access to
# the exact ROCm 7 version the host drivers expect.
#
# Build:
# docker build -f Dockerfile.rocm -t proofbridge-liner:rocm .
#
# Run (with MI300X):
# docker run --rm \
# --device /dev/kfd \
# --device /dev/dri \
# --group-add video \
# --group-add render \
# -v /opt/rocm:/opt/rocm:ro \
# -e ROCM_PATH=/opt/rocm \
# -e DASHBOARD_PORT=7860 \
# -p 7860:7860 \
# proofbridge-liner:rocm
FROM node:20-bookworm-slim
LABEL org.opencontainers.image.title="ProofBridge Liner (MI300X)"
LABEL org.opencontainers.image.description="Ghost-Risk Safety Kernel β€” AMD Instinct MI300X, 192 GB HBM3"
LABEL rocm.version="7"
LABEL amd.gpu="MI300X"
# ── System deps needed to call into mounted ROCm libs ─────────────
RUN apt-get update && apt-get install -y --no-install-recommends \
libstdc++6 \
libnuma1 \
libelf1 \
curl \
ca-certificates \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
WORKDIR /app
# ── Node deps (production only) ───────────────────────────────────
COPY package.json ./
RUN npm install --omit=dev
# ── App source ────────────────────────────────────────────────────
COPY . .
# ── Entrypoint: probe GPU, then launch dashboard ──────────────────
COPY <<'EOF' /app/entrypoint.sh
#!/bin/sh
set -e
echo "╔═══════════════════════════════════════╗"
echo "β•‘ ProofBridge Liner β€” MI300X Kernel β•‘"
echo "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•"
# Report GPU if ROCm is mounted
if [ -x "${ROCM_PATH:-/opt/rocm}/bin/rocm-smi" ]; then
"${ROCM_PATH}/bin/rocm-smi" --showproductname --showmeminfo vram 2>/dev/null \
&& echo "[rocm] AMD MI300X detected β€” 192 GB HBM3 available" \
|| echo "[rocm] rocm-smi ran but no GPU reported"
else
echo "[rocm] /opt/rocm not mounted β€” running CPU-only mode"
fi
exec node dashboard/server.js
EOF
RUN chmod +x /app/entrypoint.sh
# ── Environment ───────────────────────────────────────────────────
ENV NODE_ENV=production
ENV DASHBOARD_PORT=7860
ENV DASHBOARD_HOST=0.0.0.0
# ROCm path (populated at runtime by -v /opt/rocm:/opt/rocm:ro)
ENV ROCM_PATH=/opt/rocm
ENV PATH="${ROCM_PATH}/bin:${PATH}"
ENV LD_LIBRARY_PATH="${ROCM_PATH}/lib:${ROCM_PATH}/lib64:${LD_LIBRARY_PATH:-}"
# MI300X-specific HIP tuning env vars
ENV HIP_VISIBLE_DEVICES=0
ENV GPU_MAX_HW_QUEUES=8
ENV HSA_ENABLE_SDMA=0
EXPOSE 7860
ENTRYPOINT ["/app/entrypoint.sh"]