docker: second review pass fixes
- Dockerfile: lift numba past vllm's 0.61.2 pin after the numpy>=2.4 re-upgrade; 0.61.2 refuses numpy 2.3+ at import time and the stack cannot move numpy down. Verified numba 0.65 + numpy 2.4.6 + vllm import cleanly together. - docker-publish.yml: resolve UNSLOTH_ZOO_REF in a step that mirrors the pushed tag only when the tag exists in unsloth-zoo (the zoo currently cuts no tags, so blind mirroring broke every tag publish); falls back to main. - Dockerfile.studio: Studio venv stays on cu128 for arm64 too, matching the base venv (cu130 wheels would lift the driver floor to 580+), and gets the same NVRTC cu13 swap for DGX Spark / GB10 sm_121 support. - docker_confirm.sh: do not drop to CPU mode when docker info lacks a nvidia runtime entry; CDI installs and Docker Desktop WSL2 expose GPUs without one. The phase 3 --gpus probe is now the authority. - docker_confirm.ps1: GPU selector built as an args array; comma device lists get version-aware CSV quoting (native arg passing changed in PowerShell 7.3). - studio_launch.sh: no fixed Jupyter default password; generate a random one and print it when JUPYTER_PASSWORD is unset. Env snapshot for SSH sessions now written via shlex.quote instead of sed so values with quotes or command substitution cannot break or inject into /etc/profile.d. - install.ps1: honour UNSLOTH_TORCH_INDEX_FAMILY like install.sh does.
This commit is contained in:
parent
f4e378e8b5
commit
81b0d1ef10
7 changed files with 120 additions and 40 deletions
29
.github/workflows/docker-publish.yml
vendored
29
.github/workflows/docker-publish.yml
vendored
|
|
@ -111,6 +111,24 @@ jobs:
|
|||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
# Mirror the unsloth tag into the zoo ONLY when that tag actually
|
||||
# exists there. unsloth's v* tags are Studio releases the zoo never
|
||||
# cuts (the zoo repo currently has no tags at all), so blindly
|
||||
# mirroring github.ref_name made every tag publish fail inside the
|
||||
# Dockerfile's zoo install.
|
||||
- name: Resolve unsloth-zoo ref
|
||||
id: zoo_ref
|
||||
run: |
|
||||
REF="${{ github.event.inputs.unsloth_zoo_ref }}"
|
||||
if [ -z "$REF" ] && [ "${{ startsWith(github.ref, 'refs/tags/') }}" = "true" ]; then
|
||||
if git ls-remote --exit-code --tags https://github.com/unslothai/unsloth-zoo \
|
||||
"refs/tags/${{ github.ref_name }}" >/dev/null 2>&1; then
|
||||
REF="${{ github.ref_name }}"
|
||||
fi
|
||||
fi
|
||||
echo "ref=${REF:-main}" >> "$GITHUB_OUTPUT"
|
||||
echo "unsloth-zoo ref: ${REF:-main}"
|
||||
|
||||
- name: Build and push (per-arch by digest)
|
||||
id: build
|
||||
uses: docker/build-push-action@v6
|
||||
|
|
@ -134,12 +152,11 @@ jobs:
|
|||
# scheduled runs: bake the triggering commit SHA. Falls back
|
||||
# to `main` for any other event class.
|
||||
UNSLOTH_REF=${{ github.event.inputs.unsloth_ref || (startsWith(github.ref, 'refs/tags/') && github.ref_name) || github.sha || 'main' }}
|
||||
# UNSLOTH_ZOO_REF mirrors the tag case (unsloth-zoo cuts the same
|
||||
# release tag, e.g. 2026.5.8, alongside unsloth) so release-tag
|
||||
# images install a matched zoo. SHA-based branch pushes can't be
|
||||
# mirrored -- the SHA doesn't exist in the zoo repo -- so they
|
||||
# fall through to `main`. Workflow-dispatch can override.
|
||||
UNSLOTH_ZOO_REF=${{ github.event.inputs.unsloth_zoo_ref || (startsWith(github.ref, 'refs/tags/') && github.ref_name) || 'main' }}
|
||||
# UNSLOTH_ZOO_REF comes from the resolve step above: explicit
|
||||
# workflow-dispatch input, else the pushed tag IF the zoo repo
|
||||
# has it, else `main`. SHA-based branch pushes always fall to
|
||||
# `main` -- the SHA doesn't exist in the zoo repo.
|
||||
UNSLOTH_ZOO_REF=${{ steps.zoo_ref.outputs.ref }}
|
||||
|
||||
# Stash the per-arch digest as an artifact for the merge job to pick up.
|
||||
# Filenames need to be unique across the matrix; `platform` contains a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue