hami
v2.11.0AI & MLACTION 6CHECK 7PLAN 2OTHER 176
가속기, 스케줄링, 모니터링, 원격 GPU, 배포 기능을 넓히고 정확성과 성능 문제를 폭넓게 바로잡은 유지보수 릴리스입니다. 업그레이드 전 변경된 기본값과 더 엄격해진 검증 및 호환성 조건, 의존성 변경, 더 이상 권장되지 않는 메트릭을 확인해야 합니다.
조치 필요 (6)
breaking
HAMI-core마운트 제거전체 GPU 할당에
HAMI-core를 마운트하지 않고, 메트릭을NVML에서 직접 내보냅니다.breakingGPU 수와 메모리 및 코어 기본값 설정
GPU 수, 메모리, 코어를 기본값으로 설정합니다.
breakingGPU 코어 비율 범위 검증
GPU 코어 비율이
[0,100]범위를 벗어난 요청을 거부합니다.breaking스케줄러 소유 할당 주석이 있는 파드 거부
스케줄러가 소유한 할당 주석이 있는 파드 생성을 거부합니다.
breaking컨테이너 요청량 초과 할당 거부
컨테이너 요청량보다 큰 할당을 거부합니다.
breaking요청 주석 제거
요청 주석을 제거합니다.
영향 확인 (7)
breaking
/refit호출자 인증 요구/refit을 사용하는 경우에 적용됩니다.호출자 인증을 요구합니다.
breaking
Kubernetes1.23 요구Kubernetes1.23에 의존하지 않는 경우에 적용됩니다.Kubernetes1.23을 요구합니다.breaking
device-config기본값 적용 방식 변경device-config를 설정하는 경우에 적용됩니다.values.의 값만yaml device-config의 기본값으로 사용합니다.breaking
Fit의 네임스페이스ResourceQuota확인네임스페이스
ResourceQuota를 설정한 경우에 적용됩니다.Fit에서 네임스페이스ResourceQuota를 확인합니다.breaking
hygon기본 코어 값 변경hygon을 실행하는 경우에 적용됩니다.hygon의 기본 코어 값을 업데이트합니다.breaking잘못된 장치 수 요청 거부
biren또는cambricon을 실행하는 경우에 적용됩니다.biren과cambricon에서 장치 수가 0이거나 음수인 요청을 거부합니다.breakingGPU 메모리 소수 비율 요청 거부
nvidia를 실행하는 경우에 적용됩니다.GPU 메모리 비율의 소수값 요청을 거부합니다.
미리 준비 (2)
deprecated
hami_container_device_memory_bytes사용 중단 예고hami_container_device_memory_bytes를 사용하는 경우에 적용됩니다.hami_container_device_memory_bytes메트릭을 더 이상 권장하지 않습니다.deprecated
hami_resource_quota_used의limit레이블 사용 중단 예고hami_resource_quota_used를 사용하는 경우에 적용됩니다.hami_resource_quota_used메트릭의limit레이블을 더 이상 권장하지 않습니다.
그 외 기록된 변경 176건 전체fixes 98 · additions 42 · value changes 23 · constraints 9 · renames 3 · removals 1
fixes (98)
- Fix/scheduler metrics audit
- fixing the reject unknown fields in device-config.yml
- fix(nvidia): honor enableGetPreferredAllocation in GetDevicePluginOptions
- fix(ascend): guard against empty ResourceMemoryName injection in admission
- fix(ascend): do not overwrite ASCEND_VISIBLE_DEVICES for Ascend containers
- fix(chart): use lists for device plugin
extraEnvsdefaults - fix(device-plugin): honor disable-core-limit flag
- fix(monitor): replace MustNewConstMetric with safe helper
- [kind/bug] Restore model-aware scheduling for Cambricon MLU devices
- validate device-scoring-weights at admission
- validate device resource names and defaults at startup
- fix: disable MIG when using hami-core
- guard allocation annotations on update, not just create
- auto driverroot make mount unchange
- fail closed on invalid HAMi device requests instead of binding GPU-less pods
- select Lupine server using all pod container requests
- surface collection failures
- run library-copy init first
- exclude NotReady Lupine servers
- mount GPU limits at /overrideEnv for login sessions
- stop mounting the host root for auto driver root
- requeue pods waiting for a lupine fleet change
- resolve dynamic MIG identities
- watch profiling fields
- Fix vgpu-monitor can't discover mig-instance properly
- select quota-feasible GPU combinations in topology scheduling
- serialize expired-lock recovery
- don't cache node annotation as up-to-date when the patch fails
- fix(device): reject malformed and negative device allocation annotations
- fix(nvidia): collapse duplicate MIG candidates in topology scheduling
- fix(skill): align vGPU metrics summary with actual codebase definitions
- fix(scheduler): include init container requests in device locking
- fix(dashboard): align node GPU memory ratio scale
- fix(vGPUmonitor): gracefully skip GPU utilization metrics when unsupported
- fix: NUMA refit follow-ups from post-merge review
- fix(scheduler): keep the configured policy for unrecognized policy an…
- fix(scheduler): account terminating pods replayed by informer sync
- fix(scheduler): keep candidate nodes for non HAMi pods on the simulation path
- fix(metax): let multi container pods spread over exclusive GPUs
- fix(plugin): pair per device limits by UUID when aligning kubelet IDs
- fix(awsneuron): cap whole-device core accounting to addressable cores
- fix(enflame): keep DRS profile core costs within the device budget
- fix(kunlun): make topology selection independent of device slice order
- fix(amd): keep allocation annotations decodable for empty registered types
- fix(device-plugin): remove panic(0) traps from getAPIDevices and dead util code
- fix(monitor): reuse the node-scoped pod informer for metrics
- fix(monitor): report metrics server listen failures
- fix(chart): target the scheduler metrics port by name
- fix(ascend): gate 910C module pair allocation on SuperPod
- fix(metrics): drop the constant container index label
- fix(scheduler): keep bare reasons in FilteringFailed events
- fix(device-plugin): propagate IMEX channels into the NVIDIA plugin
- fix(scheduler): use phase-aware accounting during NUMA refit
- fix(scheduler): validate NUMA refit quota with container positions
- fix(dashboard): use native node labels for host panels
- fix(util): return the canonical GPU scheduler policy for padded annotations
- fix(kunlun): compare elements instead of indices in calcscore sort
- fix(scheduler): keep multi-slot device usage across annotation round trip
- fix(monitor): count task priorities in a map, not a slice index
- fix(chart): render service labels at the right indent level
- fix(scheduler): clean annotationless pod deletes from cache
- Fix Ascend webhook reject pod with 'vnpu-core' resource
- fix(nvidia): guard Allocate against empty DevicesIds requests
- fix(chart): honor kube-scheduler image pull secrets
- fix(chart): keep scheduler livenessProbe inside the kubeScheduler container guard
- fix(scheduler): prune printedLog when a node is deleted
- fix(chart): keep workload labels on scraped HAMi metrics
- fix(nvidia): make managed admission env mutation idempotent
- fix(scheduler): serve the extender verbs on loopback, not the cluster port
- fix(scheduler): verify pod identity before the extender acts on a request
- fix(awsneuron): allocate by device index, not slice position
- fix(iluvatar): read the scaled core limit as a per card value
- fixing the awsneuron: derive core geometry per node
- fix(scheduler): score devices against the request on model-typed backends
- fix(monitor): drop duplicate
NVIDIAprefix fromdevice_typelabel - fix(device): enforce minimum limit across multiple ResourceQuota objects
- fix(remotegpu): keep multi-container pod allocations on one Lupine server
- fix(scheduler): report undecodable live Pod allocations
- fix(amd): round core requests up to whole WGPs
- fix(vGPUmonitor): make the MIG lock wait respect context cancellation
- fix(scheduler): gpumem score before gpumem-percentage
- fix(nodelock): keep an expired lock while its holder waits to be allocated
- fix: defer Ascend memory trimming until node filtering
- fix(util): serve only the pod the node lock names
- fix(hygon): prevent dcucores integer overflow
- fix(amd): judge node health by allocatable GPUs
- fix(amd): read a registration without a type as the AMD type
- fix(scheduler): keep HAMI_NODELOCK_EXPIRE unless --node-lock-timeout is set
- fix(scheduler): restore steady-state usage on pod replay
- Fix healthcheck always return true for some device vendors
- guard the PSP and pin images by digest
- fix(device-plugin): mark all replicas/MIG slices unhealthy on XID
- fix(device-plugin): check MIG allocations against the registered profiles
- fix(vGPUmonitor): skip terminated pods in per-container metrics
- fix(scheduler): ignore negative percentage
- fix(scheduler): store quota memory limits scaled by memoryFactor
- fix(scheduler): hold allocLock when removing a pod's allocation
- fix(chart): add actual NVML names to MIG allowlist
additions (42)
- PodGroup Support
- New schedule policy: mutex
- Add template to vNPU-mode
- add profiling support with dedicated HTTP bind address
- expose scheduler kube-qps, kube-burst and kube-timeout as values
- Flexible-MIG
- Real-usage monitoring for Flexible-mig workloads
- Allows running vllm on remote cuda
- Schedule policy combinations
- GPU/CPU Numa Align
- track InitContainers
- feat: add scheduler NUMA refit for device allocations
- Add Prometheus metrics for scheduler leader and cache sync state
- Feat/scheduler poddisruptionbudget
- feat: add host PID broker server and device plugin integration
- Expose Hardware Health and Error Metrics in vGPUmonitor
- add auto detecting nvidiaDriverRoot
- expose node-lock-retry-timeout and extender httpTimeout
- allow a pod to prefer a MIG profile over 3g via annotation
- pod level and container level overwrite env
- add remote-gpu device backend for lupine-served GPUs
- configurable per-card memory units
- Add CDI support for dynamic MIG devices
- schedule ENPU workloads with policy isolation
- support amd.com/numa-bind for multi-GPU requests
- add health probes
- match nodeconfig by label selector
- expose Ascend hami-core mode slot capacity
- set a configurable runtimeClassName on AMD GPU Pods
- add limitDelivery switch
- honor device cordon
- enhancement remote mode
- introduce
deviceSplitCountfor bothhami-coreandenpumode - add a redacted HAMi diagnostic bundle collector
- select Lupine server pools by label
- Add 'nvidia-smi' to remote client
- add MIG monitoring support
- add securityContext for the lupine server
- introduce
global.to switch between upstream and CN mirrorsimageSource - support session image pull secrets in configuration and templates
- add an unknown GPU process count metric
- add admission.k8s.io/v1 to webhook admissionReviewVersions
value changes (23)
- libvnpu performance optimization
- Add Missing Node Label to Memory Controller Metric in vGPUmonitor
- Optimize the Dynamic MIG instance lifecycle
- fix(deps): update Go dependencies and bump golang.org/x/net to v0.60.0
- chore: upgrade to go 1.27
- chore: build the images with golang 1.27.2
- score MIG placements and add backtracking fallback
- stop deep-copying whole Pods into the usage snapshot
- honor plugin-advertised hami-core percentage budget
- index device UUIDs once per scrape
- run GPUs for lupine instead of advertising them locally
- build the usage snapshot only for candidate nodes
- report memory and core resources to node capacity
- honor the topology-aware policy by XGMI links and NUMA
- whole-GPU hook bypass and direct NVML monitoring
- enhance fields validator
- honor preferred nodeAffinity in node score
- bump Go to 1.27.3
- pin the dcgm base image
- bump DCGM to 4.7.0-2
- go-dcgm to v1.4702.0
- bump golang.org/x/net from 0.61.0 to 0.62.0
- Update HAMi-core and image tag
constraints (9)
- Support Cluster Autoscaler
- Full AMD Support
- Ascend 950 Support
- account native sidecar container GPU resources
- add OpenShift &SELinux helm chart support
- whole-card/slice mixing guard
- support all four NeuronCores on Inferentia1 devices
- support gpumem-percentage memory requests
- Configure Ascend950DT 9582 whole-card scheduling
renames (3)
- rename DCU(HYGON) to HCU across resources, charts, and docs
- move all vendor configs to
devices.VENDOR - stable usage.cache name
removals (1)
- fix(chart): drop unused pods and nodes verbs from the device-plugin ClusterRole
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 브레이킹 체인지 같은 것들입니다.