Skip to content

Commit f3d3a76

Browse files
authored
Merge branch 'main' into fix/normalize-shell-line-endings
2 parents 02c8821 + ccd7603 commit f3d3a76

180 files changed

Lines changed: 23991 additions & 254 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cspell.json

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,91 @@
88
],
99
"words": [
1010
"acrosmorbt",
11+
"admissionregistration",
12+
"apprmt",
1113
"aoai",
1214
"asname",
15+
"autocast",
16+
"autoremote",
1317
"balasubramanian",
1418
"behaviour",
1519
"chatcmpl",
20+
"configfromkube",
21+
"containerfile",
1622
"dedented",
23+
"directqueue",
24+
"dockerbuild",
25+
"dockerio",
26+
"dockerrun",
1727
"dsse",
1828
"envaccount",
1929
"envcontainer",
2030
"failuremode",
31+
"feetech",
2132
"fixpoint",
2233
"freqs",
2334
"fstring",
35+
"getparam",
36+
"getserverlabel",
2437
"getfixturevalue",
38+
"gitlink",
39+
"healthz",
2540
"headlessly",
2641
"hfpins",
2742
"imwrite",
2843
"isfolder",
2944
"leisaac",
45+
"loglevel",
3046
"minimise",
47+
"messagepack",
3148
"misattributed",
49+
"modpath",
50+
"MJPG",
3251
"mlruns",
52+
"mutatingwebhookconfiguration",
3353
"myacct",
3454
"mycontainer",
55+
"mypackage",
56+
"nindent",
57+
"nodeagent",
58+
"noremotefuncs",
59+
"noserverdeployment",
3560
"noout",
3661
"noseparator",
62+
"nvidiactl",
63+
"offloadable",
64+
"ospo",
65+
"perclient",
66+
"perclientserverlabel",
3767
"nvmap",
3868
"pixelformat",
3969
"plottable",
4070
"pollable",
4171
"poutine",
4272
"preds",
73+
"printloglevel",
4374
"prio",
75+
"pyrealsense",
76+
"pyremote",
77+
"pyremotecp",
78+
"pyremotesitecustomize",
79+
"readyz",
80+
"realsense",
4481
"rebindings",
4582
"recognised",
4683
"refetches",
84+
"remoteablecm",
85+
"remoteableconts",
86+
"remoteableenv",
87+
"remoteable",
88+
"remoteclass",
89+
"remoteclasses",
90+
"remoted",
91+
"remotefunc",
92+
"remotefuncs",
93+
"remoteurl",
94+
"remoteloc",
95+
"remoterport",
4796
"rescan",
4897
"rfft",
4998
"rfftfreq",
@@ -53,22 +102,42 @@
53102
"serialise",
54103
"serialised",
55104
"serialises",
105+
"serverimage",
106+
"serverlabel",
107+
"serverlabelkey",
108+
"serverlabelval",
109+
"serverreplicas",
110+
"serverport",
111+
"serverstages",
112+
"singleinstance",
113+
"sitecustomize",
114+
"sitecustomizer",
115+
"smolvla",
56116
"sparkline",
117+
"srvs",
118+
"stageobj",
119+
"teleop",
120+
"teleoperation",
57121
"taplo",
58122
"tegra",
123+
"tensorize",
59124
"trackio",
60125
"unbuilt",
61126
"unimportable",
62127
"unparseable",
63128
"unpickler",
64129
"unstub",
65130
"uppercased",
131+
"upstreaming",
66132
"uvlock",
67133
"varname",
68134
"veryfast",
69135
"vLLM",
70136
"visualisation",
71137
"worldv",
138+
"xaviercfg",
139+
"xavierconfig",
140+
"xavierdeployment",
72141
"xticklabels",
73142
"yoloe",
74143
"yolov"
@@ -98,6 +167,7 @@
98167
"**/.terraform/**",
99168
"**/.terraform.lock.hcl",
100169
"**/scripts/tests/Fixtures/**",
170+
"gpu-offload/runtime/**/*.py",
101171
"**/TERRAFORM.md",
102172
"CHANGELOG.md",
103173
"**/CHANGELOG.md"

.github/dependabot.yml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,3 +499,91 @@ updates:
499499
commit-message:
500500
prefix: chore
501501
include: scope
502+
- package-ecosystem: docker
503+
directory: /gpu-offload/controller
504+
schedule:
505+
interval: weekly
506+
day: monday
507+
cooldown:
508+
default-days: 7
509+
groups:
510+
gpu-offload-controller-docker-dependencies:
511+
patterns:
512+
- "*"
513+
update-types:
514+
- minor
515+
- patch
516+
open-pull-requests-limit: 5
517+
labels:
518+
- dependencies
519+
- docker
520+
- gpu-offload
521+
commit-message:
522+
prefix: chore
523+
include: scope
524+
- package-ecosystem: docker
525+
directory: /gpu-offload/examples/first-run
526+
schedule:
527+
interval: weekly
528+
day: monday
529+
cooldown:
530+
default-days: 7
531+
groups:
532+
gpu-offload-examples-first-run-docker-dependencies:
533+
patterns:
534+
- "*"
535+
update-types:
536+
- minor
537+
- patch
538+
open-pull-requests-limit: 5
539+
labels:
540+
- dependencies
541+
- docker
542+
- gpu-offload
543+
commit-message:
544+
prefix: chore
545+
include: scope
546+
- package-ecosystem: docker
547+
directory: /gpu-offload/examples/ur10e-single
548+
schedule:
549+
interval: weekly
550+
day: monday
551+
cooldown:
552+
default-days: 7
553+
groups:
554+
gpu-offload-examples-ur10e-single-docker-dependencies:
555+
patterns:
556+
- "*"
557+
update-types:
558+
- minor
559+
- patch
560+
open-pull-requests-limit: 5
561+
labels:
562+
- dependencies
563+
- docker
564+
- gpu-offload
565+
commit-message:
566+
prefix: chore
567+
include: scope
568+
- package-ecosystem: docker
569+
directory: /gpu-offload/examples/so101-real-hardware/docker
570+
schedule:
571+
interval: weekly
572+
day: monday
573+
cooldown:
574+
default-days: 7
575+
groups:
576+
gpu-offload-examples-so101-real-hardware-docker-dependencies:
577+
patterns:
578+
- "*"
579+
update-types:
580+
- minor
581+
- patch
582+
open-pull-requests-limit: 5
583+
labels:
584+
- dependencies
585+
- docker
586+
- gpu-offload
587+
commit-message:
588+
prefix: chore
589+
include: scope
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
description: when working with mise for tasks in the mise.toml file, follow these instructions to ensure proper usage and organization. Mise should be used for all additional tool installs
3+
---
4+
5+
<!-- applyTo: '**/*.toml' -->
6+
7+
# Use Mise.jdx.dev for all additional tool installs
8+
9+
tools such as gh, uv, az, cmake, rust, etc. -- ask if not sure
10+
11+
## use UV for all python
12+
13+
Always use uv for all python installs and never use system python. Use uv to install python and then use uv to install pip and then use uv to install any additional python packages.
14+
use uv venv and mise to create a virtual environment for your project. This will ensure that your project dependencies are isolated and do not interfere with system packages.
15+
16+
Never pollute system python
17+
18+
## Use Mise toml correctly
19+
20+
### Task Grouping
21+
22+
Tasks can be grouped semantically by using name prefixes separated with :s. For example all testing related tasks may begin with test:. Nested grouping can also be used to further refine groups and simplify pattern matching. For example running mise run test:**:local will match test:units:local, test:integration:local and test:e2e:happy:local (See Wildcards for more information).
23+
24+
TIP
25+
26+
Since TOML keys can't contain colons without quoting, use quoted keys in mise.toml:
27+
28+
[tasks."test:unit"]
29+
run = 'cargo test --lib'
30+
31+
### Run Tasks
32+
33+
Do not put embedded scripts in the TOML -- instead
34+
35+
- for platform overall -- put that in 'gpu-offload/scripts'
36+
- for example specific -- put in 'gpu-offload/examples' with some prefix that correlates to the example name
37+
38+
### Task ordering
39+
40+
The goal of task ordering is to allow a human to "git clone..." then go through the setup, verification, coding, etc., then teardown --
41+
Utilize "Task Grouping" in mise.toml to assist in that order so when "mise tasks" is execute the human can see the logical order of how to run things -- that means align the alphanumeric sort to accommodate. -- Always prefix the task name with a Alpha -- not a number or symbol -

.github/workflows/dependency-pinning-scan.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ on:
1212
description: 'Comma-separated list of dependency types to check'
1313
required: false
1414
type: string
15-
default: 'github-actions,npm,pip,shell-downloads,shell-inline-pip,gh-extension,powershell-modules,docker,workflow-npm-commands'
15+
default: 'github-actions,npm,pip,shell-downloads,shell-inline-pip,gh-extension,powershell-modules,docker,dockerfile-base-image,workflow-npm-commands'
1616
soft-fail:
1717
description: 'Whether to continue on compliance violations'
1818
required: false

.github/workflows/dependency-review.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ jobs:
3434
# GHSA-46r5-x6jq-v8g6: mlflow — AJAX artifact download authorization bypass; no upstream fix; server-side only, repo uses client only (CVE-2026-33866)
3535
# GHSA-fh64-r2vc-xvhr: mlflow — stored XSS via YAML MLmodel artifacts; fixed in 3.11.1; blocked by azureml-mlflow<=3.9.0 ceiling; server-side only (CVE-2026-33865)
3636
# GHSA-h35f-9h28-mq5c: setuptools — macOS Unicode normalization bypass when publishing sdists; runtime lock installs wheels on Linux and never publishes packages
37+
# GHSA-xrqw-3rrv-vx5w: transformers — save_pretrained() path traversal via attacker-controlled chat_template keys; fixed in 5.10.0; lerobot==0.6.1 constrains transformers<5.6.0 so no fix is installable yet; the SO-101 example never calls save_pretrained() on a Hub-downloaded tokenizer/processor, only load()s its own pinned checkpoint (CVE-2026-9856)
3738
allow-ghsas: >-
3839
GHSA-wf7f-8fxf-xfxc,
3940
GHSA-pgqp-8h46-6x4j,
@@ -42,4 +43,5 @@ jobs:
4243
GHSA-7qhf-v65m-g5f3,
4344
GHSA-46r5-x6jq-v8g6,
4445
GHSA-fh64-r2vc-xvhr,
45-
GHSA-h35f-9h28-mq5c
46+
GHSA-h35f-9h28-mq5c,
47+
GHSA-xrqw-3rrv-vx5w
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: GPU Offload Kind Smoke
2+
3+
# End-to-end CPU-only smoke coverage for the gpu-offload stack: runs the
4+
# first-run example against a real `kind` cluster to prove admission (the
5+
# webhook mutates the client and generates the server Deployment) and a real
6+
# remote call (the function executes on the generated server pod, not the
7+
# client). detect-platform.sh resolves to platform=cpu on any GPU-less
8+
# runner, and every GPU-only step in the pipeline self-skips, so this is a
9+
# complete run of the real controller, Helm chart, and images without needing
10+
# a GPU. See .github/workflows/pr-validation.yml (gpu_offload_e2e) for the
11+
# path gate.
12+
13+
'on':
14+
workflow_call:
15+
16+
permissions:
17+
contents: read
18+
19+
jobs:
20+
kind-smoke:
21+
name: Kind Smoke
22+
runs-on: ubuntu-latest
23+
timeout-minutes: 20
24+
permissions:
25+
contents: read
26+
env:
27+
# Force the deterministic CPU/kind path rather than relying on
28+
# runner auto-detection (detect-platform.sh would resolve the same way
29+
# on a GPU-less runner, but this keeps the gate explicit).
30+
GPU_OFFLOAD_PLATFORM: cpu
31+
defaults:
32+
run:
33+
working-directory: gpu-offload
34+
steps:
35+
- name: Checkout code
36+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
37+
with:
38+
persist-credentials: false
39+
40+
- name: Install host packages
41+
run: scripts/install-host-packages.sh
42+
43+
- name: Install mise
44+
uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4.3.0
45+
with:
46+
working_directory: gpu-offload
47+
48+
- name: Trust the gpu-offload mise config
49+
run: mise trust
50+
51+
- name: Install kind, kubectl, and Helm
52+
run: mise run b-host-02-kubernetes-tools
53+
54+
- name: Set up the offload cluster
55+
run: mise run f-10-setup
56+
57+
- name: Verify admission and remote execution
58+
run: mise run f-20-verify
59+
60+
- name: Tear down the cluster
61+
if: always()
62+
run: mise run f-40-teardown-all

.github/workflows/main.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,13 @@ jobs:
144144
contents: read
145145
id-token: write
146146

147+
# Pytest: gpu-offload controller and runtime components
148+
pytest-gpu-offload:
149+
name: Pytest GPU Offload
150+
uses: ./.github/workflows/pytest-gpu-offload.yml
151+
permissions:
152+
contents: read
153+
147154
# Pytest: shared CI scripts component
148155
pytest-shared-ci:
149156
name: Pytest Shared CI
@@ -307,6 +314,7 @@ jobs:
307314
- pytest-dm-tools
308315
- pytest-data-pipeline
309316
- pytest-inference
317+
- pytest-gpu-offload
310318
- pytest-shared-ci
311319
- dataviewer-frontend-tests
312320
- dataviewer-backend-pytests

0 commit comments

Comments
 (0)