pepijn223 HF Staff commited on
Commit
f8bbcba
·
verified ·
1 Parent(s): 405e9b4

Pin corrected cuDSS 0.8 worker and require known FP64 sparse solve before annotation

Browse files
flora-worker-image.json CHANGED
@@ -31,7 +31,7 @@
31
  "flora_batcher.py": "38e03e2032af8d5f3ed34980cc4d89927fe70c9742aa2ce13f4d0ccdd6fba727",
32
  "flora_speed_entry.py": "192b18d75b9d876c2a65d88de340c8cea7c8da90543d0510b5ee6865d123d524",
33
  "studio_runtime.py": "2b393bf7fafcdead638ad1cea35e49df8c6edce725f5545b76fd68e0a8fedd80",
34
- "pipeline-version.json": "0231f13a7629d04a60aafb6b11fabbc864c0ac9396b357f9081a3e730cb6c5ca",
35
  "flora_vision.py": "a5a4231abf7b615164c40986df5f87047f745a23c55d86385d88f2a09e70f1e8"
36
  },
37
  "acceptance": {
 
31
  "flora_batcher.py": "38e03e2032af8d5f3ed34980cc4d89927fe70c9742aa2ce13f4d0ccdd6fba727",
32
  "flora_speed_entry.py": "192b18d75b9d876c2a65d88de340c8cea7c8da90543d0510b5ee6865d123d524",
33
  "studio_runtime.py": "2b393bf7fafcdead638ad1cea35e49df8c6edce725f5545b76fd68e0a8fedd80",
34
+ "pipeline-version.json": "b0c3e208fae3ebc0ee38cb9df8ea657aadeca6b70629697a197df1d30dbe17c1",
35
  "flora_vision.py": "a5a4231abf7b615164c40986df5f87047f745a23c55d86385d88f2a09e70f1e8"
36
  },
37
  "acceptance": {
hand-pipeline-catalog.json CHANGED
@@ -44,5 +44,5 @@
44
  "soma": "https://huggingface.co/nvidia/SOMA-X",
45
  "runtime": "https://github.com/NVlabs/GEM-X/blob/20555befe2fbbe5b2015e1fff7ff214dc18ea9d6/ATTRIBUTIONS.md"
46
  },
47
- "lerobot_revision": "0881a68acbf3fa9ebf0c42401ebb21647e78ed07"
48
  }
 
44
  "soma": "https://huggingface.co/nvidia/SOMA-X",
45
  "runtime": "https://github.com/NVlabs/GEM-X/blob/20555befe2fbbe5b2015e1fff7ff214dc18ea9d6/ATTRIBUTIONS.md"
46
  },
47
+ "lerobot_revision": "2022627082231d8c69d68bbfd59919952ff58c5c"
48
  }
hand-worker-image.json CHANGED
@@ -2,9 +2,9 @@
2
  "recipe": "egohand-soma-v3-checkpoint-overlap-v4",
3
  "build_verified": false,
4
  "image_repo": "finerobotics/egohand-soma-worker-v4",
5
- "image_revision": "ab547a058b060f7c685092b90c79613d1290e4a8",
6
  "image": "hf.co/spaces/finerobotics/egohand-soma-worker-v4",
7
- "image_version_sha256": "2858daeee10cd9f908b80def283cac9a8639ca0b39de076d656b1fb2e69053ea",
8
  "assets": {
9
  "repo": "finerobotics/egohand-soma-runtime",
10
  "revision": "cb082150aed8612fd50a6a78a0e37deebf24b6c3",
 
2
  "recipe": "egohand-soma-v3-checkpoint-overlap-v4",
3
  "build_verified": false,
4
  "image_repo": "finerobotics/egohand-soma-worker-v4",
5
+ "image_revision": "06dcbf6fc970289d532eeebc86bedeef72b8c791",
6
  "image": "hf.co/spaces/finerobotics/egohand-soma-worker-v4",
7
+ "image_version_sha256": "624de4590d55adfe656876c3ff6b00929519b5d960cc6c3d710b6a204bc034ac",
8
  "assets": {
9
  "repo": "finerobotics/egohand-soma-runtime",
10
  "revision": "cb082150aed8612fd50a6a78a0e37deebf24b6c3",
hand_setup.py CHANGED
@@ -89,6 +89,11 @@ def prepare_camera_engines(profile):
89
  check=True,
90
  )
91
  environment["LD_LIBRARY_PATH"] = environment["DROID_LIBRARY_PATH"]
 
 
 
 
 
92
  subprocess.run(
93
  [backend["droid_python"], __file__, "--build", json.dumps(backend)], env=environment, check=True
94
  )
@@ -117,6 +122,31 @@ def verify_camera_contexts(backend):
117
  del runtime
118
 
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  def build_camera(backend):
121
  """Build TensorRT plans with the validated precision and dynamic shapes."""
122
  import ctypes
@@ -236,5 +266,7 @@ if __name__ == "__main__":
236
  build_camera(json.loads(sys.argv[2]))
237
  elif sys.argv[1] == "--check-contexts":
238
  verify_camera_contexts(json.loads(sys.argv[2]))
 
 
239
  else:
240
- raise ValueError("Expected --build or --check-contexts")
 
89
  check=True,
90
  )
91
  environment["LD_LIBRARY_PATH"] = environment["DROID_LIBRARY_PATH"]
