426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
ci / test (push) Waiting to run
ci / lint-and-format (push) Waiting to run
ci / build (push) Waiting to run
ci / dev-startup (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
gitleaks / gitleaks (push) Waiting to run
Markdown Links / Relative Markdown Links (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Quality (Extended) / Homepage Build (PR smoke) (push) Waiting to run
Quality (Extended) / Comment-only diff guard (push) Waiting to run
Quality (Extended) / Format + Type Safety Ratchet (push) Waiting to run
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Waiting to run
Quality (Extended) / Develop Gate (lint) (push) Waiting to run
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
149 lines
5.7 KiB
Docker
149 lines
5.7 KiB
Docker
# Eliza eliza-1 training stack — GPU image.
|
|
#
|
|
# Builds the CUDA + Triton + QJL extension chain required by:
|
|
# - scripts/quantization/qjl/ (vendored CUDA kernels, nvcc)
|
|
# - scripts/quantization/fused_turboquant_* (Triton JIT at import time)
|
|
# - scripts/training/ (APOLLO, Liger, FA2/3)
|
|
# - scripts/inference/serve_vllm.py (vllm 0.20+, optional `serve`)
|
|
#
|
|
# CUDA / torch alignment
|
|
# ----------------------
|
|
# training/pyproject.toml pins torch>=2.5.0,<2.11 in the `train` extra.
|
|
# uv.lock currently resolves torch 2.10.0 + triton 3.6.0. Torch 2.10 ships
|
|
# `cu126` wheels by default, so the toolchain image is CUDA 12.6.
|
|
#
|
|
# Image goal: build QJL extensions at *image-build* time so the first
|
|
# `docker run` does not pay for a 5+ minute nvcc compile. fused-turboquant's
|
|
# Triton kernels still JIT on first call (Triton has no AOT path), but the
|
|
# system gcc + cuda toolchain that JIT needs is baked in.
|
|
#
|
|
# Multi-stage layout: `builder` carries apt build deps + uv venv + nvcc
|
|
# compile artifacts; `runtime` keeps the venv + compiled .so files but
|
|
# drops apt caches and -dev headers we no longer need at runtime.
|
|
|
|
ARG CUDA_IMAGE=nvidia/cuda:12.6.3-devel-ubuntu22.04
|
|
|
|
# -------------------------------------------------------------------
|
|
# Stage 1: builder — system deps, uv, python venv, QJL nvcc compile
|
|
# -------------------------------------------------------------------
|
|
FROM ${CUDA_IMAGE} AS builder
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PIP_NO_CACHE_DIR=1 \
|
|
UV_LINK_MODE=copy \
|
|
UV_COMPILE_BYTECODE=1 \
|
|
UV_PYTHON_PREFERENCE=only-managed
|
|
|
|
# python3.12-dev is required by QJL's torch.utils.cpp_extension build
|
|
# (Python.h). build-essential brings gcc/g++/make. ninja-build is what
|
|
# torch.utils.cpp_extension prefers as a backend.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
ca-certificates \
|
|
curl \
|
|
git \
|
|
gnupg \
|
|
ninja-build \
|
|
software-properties-common \
|
|
&& add-apt-repository -y ppa:deadsnakes/ppa \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
python3.12 \
|
|
python3.12-dev \
|
|
python3.12-venv \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install uv from the upstream installer; pin the install dir so the
|
|
# binary lands somewhere we can copy to the runtime stage.
|
|
ENV UV_INSTALL_DIR=/usr/local/bin
|
|
RUN curl -LsSf https://astral.sh/uv/install.sh | sh \
|
|
&& uv --version
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Copy lock + project metadata first so dependency resolution caches
|
|
# independently of source changes.
|
|
COPY pyproject.toml ./
|
|
COPY uv.lock ./
|
|
|
|
# Create the venv with python 3.12 (uv-managed) and install the train
|
|
# extra. We deliberately do NOT install `--extra serve` here because vllm
|
|
# pulls a different torch ABI and conflicts with the train extra (see
|
|
# pyproject.toml [tool.uv].conflicts). serve is intentionally a separate
|
|
# image.
|
|
RUN uv venv --python 3.12 /workspace/.venv \
|
|
&& . /workspace/.venv/bin/activate \
|
|
&& uv sync --extra train --frozen --no-install-project
|
|
|
|
ENV VIRTUAL_ENV=/workspace/.venv \
|
|
PATH=/workspace/.venv/bin:$PATH \
|
|
PYTHONPATH=/workspace/scripts
|
|
|
|
# Copy the rest of the source. We only need scripts/ for QJL and runtime,
|
|
# but bring the whole training tree so test runs work.
|
|
COPY scripts ./scripts
|
|
COPY datasets.yaml ./datasets.yaml
|
|
COPY README.md ./README.md
|
|
|
|
# Build QJL CUDA extensions. TORCH_CUDA_ARCH_LIST covers Ampere (A100),
|
|
# Hopper (H100/H200), Blackwell datacenter (B200), and Blackwell consumer
|
|
# (RTX 50-series) with PTX fallback for forward compatibility.
|
|
ENV TORCH_CUDA_ARCH_LIST="8.0;8.9;9.0;10.0;12.0+PTX"
|
|
RUN bash /workspace/scripts/build_quantization_extensions.sh
|
|
|
|
# -------------------------------------------------------------------
|
|
# Stage 2: runtime — drop apt build caches, keep compiled artifacts
|
|
# -------------------------------------------------------------------
|
|
FROM ${CUDA_IMAGE} AS runtime
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
VIRTUAL_ENV=/workspace/.venv \
|
|
PYTHONPATH=/workspace/scripts \
|
|
PATH=/workspace/.venv/bin:/usr/local/bin:$PATH
|
|
|
|
# Runtime needs gcc + python headers because fused-turboquant's Triton
|
|
# kernels JIT-compile a CUDA helper on first import, and Triton shells
|
|
# out to the system C compiler. Keep the install minimal — no -doc, no
|
|
# -test packages.
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
gcc \
|
|
g++ \
|
|
git \
|
|
ninja-build \
|
|
software-properties-common \
|
|
&& add-apt-repository -y ppa:deadsnakes/ppa \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
python3.12 \
|
|
python3.12-dev \
|
|
python3.12-venv \
|
|
&& apt-get purge -y --auto-remove software-properties-common \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Carry uv along so operators inside the container can `uv pip install`
|
|
# extra ad-hoc packages (e.g. heretic-llm in research mode).
|
|
COPY --from=builder /usr/local/bin/uv /usr/local/bin/uv
|
|
COPY --from=builder /usr/local/bin/uvx /usr/local/bin/uvx
|
|
|
|
# Bring the venv (with all wheels) and the source tree (including the
|
|
# now-compiled QJL .so files and the build/ artifacts).
|
|
COPY --from=builder /workspace /workspace
|
|
|
|
WORKDIR /workspace
|
|
|
|
# Sanity-check the import surface at build time so we fail the image
|
|
# build instead of the first `docker run`.
|
|
RUN python -c "from training.model_registry import REGISTRY; print('registry size:', len(REGISTRY))" \
|
|
&& python -c "import torch; print('torch', torch.__version__, 'cuda', torch.version.cuda)" \
|
|
&& python -c "import triton; print('triton', triton.__version__)"
|
|
|
|
ENTRYPOINT ["/bin/bash"]
|