Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
1b32554
Add automated Unsloth CUDA-Linux prebuilt build workflow
oobabooga May 26, 2026
ecc3c09
Change the daily compilation time
oobabooga May 26, 2026
9dd3c56
Drop llama-cli and strip the binaries
oobabooga May 27, 2026
8d19e60
Add Vulkan builds (Windows and Linux) to llama-prebuilt-sha256.json f…
oobabooga May 27, 2026
0ff45c5
Add upstream arm64 assets to the sha256 index
oobabooga May 27, 2026
3202476
Add DGX Spark prebuilts (ARM64 CUDA)
oobabooga May 28, 2026
cae0c62
Add Strix Halo and Radeon ROCm prebuilts based on lemonade-sdk/llamac…
oobabooga May 28, 2026
0e2edd5
Bump cuda-toolkit action to v0.2.35 and drop unused ROCm commit input
oobabooga May 28, 2026
024196a
Tidy up some comments
oobabooga May 28, 2026
9d94ef0
Update the job names
oobabooga May 28, 2026
3d944b7
Shorten workflow input descriptions
oobabooga May 28, 2026
5a9bea2
Publish releases atomically and drop the prepare-matrix job
oobabooga May 28, 2026
25a0c76
Add a retry mechanism to the final assemble + publish step
oobabooga May 28, 2026
19ccbba
Trim package_bundle docstring
oobabooga May 28, 2026
d21f42a
Merge remote-tracking branch 'unsloth/master' into unsloth-build
oobabooga Jun 1, 2026
65daff3
Absorb the macOS workflow into the build pipeline
oobabooga Jun 1, 2026
932a4c9
Add Windows CUDA workflow
oobabooga Jun 1, 2026
6ab3c1a
Attach upstream source tarballs to the release
oobabooga Jun 1, 2026
1c459fb
Add 6h release aging filter and set schedule to 22:13 UTC
oobabooga Jun 1, 2026
9296fd5
Build CUDA 13.3 (Linux + Windows) via NVIDIA redist
oobabooga Jun 1, 2026
b9acf20
Fix review findings: Windows CUDA matrix, zip bundle reader, aging ma…
oobabooga Jun 1, 2026
a772914
Rename label to 'CUDA Windows'
oobabooga Jun 1, 2026
cc3b7bf
Fix macOS load gate: bash 3.2 has no mapfile
oobabooga Jun 1, 2026
244f587
Fix macOS load gate: llama-quantize --help exits 1, check output not …
oobabooga Jun 2, 2026
d259dca
Bundle libatomic.so.1 in Linux ROCm bundles (lemonade-sdk/lemonade#1349)
oobabooga Jun 2, 2026
eb93359
Declare sm_103 (B300/GB300) coverage for sm_100 bundles in the manifest
oobabooga Jun 2, 2026
df2cfe4
Refuse to publish a partial build set (only_profile/gfx_target/operat…
oobabooga Jun 3, 2026
860e2ba
ROCm: full clone so LLAMA_BUILD_NUMBER is correct (was baking b1)
oobabooga Jun 3, 2026
70ca842
Rename unsloth-prebuilt-windows-cuda.yml to unsloth-prebuilt-cuda-win…
oobabooga Jun 9, 2026
e7f6a0b
ci: build arm64 macOS slice on macos-26 SDK (keep minos 14.0) (#2)
danielhanchen Jun 9, 2026
44e8a37
ci: refuse to publish a partial CUDA set (cuda12 must match cuda13 x6…
danielhanchen Jun 9, 2026
7c1c4ca
manifest: record upstream win-cuda binary hashes under their own names
shimmyshimmer Jun 10, 2026
cef2358
ci: verify macOS, ROCm, and arm64 bundles before publish, not just CU…
shimmyshimmer Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
198 changes: 0 additions & 198 deletions .github/workflows/unsloth-macos-prebuilt.yml

This file was deleted.

181 changes: 181 additions & 0 deletions .github/workflows/unsloth-prebuilt-cuda-windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
name: "Unsloth prebuilt: CUDA Windows"

# Reusable child of unsloth-prebuilt.yml. Builds the per-profile CUDA Windows
# bundles the parent's `resolve` job filtered into `matrix`. Each entry uploads
# a single app-*.zip artifact for the parent's assemble step to pick up.
#
# Mirrors unsloth-prebuilt-cuda.yml (Linux), adapted for Windows: MSVC + Ninja
# toolchain, BoringSSL instead of system OpenSSL, no RPATH (Windows resolves
# DLLs from the executable's directory), and a .zip archive. CUDA compiles
# entirely in software here -- no GPU is present on the runner.

on:
workflow_call:
inputs:
tag:
description: 'Upstream llama.cpp release tag (b####), resolved by parent'
required: true
type: string
commit:
description: 'Upstream commit SHA for that tag, resolved by parent'
required: true
type: string
matrix:
description: 'Matrix JSON {include:[...]} produced by the parent resolve job'
required: true
type: string

permissions:
contents: read

jobs:
build:
name: x64/${{ matrix.profile }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix: ${{ fromJSON(inputs.matrix) }}
defaults:
run:
shell: pwsh
steps:
- name: Checkout build tooling (this repo)
uses: actions/checkout@v6
with:
path: tooling

- name: Checkout upstream source @ ${{ inputs.tag }}
uses: actions/checkout@v6
with:
repository: ggml-org/llama.cpp
ref: ${{ inputs.tag }}
path: src
# Full history: cmake/build-info.cmake runs `git rev-list --count HEAD`
# to bake LLAMA_BUILD_NUMBER into llama-server --version as b<N>.
# A shallow clone would bake in "b1" instead.
fetch-depth: 0

- name: ccache
uses: hendrikmuhs/ccache-action@v1.2.20
with:
key: cuda-${{ matrix.cuda }}-windows-${{ matrix.profile }}
variant: ccache
evict-old-files: 14d

- uses: actions/setup-python@v6
with:
python-version: "3.11"

- name: Install Ninja
run: choco install ninja --no-progress

- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1

# Jimver's action has no mapping for CUDA 13.3 yet, so for that version we
# fall back to llama.cpp's own install method: curl the individual NVIDIA
# redist component archives and assemble the toolkit by hand. Block copied
# verbatim from ggml-org/llama.cpp .github/actions/windows-setup-cuda
# (the cuda_version == '13.3' case). Any other version uses Jimver.
- name: Install CUDA toolkit 13.3 (NVIDIA redist)
if: matrix.cuda == '13.3'
run: |
mkdir -p "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3"
choco install unzip -y
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_crt/windows-x86_64/cuda_crt-windows-x86_64-13.3.33-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/windows-x86_64/cuda_cudart-windows-x86_64-13.3.29-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvcc/windows-x86_64/cuda_nvcc-windows-x86_64-13.3.33-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvrtc/windows-x86_64/cuda_nvrtc-windows-x86_64-13.3.33-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libcublas/windows-x86_64/libcublas-windows-x86_64-13.5.1.27-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/libnvvm/windows-x86_64/libnvvm-windows-x86_64-13.3.33-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_nvtx/windows-x86_64/cuda_nvtx-windows-x86_64-13.3.29-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cuda_profiler_api/windows-x86_64/cuda_profiler_api-windows-x86_64-13.3.27-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/visual_studio_integration/windows-x86_64/visual_studio_integration-windows-x86_64-13.3.27-archive.zip"
curl -O "https://developer.download.nvidia.com/compute/cuda/redist/cccl/windows-x86_64/cccl-windows-x86_64-13.3.3.3.1-archive.zip"
unzip '*.zip' -d "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3"
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cuda_crt-windows-x86_64-13.3.33-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cuda_cudart-windows-x86_64-13.3.29-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cuda_nvcc-windows-x86_64-13.3.33-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cuda_nvrtc-windows-x86_64-13.3.33-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\libcublas-windows-x86_64-13.5.1.27-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\libnvvm-windows-x86_64-13.3.33-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cuda_nvtx-windows-x86_64-13.3.29-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cuda_profiler_api-windows-x86_64-13.3.27-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\visual_studio_integration-windows-x86_64-13.3.27-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\cccl-windows-x86_64-13.3.3.3.1-archive\*" "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" /E /I /H /Y
echo "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
echo "CUDA_PATH_V13_3=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v13.3" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8

- name: Install CUDA toolkit ${{ matrix.cuda }} (Jimver)
if: matrix.cuda != '13.3'
uses: Jimver/cuda-toolkit@v0.2.35
id: cuda-toolkit
with:
cuda: ${{ matrix.cuda }}
method: 'network'

- name: Set up CUDA environment (Jimver)
if: matrix.cuda != '13.3'
run: |
echo "CUDA_PATH=$env:CUDA_PATH" >> $env:GITHUB_ENV
echo "CUDA_HOME=$env:CUDA_PATH" >> $env:GITHUB_ENV

- name: Verify CUDA
run: nvcc --version

- name: Configure
working-directory: src
run: |
# CMAKE_CUDA_ARCHITECTURES is the explicit per-profile arch list (the
# whole point of the matrix). ccache launchers cache nvcc + cl.exe;
# no RPATH knobs -- Windows loads sibling DLLs from the binary's dir.
$archs = "${{ matrix.archs }}".Replace(' ', ';')
cmake -S . -B build -G Ninja `
-DCMAKE_BUILD_TYPE=Release `
-DGGML_NATIVE=OFF `
-DGGML_BACKEND_DL=ON `
-DGGML_CPU_ALL_VARIANTS=ON `
-DGGML_RPC=ON `
-DGGML_CUDA=ON `
-DGGML_CUDA_CUB_3DOT2=ON `
-DLLAMA_BUILD_TESTS=OFF `
-DLLAMA_BUILD_EXAMPLES=OFF `
-DLLAMA_BUILD_BORINGSSL=ON `
-DCMAKE_CUDA_ARCHITECTURES="$archs" `
-DCMAKE_C_COMPILER_LAUNCHER=ccache `
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache `
-DCMAKE_CUDA_COMPILER_LAUNCHER=ccache

- name: Build
working-directory: src
run: |
# -j 2: nvcc TUs with the full arch fanout can spike past 12 GB each,
# and the GitHub-hosted runners only have ~16 GB.
cmake --build build --config Release -j 2 `
--target llama-server llama-quantize

- name: Package bundle
env:
PLATFORM: windows
ARCH: x64
BIN_DIR: ${{ github.workspace }}/src/build/bin
SRC_DIR: ${{ github.workspace }}/src
OUT_DIR: ${{ github.workspace }}/dist
TAG: ${{ inputs.tag }}
SOURCE_COMMIT: ${{ inputs.commit }}
PROFILE: ${{ matrix.profile }}
LINE: ${{ matrix.line }}
KLASS: ${{ matrix.klass }}
RANK: ${{ matrix.rank }}
TOOLKIT_LINE: ${{ matrix.toolkit_line }}
DOCKER_IMAGE: github-hosted ${{ matrix.runner }}, CUDA ${{ matrix.cuda }} ${{ matrix.cuda == '13.3' && '(NVIDIA redist)' || '(Jimver)' }}
ARCHS: ${{ matrix.archs }}
run: python tooling/scripts/unsloth/package_bundle.py

- name: Upload bundle artifact
uses: actions/upload-artifact@v6
with:
name: app-${{ inputs.tag }}-windows-x64-${{ matrix.profile }}
path: dist/app-${{ inputs.tag }}-windows-x64-${{ matrix.profile }}.zip
if-no-files-found: error
Loading