Repository navigation
sycl: images on the SYCL port (CPU encoder, --vision cpu) - #2495
skipzx-lab wants to merge 1 commit into
Conversation
The SYCL engine already carried the --vision / GENI / M-RoPE path from the port; this wires it up. strata-vision (tools/vision, CPU) is built in the strata-sycl-dev image by sycl/tools/build-vision.sh and runs on the host; server_intel.py writes the embeddings file under /dev/shm/strata-sycl-vision (else <data root>/vision-tmp) and strata-sycl.sh mounts those read-only into the engine's container when --vision is in the args. setup_intel.py maps --vision cpu|yes|gpu to the CPU encoder (off by default) and writes the config's vision section with host paths. Opt-in: without --vision the config is byte-identical to before (tools/test_setup_sycl_vision.py checks it against the pre-change output).
0b1b994 to
00532db
Compare
|
Tested on two Arc Pro B70s with a layer split (26) and
So the layer split works here, with pipeline windows too. We investigated (myself and Claude Opus 5.5 in Claude Code) and I reviewed the findings and ran every test on my two Arc Pro B70s on my CachyOS machine. |
|
Overlap note: two other open PRs add the same feature (images on the SYCL port with the CPU encoder): #2229 ( |
|
Thanks for the overlap note. I've read #2229: it covers the core wiring this PR does (the What this PR adds on top, which I'd rebase onto #2229 once it lands:
The |
|
Happy to rebase #2483 whenever either lands. |
|
Thanks for the pull request. We're resetting the tracker for 0.2.0-beta. There are more than 1,300 open issues and pull requests, too many for us to review properly, so we're closing everything that isn't being worked on right now. Closed here does not mean rejected. To reopen it takes about two minutes:
The rules are in CONTRIBUTING.md. |
Title
Issue: none. docs/INTEL.md listed images as "Not done" on the SYCL port.
Summary
This turns on images for the Intel SYCL port. The engine already had
--vision/GENI/ M-RoPE from the port, and that code works unchanged. This PR adds what was missing around it: a way to build the CPU encoder, setup support, and getting the embeddings file into the engine's container. Images stay opt-in (--vision cpu). Without the flag the config is byte-identical to before.What changed
sycl/tools/build-vision.sh(new): buildsstrata-vision(tools/vision, CPU, the same cmake flags as setup'sbuild_vision_cpu) in thestrata-sycl-devimage.libgomp.so.1next to the binary and writes a launcher,build-vision/strata-vision.sh, so a host without an OpenMP runtime can run it.third_party/llama.cppit ends withBUILD EXIT 1and says what to run.sycl/setup_intel.py:--vision cputurns images on.yesandgpualso select the CPU encoder and print a warning, because the port has no GPU encoder. Images stay off by default.to_sycl()keeps thevisionsection with host paths (the encoder runs on the host) and the launcher asexe, and adds--visionexactly once.--vram-reserve-mib/--visionchecks ininstall()now see the--flag=valueform too. Before,--vision=cpuor--vram-reserve-mib=Ngot a second copy of the flag added.sycl/serve/server_intel.py:install_vision_paths()runs only with avisionsection. It puts the embeddings file under/dev/shm/strata-sycl-vision, or<data root>/vision-tmpwhen/dev/shmis short, both mode 0700, and exportsSTRATA_SYCL_VISION_DIRS.sycl/serve/strata-sycl.sh: with--visionin the args, it mounts those directories read-only at the same paths. Without--visionnothing changes.tools/test_setup_sycl_vision.py(new, 33 tests, no GPU or network) covers:to_syclwith and without images, the latter checked against the output of the code before this change;docker;bash -n, andbuild-vision.shwithout llama.cpp.docs/INTEL.md:Extra Notes
--resident-experts, and the encoder on 4 threads.llama-mtmd-cli(SYCL, the same GGUF and mmproj) gives exactly the same four wrong answers, so this comes from the model at this quant, not from the port.build-vision.shin the dev image. No CUDA or HIP files are touched.python -m unittest tools.test_setup_sycl_vision tools.test_setup_sycl tools.test_setup_small_cardgives 67 OK.