swactor/apps/myelin/node-image/Dockerfile.job-tinygrad

38 lines
1.3 KiB
Text
Raw Normal View History

# Minimal job image: Myelin agent + Python binding + tinygrad CUDA runtime.
# Build from the workspace root after building myelin-node:latest:
# docker build -f apps/myelin/node-image/Dockerfile.job-tinygrad -t myelin-job-tinygrad:cuda12.6 .
ARG BASE_IMAGE=myelin-node:latest
FROM ubuntu:24.04 AS python-binding
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
curl \
pkg-config \
python3-dev && \
rm -rf /var/lib/apt/lists/*
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
ENV PATH=/root/.cargo/bin:${PATH}
WORKDIR /src
COPY . .
RUN cargo build --release -p python
FROM ${BASE_IMAGE}
RUN apt-get update && \
apt-get install -y --no-install-recommends python3 python3-pip && \
python3 -m pip install --break-system-packages --no-cache-dir tinygrad==0.11.0 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* \
/var/cache/apt/archives/* \
/root/.cache/pip
COPY --from=python-binding /src/target/release/libswactor.so /usr/local/lib/python3.12/dist-packages/swactor.so
COPY apps/myelin/jobs/tiny_linear_inference.py /usr/local/share/myelin/tiny_linear_inference.py
ENV CUDA_PTX=1 \
DEV=CUDA \
PYTHONPATH=/usr/local/lib/python3.12/dist-packages