hami
v2.11.0AI & MLACTION 6CHECK 7PLAN 2OTHER 176
アクセラレーター、スケジューリング、監視、リモート GPU、デプロイ機能を広げる保守リリースで、正確性と性能に関する修正も含まれます。アップグレード前には、変更されたデフォルト値、厳格化された検証と互換性要件、依存関係の更新、非推奨メトリクスの確認が必要です。
要対応 (6)
breaking
HAMI-coreの GPU 全体へのマウント廃止GPU 全体の割り当てに
HAMI-coreをマウントしなくなり、メトリクスはNVMLから直接エクスポートされます。breakingGPU 数、メモリ、コア数のデフォルト値を設定
GPU 数、メモリ、コア数のデフォルト値を設定しました。
breakingGPU コア使用率の範囲外要求を拒否
範囲
[0,100]外の GPU コア使用率を要求した場合に拒否するようにしました。breakingスケジューラー管理の割り当てアノテーション付き Pod を拒否
スケジューラーが管理する割り当てアノテーションを付けて作成された Pod を拒否するようにしました。
breakingコンテナ要求量を超える割り当てを拒否
コンテナの要求量を超える割り当てを拒否するようにしました。
breaking要求用アノテーションの削除
要求用アノテーションを削除しました。
影響確認 (7)
breaking
/refitの呼び出し元認証を必須化/refitを使用する場合に適用されます。/refitの呼び出し元に対する認証を必須にしました。breaking
Kubernetes1.23 を必須化Kubernetes1.23 に依存していない場合に適用されます。Kubernetes1.23 を要件としました。breaking
device-configのデフォルト値の扱いを変更device-configを設定する場合に適用されます。device-configのデフォルト値にはvalues.に記載された値だけを使用するようにしました。yaml breakingFit での namespace ResourceQuota 検査
namespace ResourceQuota を設定する場合に適用されます。
Fit で namespace ResourceQuota を確認するようにしました。
breaking
hygonのデフォルトコア値を更新hygonを実行する場合に適用されます。hygonのデフォルトのコア値を更新しました。breaking
birenとcambriconの不正なデバイス数を拒否birenまたはcambriconを実行する場合に適用されます。birenとcambriconで、0 または負のデバイス数を拒否するようにしました。breaking
nvidiaの小数 GPU メモリ使用率を拒否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
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回の破壊的変更も、その一例です。