Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
69 changes: 69 additions & 0 deletions .github/ISSUE_TEMPLATE/hardware-validation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Hardware validation report
description: Report native Intel GPU results and the checks still needed.
title: "[Hardware] GPU / OS / backend"
labels: ["help wanted", "untested"]
body:
- type: markdown
attributes:
value: |
Help record which Intel GPU environments have been tested. Include failures as well as successes, and mark checks you have not performed as "not run".
See the [validation checklist](https://github.com/offbyonebit/arc-llama/issues/71). Remove tokens and private details before attaching logs.
- type: input
id: hardware
attributes:
label: GPU and memory
description: Exact GPU model, dedicated/shared memory, and number of GPUs.
placeholder: Arc A770 16 GiB, one GPU
validations:
required: true
- type: textarea
id: environment
attributes:
label: Software environment
description: OS/build, kernel (Linux), Intel graphics driver, Arc Llama version, Python version, llama.cpp runtime build/tag, and oneAPI version if using SYCL.
validations:
required: true
- type: dropdown
id: backend
attributes:
label: Backend tested
options:
- Vulkan
- SYCL
- Both (report results separately)
- Not run
validations:
required: true
- type: textarea
id: diagnostics
attributes:
label: Diagnostic output
description: Paste output from arc-llama --version, arc-llama gpus, and arc-llama doctor. These commands do not run inference. State any command you did not run.
render: text
validations:
required: true
- type: textarea
id: configuration
attributes:
label: Model and configuration
description: Model repository/file, quantization, recipe, context size, GPU selection/offload, and any changed settings. If inference was not run, say so.
validations:
required: true
- type: textarea
id: results
attributes:
label: Observed results
description: Record cold start, model switching, streaming, non-streaming, and shutdown as pass/fail/not run. Include symptoms, timing, or throughput if measured. For multiple backends, distinguish each result.
value: |
Cold start:
Model switching:
Streaming:
Non-streaming:
Shutdown:
validations:
required: true
- type: textarea
id: logs
attributes:
label: Logs and remaining problems
description: Relevant errors, reproducible steps, or logs. Include remaining checks and unexpected GPU/memory behavior.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
- name: Test with pytest
# Print every skip reason so an environment change cannot hide missing
# coverage in an otherwise green job.
run: pytest tests/ -q -ra --tb=short -p no:cacheprovider
run: pytest tests/ -W error -q -ra --tb=short -p no:cacheprovider

browser-tests:
# Real-browser regression suite for the bundled web UI. Kept separate
Expand Down
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,23 @@ curl http://127.0.0.1:11437/v1/chat/completions \
}'
```

## Tested hardware

The recorded native validation below used the **0.9.0rc2 candidate** and the
models and recipes in the linked report. It does not establish validation for
every driver, model, or later release.

| GPU | Platform | Backend | Recorded validation |
| --- | --- | --- | --- |
| Arc Pro B60 (24 GiB) | Linux | Vulkan and SYCL | [Native release validation](docs/release-validation-linux-2026-10-03.md) |
| Alchemist (A-series) | Linux / Windows | Vulkan / SYCL | Hardware reports [requested](https://github.com/offbyonebit/arc-llama/issues/71) |
| Lunar Lake | Linux / Windows | Vulkan / SYCL | Hardware reports [requested](https://github.com/offbyonebit/arc-llama/issues/71) |
| Arc Pro B60 | Windows | Vulkan / SYCL | Native Windows validation [requested](https://github.com/offbyonebit/arc-llama/issues/69) |

Have one of these devices? [Submit a hardware validation report](https://github.com/offbyonebit/arc-llama/issues/new?template=hardware-validation.yml)
with your environment, configuration, and observed results. Reports can include
checks you have not run; mark them as “not run” so the remaining coverage is clear.

## Requirements

### Linux
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ mcp = [
"mcp>=1.0,<2",
]
dev = [
"httpx2>=2.13.1",
"pytest>=8.0",
"pytest-asyncio>=0.23",
"ruff>=0.5",
Expand Down
16 changes: 11 additions & 5 deletions tests/test_launcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,12 @@ def poll(self):
try:
srv.start(log_dir=log_dir)
assert log_dir.exists()
assert srv.is_running is True
finally:
subprocess.Popen = original_popen
assert srv.is_running is True
# Discard the mock child before closing real log/lock handles.
srv.process = None
srv.stop()

@pytest.mark.asyncio
async def test_wait_ready_true_when_healthy(self, monkeypatch: pytest.MonkeyPatch):
Expand Down Expand Up @@ -573,12 +576,15 @@ def poll(self):
subprocess.Popen = _fake_popen
try:
srv.start(log_dir=log_dir)
assert called["kwargs"]["creationflags"] == getattr(
subprocess, "CREATE_NEW_PROCESS_GROUP", 0
)
assert "preexec_fn" not in called["kwargs"]
finally:
subprocess.Popen = original_popen
assert called["kwargs"]["creationflags"] == getattr(
subprocess, "CREATE_NEW_PROCESS_GROUP", 0
)
assert "preexec_fn" not in called["kwargs"]
# Discard the mock child before closing real log/lock handles.
srv.process = None
srv.stop()

def test_stop_sends_ctrl_break_then_force_kills_tree_on_timeout(self, monkeypatch):
from arc_llama import launcher as launcher_mod
Expand Down
50 changes: 50 additions & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading