| |
|
|
| ARG FROM_IMAGE_NAME |
| ARG WHEEL_DIR=/workspace/wheels |
|
|
| FROM ${FROM_IMAGE_NAME} as main |
| ENV PIP_CONSTRAINT="" |
| ENV DEBIAN_FRONTEND=noninteractive |
| ARG UV_VERSION=0.7.2 |
| ARG YQ_VERSION=4.44.1 |
| ENV PATH="/root/.local/bin:$PATH" |
| ARG UV_PROJECT_ENVIRONMENT=/opt/venv |
| ENV UV_PROJECT_ENVIRONMENT=${UV_PROJECT_ENVIRONMENT} |
| ENV VIRTUAL_ENV=$UV_PROJECT_ENVIRONMENT |
| ENV PATH="$UV_PROJECT_ENVIRONMENT/bin:$PATH" |
| ENV UV_LINK_MODE=copy |
|
|
| RUN bash -ex <<"EOF" |
| apt-get update |
| apt-get install -y --no-install-recommends gettext python3-venv psmisc |
| apt-get clean |
| python -m venv /opt/jet |
| wget https://github.com/mikefarah/yq/releases/download/v${YQ_VERSION}/yq_linux_amd64 -O /usr/local/bin/yq |
| chmod a+x /usr/local/bin/yq |
| curl -LsSf https://astral.sh/uv/${UV_VERSION}/install.sh | sh |
| EOF |
|
|
| ARG WHEEL_DIR |
| COPY README.md pyproject.toml uv.lock /workspace/ |
| COPY megatron/core/__init__.py /workspace/megatron/core/ |
| COPY megatron/core/package_info.py /workspace/megatron/core/ |
| RUN --mount=type=cache,target=/root/.cache/uv \ |
| bash -ex <<"EOF" |
| uv venv ${UV_PROJECT_ENVIRONMENT} --system-site-packages |
| uv sync --extra dev --extra mlm --link-mode copy --locked \ |
| --no-install-package torch \ |
| --no-install-package torchvision \ |
| --no-install-package triton \ |
| --no-install-package nvidia-cublas-cu12 \ |
| --no-install-package nvidia-cuda-cupti-cu12 \ |
| --no-install-package nvidia-cuda-nvrtc-cu12 \ |
| --no-install-package nvidia-cuda-runtime-cu12 \ |
| --no-install-package nvidia-cudnn-cu12 \ |
| --no-install-package nvidia-cufft-cu12 \ |
| --no-install-package nvidia-cufile-cu12 \ |
| --no-install-package nvidia-curand-cu12 \ |
| --no-install-package nvidia-cusolver-cu12 \ |
| --no-install-package nvidia-cusparse-cu12 \ |
| --no-install-package nvidia-cusparselt-cu12 \ |
| --no-install-package nvidia-nccl-cu12 |
| EOF |
| COPY assets/ /opt/data/ |
| ENV UV_PYTHON=$UV_PROJECT_ENVIRONMENT/bin/python |
|
|
| |
| FROM main as jet |
| ARG JET_API_VERSION |
| ENV PATH="$PATH:/opt/jet/bin" |
| RUN --mount=type=secret,id=JET_INDEX_URLS bash -ex <<"EOF" |
| JET_INDEX_URLS=$(cat /run/secrets/JET_INDEX_URLS) |
| python -m venv /opt/jet |
| /opt/jet/bin/pip install --no-cache-dir $JET_INDEX_URLS \ |
| jet-api==$JET_API_VERSION |
| EOF |
|
|
| RUN --mount=type=secret,id=JET_INDEX_URLS \ |
| --mount=type=secret,id=LOGGER_INDEX_URL bash -ex <<"EOF" |
| JET_INDEX_URLS=$(cat /run/secrets/JET_INDEX_URLS) |
| LOGGER_INDEX_URL=$(cat /run/secrets/LOGGER_INDEX_URL) |
| uv pip install --no-cache-dir --upgrade $LOGGER_INDEX_URL "one-logger" |
| uv pip install --no-cache-dir --upgrade "setuptools<80.0.0" |
| uv pip install --no-cache-dir --upgrade $JET_INDEX_URLS "jet-client~=2.0" |
| EOF |
| |
|
|