Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
3e7d93e
Add Intel Arc GPU detection and XPU PyTorch install to Windows installer
legobele Jul 31, 2026
b88db27
Fix Intel XPU detection and install path for PR #7706
danielhanchen Aug 2, 2026
7d45c78
Keep install.sh diagnostics in parity with the install.ps1 xpu family
danielhanchen Aug 2, 2026
9f82696
Tighten the Intel XPU comments in install.ps1
danielhanchen Aug 2, 2026
285e0c0
Address Codex review on the Intel XPU path
danielhanchen Aug 2, 2026
65494a2
Address the second Codex round on the Intel XPU path
danielhanchen Aug 2, 2026
be50e52
Address the third Codex round on the Intel XPU path
danielhanchen Aug 2, 2026
1fb38ed
Bound the XPU probes, repair xpu pins in install.sh, and floor bitsan…
danielhanchen Aug 2, 2026
1518551
Floor bitsandbytes on the Studio XPU migration and on an explicit xpu…
danielhanchen Aug 2, 2026
a8dcf9f
Tighten the Intel XPU comments across the three installers
danielhanchen Aug 2, 2026
48722b0
Bound the Intel WMI scan, bound the stale flavor probe, and stop CUDA…
danielhanchen Aug 2, 2026
3249272
Tighten the comments added with the bounded scan and Triton replacement
danielhanchen Aug 2, 2026
75e2809
Stage the Triton replacement behind a download so the uninstall canno…
danielhanchen Aug 2, 2026
95eed2e
Windows: harden the Intel registry fallback and declare the XPU insta…
danielhanchen Aug 3, 2026
237cf1e
Studio: show the Intel XPU runtime row in the About tab
danielhanchen Aug 3, 2026
2603fc8
Windows: reach Intel XPU through a localized name, a stale fast path …
danielhanchen Aug 3, 2026
af928dd
Windows: move the install manifest across the Triton swap instead of …
danielhanchen Aug 3, 2026
83d188c
Windows: confirm the install manifest actually moved before the Trito…
danielhanchen Aug 3, 2026
bb71199
Windows: key the XPU fast-path remediation off the installed wheel, n…
danielhanchen Aug 3, 2026
132f639
Windows: reconcile Intel names for hybrid GPUs, and stop the XPU esca…
danielhanchen Aug 3, 2026
747dca7
Windows: keep the WMI adapter list an array so the Intel re-label app…
danielhanchen Aug 3, 2026
ead3422
Windows: give pin-only XPU installs the 2.6 floor, and treat an unrea…
danielhanchen Aug 3, 2026
faf312e
Windows XPU: probe the preserved venv, drop torchaudio on ARM64, and …
danielhanchen Aug 3, 2026
7c55196
Studio: stop the xpu label test from forbidding a partial locale
danielhanchen Aug 3, 2026
275ee5d
Linux XPU: hoist the bitsandbytes pass out of the fresh-install arm
danielhanchen Aug 3, 2026
27984e8
Report the XPU runtime before the hardware summary, and show every ru…
danielhanchen Aug 3, 2026
445e826
POSIX: recognise a working XPU runtime, and raise the bitsandbytes fl…
danielhanchen Aug 3, 2026
439a3fc
POSIX XPU: make the bitsandbytes step nonfatal, bound the probe, and …
danielhanchen Aug 3, 2026
67f7038
Linux XPU: swap generic Triton, gate the pin repair on the version, a…
danielhanchen Aug 3, 2026
29245ea
Merge commit '67f7038cae2c992855e861270d94eb721ee32b40' into pr-7706-…
danielhanchen Aug 3, 2026
87df011
Add staging CI workflows for unslothai/unsloth#7706
danielhanchen Aug 3, 2026
2116aba
Staging: run the XPU shell suites on all three runners
danielhanchen Aug 3, 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
14 changes: 14 additions & 0 deletions .github/workflows/cross-platform-parity-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ on:
- 'tests/python/test_windows_python_venv_hardening.py'
- 'tests/sh/test_install_rollback_lifecycle.sh'
- 'tests/studio/test_install_rollback_lifecycle.ps1'
- 'tests/studio/test_intel_registry_fallback.ps1'
- 'studio/setup.ps1'
- 'tests/studio/test_setup_xpu_runtime_prereport.ps1'
- '.github/workflows/cross-platform-parity-ci.yml'
push:
branches: [main]
Expand All @@ -39,6 +42,9 @@ on:
- 'tests/python/test_windows_python_venv_hardening.py'
- 'tests/sh/test_install_rollback_lifecycle.sh'
- 'tests/studio/test_install_rollback_lifecycle.ps1'
- 'tests/studio/test_intel_registry_fallback.ps1'
- 'studio/setup.ps1'
- 'tests/studio/test_setup_xpu_runtime_prereport.ps1'
- '.github/workflows/cross-platform-parity-ci.yml'
workflow_dispatch:

