Skip to content

Commit 700aae9

Browse files
cld2labs/sglang-gpt-oss: stop hard-coding k3s in chart README + deployment.md
The build script already auto-detects nerdctl (kubeadm/containerd) vs k3s, but the docs around it still said "imports into k3s containerd" and gave a `k3s ctr images ls` as the only verify command. On a real OPEA cluster (kubeadm + containerd, no k3s binary) that command errors and there's no signal that a different runtime is supported. Rephrase both the chart README and the gpt-oss deployment guide: - Replace "k3s containerd" with "local containerd image store" / generic phrasing in the prose. - Replace the single k3s verify line with a dual block that shows the nerdctl form (kubeadm) and the k3s ctr form, with a one-line explanation of which to use. - Prerequisites: list both kubeadm/containerd and k3s as validated targets instead of saying k3s. - Project-structure tree comment for build-and-import.sh: "local containerd (kubeadm or k3s)" instead of "k3s containerd". The appendix (which explicitly bootstraps k3s as a convenience) stays k3s-specific; that's a deliberate choice for the self-bootstrap path, not a claim about how the chart runs.
1 parent 0a5ee5f commit 700aae9

2 files changed

Lines changed: 31 additions & 14 deletions

File tree

core/helm-charts/sglang/README.md

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ every bf16 forward pass crashes with `tinygemm_kernel_nn: scalar path
2323
not implemented!` regardless of model. The remaining patches are
2424
gpt-oss-specific and are runtime no-ops for other models. The image is
2525
built once via a self-contained Dockerfile and imported directly into
26-
k3s containerd — no registry required.
26+
the local containerd image store — no registry required.
2727

2828
## Features
2929

3030
- **Model-agnostic SGLang on Xeon CPU** — any HF model SGLang supports loads through the same chart
3131
- **Patched image** that unblocks bf16 inference on Xeon (every model benefits) and adds MXFP4 + sinks-attention support for gpt-oss
3232
- **OPEA-standard auth chain**: TLS at nginx, OIDC bearer validation at APISIX, token issuance by Keycloak
33-
- **No external registry**: image builds locally and imports into k3s containerd
33+
- **No external registry**: image builds locally into the cluster's containerd image store (works on both kubeadm/containerd and k3s)
3434
- **OpenAI-compatible API**: `/v1/chat/completions`, `/v1/models`, `/v1/completions`
3535
- **Chart-only delivery**: same standalone pattern as `core/helm-charts/ovms`, not yet wired into the Ansible playbooks
3636

@@ -40,7 +40,7 @@ k3s containerd — no registry required.
4040
- **Hardware**: Intel Xeon with AVX-512-BF16 / AMX-BF16 (Sapphire Rapids, Emerald Rapids, Granite Rapids)
4141
- **Memory**: ≥ 64 GiB RAM for mid-size models (gpt-oss-20b uses ~25 GiB dequantized + KV cache)
4242
- **Disk**: ≥ 100 GiB free on the root partition
43-
- **Kubernetes**: 1.24+ (k3s is fine; this chart was validated on single-node k3s)
43+
- **Kubernetes**: 1.24+ — validated on kubeadm/containerd (the cluster `inference-stack-deploy.sh` produces) and on k3s
4444
- **Helm**: 3+
4545
- **NodePorts free on the host**: 30080, 30443 (nginx), 32080 (APISIX)
4646
- **HuggingFace token** for gated models (e.g. `meta-llama/*`); not required for open models like `openai/gpt-oss-20b` or `Qwen/Qwen3-8B`
@@ -61,18 +61,27 @@ git checkout cld2labs/sglang-gpt-oss
6161
sudo bash core/helm-charts/sglang/image-build/build-and-import.sh
6262
```
6363

64-
First run takes ~5–10 minutes (installs docker.io if missing, compiles
65-
27 C++ files in `sgl-kernel` with the right BF16 flags, runs 11 Python
66-
patch scripts against SGLang's in-image source, and imports the result
67-
into k3s containerd).
64+
First run takes ~5–10 minutes. The script auto-detects the runtime:
6865

69-
Verify:
66+
- **kubeadm + containerd** (OPEA Ansible-deployed clusters): builds via
67+
`nerdctl` directly into containerd's `k8s.io` namespace. Installs
68+
`buildkit` from upstream GitHub on demand if it isn't already present.
69+
- **k3s**: installs `docker.io` on demand, builds, then
70+
`docker save | k3s ctr images import -`.
71+
72+
In both cases the image lands where kubelet pulls from. Verify with
73+
whichever tool matches your runtime:
7074

7175
```bash
76+
# kubeadm / containerd
77+
sudo nerdctl --namespace k8s.io images | grep enterprise-inference/sglang
78+
79+
# k3s
7280
sudo k3s ctr images ls | grep enterprise-inference/sglang
73-
# docker.io/enterprise-inference/sglang:v0.5.12-xeon-fix11-debug
7481
```
7582

83+
Either way the expected line is `enterprise-inference/sglang:v0.5.12-xeon-fix11-debug`.
84+
7685
## Deploy a Model
7786

7887
`modelSource` and `modelName` are required at install time. The chart
@@ -295,7 +304,7 @@ core/helm-charts/sglang/
295304
├── templates/ # Helm templates (Deployment, Service, PVC, Ingress, ApisixRoute, Secret)
296305
└── image-build/
297306
├── Dockerfile # FROM lmsysorg/sglang:v0.5.12-xeon + 11 patch steps
298-
├── build-and-import.sh # one-shot build + import into k3s containerd
307+
├── build-and-import.sh # one-shot build + load into local containerd (kubeadm or k3s)
299308
└── enable-*.py # patch scripts applied at image build time
300309
301310
third_party/Dell/model-deployment/

third_party/Dell/model-deployment/gpt-oss-20b/deployment.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,28 @@ published `sgl-kernel` shared library is missing the AVX-512-BF16
4747
compile flags needed for any bf16 matmul).
4848

4949
The SGLang chart ships a one-shot build script that produces a patched
50-
image and imports it directly into k3s containerd. No external registry
51-
is required.
50+
image and loads it directly into the local containerd image store. No
51+
external registry is required.
5252

5353
```bash
5454
sudo bash core/helm-charts/sglang/image-build/build-and-import.sh
5555
```
5656

57-
First run takes ~5-10 minutes. Verify:
57+
First run takes ~5-10 minutes. The script auto-detects the runtime —
58+
`nerdctl` on a kubeadm/containerd cluster (what `inference-stack-deploy.sh`
59+
produces) or `k3s ctr` on a k3s cluster. Verify with whichever matches
60+
your cluster:
5861

5962
```bash
63+
# kubeadm / containerd
64+
sudo nerdctl --namespace k8s.io images | grep enterprise-inference/sglang
65+
66+
# k3s
6067
sudo k3s ctr images ls | grep enterprise-inference/sglang
61-
# docker.io/enterprise-inference/sglang:v0.5.12-xeon-fix11-debug
6268
```
6369

70+
Either should report `enterprise-inference/sglang:v0.5.12-xeon-fix11-debug`.
71+
6472
For a detailed breakdown of what each patch does, see
6573
`core/helm-charts/sglang/README.md` (section: What's Patched).
6674

0 commit comments

Comments
 (0)