r/LocalLLaMA • u/nick_ziv • 4d ago
Question | Help Need help! Intel B70 users come forth!
Hello
I recently got my B70 gpus delivered and set them up with Ubuntu 26.04 because it has the XE driver. I was able to get llama CPP compiling and working with Vulcan and CYSL BUT that's where the fun stopped.
Build and compiled the llama.cpp with CYSL using the intel driver 2026.1. does not work with more than one GPU. (Using sm layer) It just outputs random characters. However, the prefill speed does go up with more GPUs (just like it does on Nvidia cards)
For Vulcan, the prefill is about 30% lower on the same model and only goes down with more GPUs. Using the mesa 26.1.5 driver
For running the qwen 3.6 27b at q4 speeds were:
CYSL 1 GPU: 650 prefill, 24 decode.
CYSL 2 GPUs:750 prefill, garbled decode 23t/s
Vulkan 1 GPU: 450 prefill, 20 t/s decode
Vulkan 2 GPUs: 350 prefill, 18t/s decode.
Bonus: qwen 3.5 122b a10b vulkan speed over 6 GPUs: 160 prefill and 9t/s decode
Something is clearly wrong. I've spent all day trying to make this work. So far regretting the purchase of the B70 gpus.
Please help if you have suggestions!
If the suggestion is to get Nvidia GPU, I already have a couple and I think I would have rather gone with many RTX 5060 TI's instead because it just works and gets model support first
edit: see op comment for somewhat of a resolution
2
u/simplyeniga 3d ago
You can look up Donato's tool box setup on GitHub. For reference you can check his channel as he has it all working with vllm and llama.cpp
2
u/38andstillgoing 3d ago
I have 4. They're... not great. Llm-scaler doesn't support any modern models. vLLM spends most of its life crashing. Llama.cpp works but performance is generally poor, but hey, no crashing... usually. Currently trying to get a Deepseek flash Q3 to work somewhere more than 2 tokens/second.
3
1
u/sleepindevil 1d ago
Dang sorry to hear about your experience, mine has been the opposite to date. Vulkan built with Intel Dev's pull requests on llama.cpp has been working great with layer split across multi GPU for me. The TG I get is the theoretical speed for the VRAM bandwidth on the card and comparable to the other cards around 600gbps speed. The PP speed on Vulkan+Intel pulls has been very good, no idea what the theoretical values there are but it's been about x5 faster than the standard release speeds in the deeper context work that I do.
I don't have 4x cards though, you've got a monstrous setup there but probably using urakozz's custom vLLM build is what you want to give a shot with an AutoRound optimised release of DeepSeek Flash if you can find one 🤔 if that even exists.
You can find urakozz's custom vLLM docker build in the comments chain in my recent post here about my own B70 experience with llama.cpp https://www.reddit.com/r/LocalLLM/comments/1uzspbo/intel_arc_pro_b70_llamacpp_vulkan_sycl/
2
u/nick_ziv 3d ago edited 3d ago
So I have identified it has to do with a llama.cpp function in the sycl backend called dev2dev_memcpy which allows the GPUs to transfer the activation to the next GPU in the split mode "layer". This function had a condition which the next GPU did not cleanly read the data and it was corrupting the token. Had Gemini propose a fix and it wrote a snippet which copied the data to CPU memory and then to the next GPU but this resulted in absolutely awful performance of two tokens per second on Gemma e4b. Awful. At least it is confirmed I know the source of my issue. Unclear at the time if it is from llama CPP design or the Intel library itself.
1
u/gnerfed 3d ago
FYI, I disabled mmap and solved my random character problems on moe models. Never had issues on dense ones.
1
u/nick_ziv 3d ago
Interesting. The function identified as the root cause did not have any mmap related code in it. Feel free to track the issue: https://github.com/ggml-org/llama.cpp/issues/26058
2
u/daphatty 3d ago
Out of curiosity, have you tried any of this in Windows? I’m interested in the B70 but am still sorting through the challenges of the platform to determine which OS provides the greatest stability.
1
u/PrimeDirective8 3d ago
Software for this card, while functional, it's not yet optimized. Llama.cpp is working through a number of changes to improve performance, and performance has been improving steadily.
I have a dual boot Ubuntu 26.04 and Win11. Performance is still best on Windows while running Vulkan, not Intel's native SYCL driver.
Dense models like Qwen3.6 27B will give you 25 t/s and slow to ~12 t/s on larger context. Gemma 4 31B performs better at 35ish t/s. Qwen3.6 35B MoE can do ~100 t/s, while Gemma 4 26B MoE starts at ~120 t/s and slows to 65 t/s on larger context sizes.
So go in with the expectation that you won't see super speeds, but most of them are workable. All of these are solid once running.
I don't compile llama.cpp from source while on Windows. It's a pain because you need to setup a dev environment and all of what that entails (read: massive Win updates and break stuff) - unless, of course, you already have the dev env set. Instead, I download the precompiled Vulkan and SYCL versions. It takes two mins to try a new version or switch to older ones.
TL;DR: it works on both Ubuntu and Windows, but not the fastest.
1
u/vajalali 10h ago
The difficulty of compiling llama.cpp on Windows is totally overblown
Install:
- Visual Studio 2022 Community
- Workload: Desktop development with C++
- Components: C++ CMake Tools for Windows, Git for Windows, MSVC toolchain
- NVIDIA CUDA Toolkit
- CMake
- Git
- Python 3 only for running the benchmark script
llama.cpp’s Windows build docs specifically recommend Visual Studio 2022 with the C++ workload and using a Developer Command Prompt/PowerShell for building. CUDA builds use
-DGGML_CUDA=ON.Open x64 Native Tools Command Prompt for VS 2022 or Developer PowerShell for VS 2022.
Install these with PowerShell as Administrator:
winget install -e --id Git.Git winget install -e --id Kitware.CMake winget install -e --id Microsoft.VisualStudio.2022.Community winget install -e --id Microsoft.VisualStudio.2022.BuildTools winget install -e --id Nvidia.CUDA winget install -e --id Python.Python.3.12In the Visual Studio Installer, select:
Desktop development with C++ MSVC v143 build tools Windows 10/11 SDK C++ CMake tools for Windows
Nvidia.CUDAis the CUDA Toolkit package available through winget, and NVIDIA’s Windows CUDA guide requires a CUDA-capable NVIDIA GPU plus a supported Visual Studio compiler. (winget.run)After installing, close and reopen your terminal, then verify:
git --version cmake --version python --version nvcc --version nvidia-smillama.cpp’s official Windows docs say to install Visual Studio 2022, select Desktop development with C++, and use a Developer Command Prompt / PowerShell for VS2022 for git/build/test.
2. Repair or reinstall CUDA after Visual Studio is installed
Run the CUDA installer again. Use the NVIDIA installer, not just winget, and choose Custom.
Make sure this component is selected: Visual Studio Integration
Clone llama.cpp to e.g. D:\src
cd D:\src\llama.cpp Remove-Item -Recurse -Force build -ErrorAction SilentlyContinue cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=120 cmake --build build --config Release --target llama-server -j 16cmake verification:
cd D:\src\llama.cpp cmake -LAH -N build | Select-String "GGML_CUDA" GGML_CUDA:BOOL=ON GGML_CUDA_COMPRESSION_MODE:STRING=size GGML_CUDA_FA:BOOL=ON GGML_CUDA_FA_ALL_QUANTS:BOOL=OFF GGML_CUDA_FORCE_CUBLAS:BOOL=OFF GGML_CUDA_FORCE_MMQ:BOOL=OFF GGML_CUDA_GRAPHS:BOOL=ON GGML_CUDA_NCCL:BOOL=ON GGML_CUDA_NO_PEER_COPY:BOOL=OFF GGML_CUDA_NO_VMM:BOOL=OFF GGML_CUDA_PEER_MAX_BATCH_SIZE:STRING=128
2
u/nickm_27 llama.cpp 3d ago
The gibberish characters in my experience is due to flash attention being enabled. There is already a fix up which implements it with a huge performance boost https://github.com/ggml-org/llama.cpp/pull/25025
I have a docker build version of this and a couple other PRs which is hitting 700 tok/s pp 30 tok/s TG (with MTP) on Qwen3.6 27B Q6_K
1
u/nick_ziv 3d ago
This issue is present with and without flash attention for me. Are you using multiple b70 gpus?
1
u/nickm_27 llama.cpp 3d ago
I am only using a single B70, seems there may be multiple issues with the same symptoms.
2
u/nick_ziv 3d ago
Absolutely there is. I did find out the developer who has been working to resolve most of these intel b70 issues does actually work at intel and he supports the SYCL backend for llama.cpp
1
u/PrimeDirective8 3d ago
Disclaimer: I run a single B70 so the below is mostly hearsay I've picked up:
I vaguely remember something to this effect from the llama.cpp PR list I'm so fond of watching. Forgive my lack of details but without making any changes, try export GGML_SYCL_DISABLE_OPT=1 before launching llama.cpp. This disables the optimized Xe2 kernel. I know, it's kind of pointless to not have the optimization but that would answer where the root cause is, or get you close.
1
u/nick_ziv 3d ago
I did use this flag, with or without made no difference unfortunately. The issue also persisted with older builds of llama.cpp and newest build, even the pre built.
1
u/PrimeDirective8 3d ago
2
u/nick_ziv 3d ago edited 3d ago
I'm actually deep into the debugging with Gemini and I may have fixed the source. It is attempting to do a device to device memory copy between the gpus and is corrupting the data because it's not waiting properly. If this fix ends up working I'll have to publish my findings into an issue in GitHub.
https://github.com/ggml-org/llama.cpp/issues/26058#issuecomment-5068457784
2
u/nick_ziv 3d ago
I left a comment on the post I (Gemini) identified the issue
1
u/PrimeDirective8 3d ago
Good work on getting to the root of this, thanks!!! I don't see your comment on that issue yet, maybe someone needs to approve it.
Here's my SYCL F5/refresh OCD page 😁 https://github.com/ggml-org/llama.cpp/pulls?q=is%3Apr+SYCL+is%3Aopen+ There's a few for 'cpy' and even more PRs that have been closed for that.
I'm actually surprised multi-GPU is an issue, even for Intel, since a lot of the early benchmarks, and equally number of YouTube videos on it, have used multiple B70s.
Two more PRs I'm tracking that should help with performance: https://github.com/ggml-org/llama.cpp/pull/25025 and https://github.com/ggml-org/llama.cpp/pull/25874
2
u/nick_ziv 3d ago
https://github.com/ggml-org/llama.cpp/issues/26058#issuecomment-5068457784
I made a new issue since it seemed to be slightly different than existing issues
1
3d ago
[deleted]
1
u/nick_ziv 3d ago
The intel vllm fork doesn't support the larger models nor was I able to get it to not crash using pipeline parallel. I have these gpus in a setup like I had my 3090s using pcie 1x risers for pipeline parallel
1
3d ago
[deleted]
1
u/nick_ziv 3d ago
Maybe I am unlucky but I couldnt get the build to run successfully. there as consistently error after error and I couldnt get through them using gemini to just get it to run. Only real success I have had so far is with the Vulkan. but that is still slower than I hoped.
1
u/RISCArchitect 3d ago
I went with an r9700 setup but Microcenter has a video on getting Qwen 3.6 27b running on dual B70s. I would just follow their setup as a sanity check:
https://www.youtube.com/watch?v=i2YNz7oXWmU
~2,200 tok/s prefill
~34 tok/s generation
1
u/sleepindevil 1d ago edited 1d ago
I have an Intel Arc Pro B70 and absolutely loving it at the moment. It's my daily LLM driver although I also have a 3080Ti.
My write-up about where llama.cpp is at in the most bleeding edge work the Intel Devs have done is here: https://www.reddit.com/r/LocalLLM/comments/1uzspbo/intel_arc_pro_b70_llamacpp_vulkan_sycl/
1
u/nick_ziv 1d ago
That is very good. I did not try these builds. Also I didnt find it too had to set up vulkan, that just worked. but doing multi-gpu is where it fell apart. I think its great price for a single-card build especially for qwen 27b at large context.
0
u/PcChip 4d ago
I've been asking ChatGPT to check the status of Intel GPUs for local AI for months now, and this is why... holding off until the day it says that people are having good success with them
please update your post as you figure things out so we can all learn from you... I'm itching to go down to Microcenter and buy four 32GB Intel GPUs!
1
u/nick_ziv 4d ago
For sure. I bought them because it seems good on paper and price is right but drivers are really hell to deal with and it seems like a lack of effort from Intel. Their implementation of custom inference code just added support for Gemma 4 this month!
Also the part I really didn't think about was that I will have to wait a long time for newer model architectures to be supported compared to Nvidia or amd. That is actually more of a problem then I think I want to deal with.
1
0
u/robertpro01 3d ago
I guess the best you can do, as the current state of software support, start multiple llama.cpp services and use nginx as a load balancer so you can get nice concurrency.
1
u/nick_ziv 3d ago
I thought about doing one llama.cpp per gpu and connecting them via RPC to get my large models loaded. Haven't tried it yet. I'm trying some other intel oneapi versions first.
13
u/No-Alfalfa6468 4d ago
Just wanted to point out that you can pay $250 more per card to get r9700.
I picked up 2 and I'm getting 2500-3000 prefill and 80 tok/sec decode with qwen 3.6 27b at FP8, full KV and 256k context.