Expand Down Expand Up @@ -81,6 +87,14 @@ jobs:
if: runner.os == 'Windows'
shell: pwsh
run: pwsh -NoProfile -File tests/studio/test_install_rollback_lifecycle.ps1
# Mocks the registry cmdlets rather than reading a hive, so it runs on all three.
- name: Intel registry fallback tests
shell: pwsh
run: pwsh -NoProfile -File tests/studio/test_intel_registry_fallback.ps1
# Same reason: the filesystem is mocked, so it does not need a real venv or Windows.
- name: Setup XPU pre-report tests
shell: pwsh
run: pwsh -NoProfile -File tests/studio/test_setup_xpu_runtime_prereport.ps1
- name: POSIX rollback lifecycle tests
if: runner.os == 'Linux'
run: sh tests/sh/test_install_rollback_lifecycle.sh
47 changes: 47 additions & 0 deletions .github/workflows/staging-7706-macos-14.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "staging-7706 macos-14"
on:
push:
branches: ["pr-7706-xplat-ci"]
paths:
- 'studio/frontend/src/features/settings/tabs/about-tab.tsx'
- 'studio/frontend/src/hooks/use-hardware-info.ts'
- 'studio/frontend/src/i18n/locales/ar.ts'
- 'studio/frontend/src/i18n/locales/de.ts'
- 'studio/frontend/src/i18n/locales/en.ts'
- 'studio/frontend/src/i18n/locales/es.ts'
- 'studio/frontend/src/i18n/locales/fr.ts'
- 'studio/frontend/src/i18n/locales/hi.ts'
- 'studio/frontend/src/i18n/locales/ja.ts'
- 'studio/frontend/src/i18n/locales/ko.ts'
- 'studio/frontend/src/i18n/locales/pt-br.ts'
- 'studio/frontend/src/i18n/locales/ru.ts'
- 'studio/frontend/src/i18n/locales/zh-CN.ts'
- 'studio/install_python_stack.py'
- 'studio/setup.ps1'
- 'studio/setup.sh'
- '.github/workflows/staging-7706-macos-14.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
defaults:
run:
shell: bash
jobs:
test:
runs-on: macos-14
timeout-minutes: 30
env:
UNSLOTH_COMPILE_DISABLE: '1'
UNSLOTH_IS_PRESENT: '1'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python -m pip install -r studio/backend/requirements/studio.txt pytest pytest-asyncio pytest-timeout python-multipart
- run: rc=0; PYTHONPATH=studio/backend python -m pytest tests/python/test_tokenizers_and_torch_constraint.py tests/studio/test_about_tab_xpu_runtime_contract.py -q --tb=short -k 'not llama_cpp_load_progress_live and not TestGpuAutoSelection and not TestPreSpawnGpuResolution and not TestPerGpuFitGuardAllCounts and not TestTransformersIntrospection and not test_returns_cuda_when_cuda_available and not test_calls_cuda_cache_when_cuda' || rc=$?; if [ "$rc" = "5" ]; then echo "no tests ran (deps absent on this runner)"; rc=0; fi; exit "$rc"
47 changes: 47 additions & 0 deletions .github/workflows/staging-7706-ubuntu-latest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "staging-7706 ubuntu-latest"
on:
push:
branches: ["pr-7706-xplat-ci"]
paths:
- 'studio/frontend/src/features/settings/tabs/about-tab.tsx'
- 'studio/frontend/src/hooks/use-hardware-info.ts'
- 'studio/frontend/src/i18n/locales/ar.ts'
- 'studio/frontend/src/i18n/locales/de.ts'
- 'studio/frontend/src/i18n/locales/en.ts'
- 'studio/frontend/src/i18n/locales/es.ts'
- 'studio/frontend/src/i18n/locales/fr.ts'
- 'studio/frontend/src/i18n/locales/hi.ts'
- 'studio/frontend/src/i18n/locales/ja.ts'
- 'studio/frontend/src/i18n/locales/ko.ts'
- 'studio/frontend/src/i18n/locales/pt-br.ts'
- 'studio/frontend/src/i18n/locales/ru.ts'
- 'studio/frontend/src/i18n/locales/zh-CN.ts'
- 'studio/install_python_stack.py'
- 'studio/setup.ps1'
- 'studio/setup.sh'
- '.github/workflows/staging-7706-ubuntu-latest.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
defaults:
run:
shell: bash
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 30
env:
UNSLOTH_COMPILE_DISABLE: '1'
UNSLOTH_IS_PRESENT: '1'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python -m pip install -r studio/backend/requirements/studio.txt pytest pytest-asyncio pytest-timeout python-multipart
- run: rc=0; PYTHONPATH=studio/backend python -m pytest tests/python/test_tokenizers_and_torch_constraint.py tests/studio/test_about_tab_xpu_runtime_contract.py -q --tb=short -k 'not llama_cpp_load_progress_live and not TestGpuAutoSelection and not TestPreSpawnGpuResolution and not TestPerGpuFitGuardAllCounts and not TestTransformersIntrospection and not test_returns_cuda_when_cuda_available and not test_calls_cuda_cache_when_cuda' || rc=$?; if [ "$rc" = "5" ]; then echo "no tests ran (deps absent on this runner)"; rc=0; fi; exit "$rc"
47 changes: 47 additions & 0 deletions .github/workflows/staging-7706-windows-latest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "staging-7706 windows-latest"
on:
push:
branches: ["pr-7706-xplat-ci"]
paths:
- 'studio/frontend/src/features/settings/tabs/about-tab.tsx'
- 'studio/frontend/src/hooks/use-hardware-info.ts'
- 'studio/frontend/src/i18n/locales/ar.ts'
- 'studio/frontend/src/i18n/locales/de.ts'
- 'studio/frontend/src/i18n/locales/en.ts'
- 'studio/frontend/src/i18n/locales/es.ts'
- 'studio/frontend/src/i18n/locales/fr.ts'
- 'studio/frontend/src/i18n/locales/hi.ts'
- 'studio/frontend/src/i18n/locales/ja.ts'
- 'studio/frontend/src/i18n/locales/ko.ts'
- 'studio/frontend/src/i18n/locales/pt-br.ts'
- 'studio/frontend/src/i18n/locales/ru.ts'
- 'studio/frontend/src/i18n/locales/zh-CN.ts'
- 'studio/install_python_stack.py'
- 'studio/setup.ps1'
- 'studio/setup.sh'
- '.github/workflows/staging-7706-windows-latest.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
defaults:
run:
shell: bash
jobs:
test:
runs-on: windows-latest
timeout-minutes: 30
env:
UNSLOTH_COMPILE_DISABLE: '1'
UNSLOTH_IS_PRESENT: '1'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: python -m pip install -r studio/backend/requirements/studio.txt pytest pytest-asyncio pytest-timeout python-multipart
- run: rc=0; PYTHONPATH=studio/backend python -m pytest tests/python/test_tokenizers_and_torch_constraint.py tests/studio/test_about_tab_xpu_runtime_contract.py -q --tb=short -k 'not llama_cpp_load_progress_live and not TestGpuAutoSelection and not TestPreSpawnGpuResolution and not TestPerGpuFitGuardAllCounts and not TestTransformersIntrospection and not test_returns_cuda_when_cuda_available and not test_calls_cuda_cache_when_cuda' || rc=$?; if [ "$rc" = "5" ]; then echo "no tests ran (deps absent on this runner)"; rc=0; fi; exit "$rc"
34 changes: 34 additions & 0 deletions .github/workflows/xpu-sh-suites.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Not part of the PR: a staging-only harness so the new tests/sh XPU suites get real runner
# time. Upstream they run under studio-backend-ci (pull_request + tests/** paths), which does
# not fire on a fork PR and is disabled on this staging repo, so nothing else executes them.
# staging_ci.py rebuilds this branch from the PR head, which drops this file, so it has to be
# re-pushed after each restage -- the push is also what triggers it.
name: XPU shell suites
on:
push:
branches: [pr-7706-xplat-ci]
jobs:
sh:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-14, windows-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- name: XPU shell suites
shell: bash
run: |
set -e
# Glob, not a fixed list: a suite added later must not silently go unrun.
found=0
for s in tests/sh/test_*xpu*.sh; do
[ -f "$s" ] || continue
found=$((found + 1))
echo "::group::$s"
bash "$s"
echo "::endgroup::"
done
echo "ran $found suite(s)"
[ "$found" -ge 3 ] || { echo "expected at least 3 XPU suites, found $found"; exit 1; }
Loading
Loading