Phase 3: GPU capability class + single-node routing (#56) #297
No reviewers
Labels
No labels
blocked:children
blocked:commit-ready-failed
blocked:depends-231
blocked:depends-236
blocked:depends-237
blocked:depends-238
blocked:depends-239
blocked:gate-fetch
blocked:gate-fetch
blocked:gate-lint
blocked:gate-research
blocked:needs-attention
blocked:needs-decision
blocked:no-changes
blocked:no-procedure
blocked:preflight
blocked:verify-failed
bug
enhancement
feature-request
high-priority
in-progress
lint-cleanup
needs-decompose
needs-triage
ops-retry
ops-task
phase-5
quickfix
security/medium
self-building
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/mesh-seed!297
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "mesh-seed/t_7b136d19-r2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 3 of Mark/mesh-seed#56. Implements a canonical GPU capability class with deterministic single-node routing, registration validation, and intent-side class requirement matching. Federation / multi-node scheduling is explicitly out of scope — the router picks one worker, the class matching rules are node-local, and the extension point is purely on the allocation side (
GPUManager.allocate_gpus_for_candidatecan grow a node-distribution strategy without touching the class schema or the single-node selector).Adds:
runtime/gpu_class.py: canonical class registry (16 entries: v100, p4, t4, a100, a10g, a40, h100, h200, b200, 4090, 5090, rtx2060, rtx3090, rtx4090, mi250, mi300x), with vendor / min_memory_gb floor / generation ladder.class_satisfies(exact + class_compatible semantics),validate_capability_resources,validate_intent_gpu_constraint.primitives/_bone/gpu_detector.py::_infer_gpu_class: maps the nvidia-smi / rocm-smi model name to the canonical class (substring + token match, longest-wins).get_gpu_resourcesnow surfacesgpu_classand validates before advertising; class is dropped if memory is below the floor so the advertisement is internally consistent.runtime/primitive_registry.py:PrimitiveRecord.resourcesfield withto_dict/from_dictround-trip;_register_template(drops the record) andregister(raisesValueError) validate the resources block againstgpu_classrules.runtime/intent_router.py:_filter_candidates_by_gpu_classfilters candidates after the existing class=="gpu" filter, before scoring and allocation. When the intent pins a class:class_compatible=truewidens to same-vendor generation-or-newergpu_class_unavailablewithavailable_classesgpu_class_unsupportedwith the canonical listgpu_constraint_invalidwith errors_route_gpusurfaces the selectedgpu_classon the result.schemas/capability.schema.json+schemas/intent.schema.json:gpu_class+class_compatiblefields.tests/unit/test_gpu_class.py: 77 focused tests covering the class registry, satisfaction semantics, capability + intent validation, gpu_detector inference + validation, router class filter,_route_gpuintegration, andPrimitiveRegistryregistration.docs/reference/GPU_CAPABILITY.md: documents the class system, inference, registration validation, router behavior, and the single-node boundary (with the clean extension point for multi-node shard selection).Local: 1781 passed / 5 skipped — no regressions.
Pull request closed