92
+ subprocess.run(
93
+ [backend["droid_python"], __file__, "--check-solver", json.dumps(backend)],
94
+ env=environment,
95
+ check=True,
96
+ )
97
  subprocess.run(
98
  [backend["droid_python"], __file__, "--build", json.dumps(backend)], env=environment, check=True
99
  )
 
122
  del runtime
123
 
124
 
125
+ def verify_camera_solver(backend):
126
+ """Solve a known FP64 SPD system through the frozen sparse wrapper."""
127
+ from importlib.metadata import version
128
+
129
+ import torch
130
+
131
+ if version("nvidia-cudss-cu12") != "0.8.0.10":
132
+ raise RuntimeError("The frozen sparse wrapper requires cuDSS 0.8.0.10")
133
+ sys.path.insert(0, backend["droid_root"])
134
+ from cudss_solver import CuDSS
135
+
136
+ rows = torch.tensor([0, 1, 3, 5], device="cuda", dtype=torch.int32)
137
+ columns = torch.tensor([0, 0, 1, 1, 2], device="cuda", dtype=torch.int32)
138
+ values = torch.tensor([4.0, 1.0, 3.0, 1.0, 2.0], device="cuda", dtype=torch.float64)
139
+ rhs = torch.tensor([6.0, 10.0, 8.0], device="cuda", dtype=torch.float64)
140
+ solver = CuDSS(rows, columns, values, rhs)
141
+ try:
142
+ result = solver.solve()
143
+ solver.check()
144
+ torch.testing.assert_close(result, torch.tensor([1.0, 2.0, 3.0], device="cuda"), atol=1e-6, rtol=1e-6)
145
+ finally:
146
+ solver.close()
147
+ print('HAND_RUNTIME {"event":"fp64_sparse_solver_verified","cudss":"0.8.0.10"}', flush=True)
148
+
149
+
150
  def build_camera(backend):
151
  """Build TensorRT plans with the validated precision and dynamic shapes."""
152
  import ctypes
 
266
  build_camera(json.loads(sys.argv[2]))
267
  elif sys.argv[1] == "--check-contexts":
268
  verify_camera_contexts(json.loads(sys.argv[2]))
269
+ elif sys.argv[1] == "--check-solver":
270
+ verify_camera_solver(json.loads(sys.argv[2]))
271
  else:
272
+ raise ValueError("Expected --build, --check-contexts or --check-solver")
pipeline-source.tar.gz CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:3b099dca7f598915442695ccff9363a70b8c7f0815c07c0f95421aaca2372997
3
- size 1873156
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5d7d2b44502da0db87d01322d6fcd95bdf3c68b7a1302ba74309a8ecd63c3bb7
3
+ size 1873065
pipeline-version.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
- "git_commit": "0881a68acbf3fa9ebf0c42401ebb21647e78ed07",
3
- "sha256": "3b099dca7f598915442695ccff9363a70b8c7f0815c07c0f95421aaca2372997",
4
  "preset": "abc_phases_schema_with_original_window_recovery",
5
  "preset_date": "2026-09-25",
6
  "engine": "lerobot.annotations.runtime",
 
1
  {
2
+ "git_commit": "2022627082231d8c69d68bbfd59919952ff58c5c",
3
+ "sha256": "5d7d2b44502da0db87d01322d6fcd95bdf3c68b7a1302ba74309a8ecd63c3bb7",
4
  "preset": "abc_phases_schema_with_original_window_recovery",
5
  "preset_date": "2026-09-25",
6
  "engine": "lerobot.annotations.runtime",
test_hand_actions.py CHANGED
@@ -274,13 +274,20 @@ def test_gpu_setup_uses_isolated_offline_environments(monkeypatch):
274
  hand_setup.prepare_camera_engines(
275
  {"backend": {"droid_python": "/camera/python", "egohand_python": "/hand/python"}}
276
  )
277
- assert [command[0] for command, _ in calls] == ["/hand/python", "/camera/python", "/camera/python"]
 
 
 
 
 
278
  assert [environment["LD_LIBRARY_PATH"] for _, environment in calls] == [
279
  "/hand/lib",
280
  "/camera/lib",
281
  "/camera/lib",
 
282
  ]
283
- assert calls[2][0][2] == "--check-contexts"
 
284
  for _, environment in calls:
285
  assert "HF_TOKEN" not in environment and "ANNOTATION_MANIFEST" not in environment
286
  assert environment["HF_HUB_OFFLINE"] == environment["TRANSFORMERS_OFFLINE"] == "1"
 
274
  hand_setup.prepare_camera_engines(
275
  {"backend": {"droid_python": "/camera/python", "egohand_python": "/hand/python"}}
276
  )
277
+ assert [command[0] for command, _ in calls] == [
278
+ "/hand/python",
279
+ "/camera/python",
280
+ "/camera/python",
281
+ "/camera/python",
282
+ ]
283
  assert [environment["LD_LIBRARY_PATH"] for _, environment in calls] == [
284
  "/hand/lib",
285
  "/camera/lib",
286
  "/camera/lib",
287
+ "/camera/lib",
288
  ]
289
+ assert calls[1][0][2] == "--check-solver"
290
+ assert calls[3][0][2] == "--check-contexts"
291
  for _, environment in calls:
292
  assert "HF_TOKEN" not in environment and "ANNOTATION_MANIFEST" not in environment
293
  assert environment["HF_HUB_OFFLINE"] == environment["TRANSFORMERS_OFFLINE"] == "1"