HAMi 发布 v2.4.0 版本:异构计算虚拟化迈向新高度

科技   2024-10-14 12:00   上海  

九月下旬 HAMI 2.4.0 版本正式发布,新版本在异构、监控、设备管理等方面带来了更多的新能力,同时持续在易用性上做了提升。

01

背景

HAMi,全称 Heterogeneous AI Computing Virtualization Middleware,是由第四范式DaoCloud 联合发起的高效异构 AI 设备管理工具。目前,它已成为 CNCF(云原生计算基金会) 的 sandbox 项目,展示了其在云原生生态中的发展潜力。

HAMi 支持多种异构设备的管理和调度,包括昇腾、寒武纪、天数、海光等,旨在为用户提供统一的管理、调度和监控解决方案,提升 AI 芯片的使用效率。通过设备的共享与资源隔离,以及先进的设备虚拟化功能,HAMi 能够有效地优化资源利用。结合优先级调度、Spread 和 Binpack 等高级调度策略,HAMi 进一步提升了 AI 算力资源的利用率,成为异构 AI 芯片场景下的重要工具。

为了更好地了解大家的使用场景、实际操作中的问题与不足,以及对未来功能的期待和社区发展的建议,HAMi maintainer 团队特别发起了一次问卷调查,诚挚邀请大家积极参与,分享宝贵反馈,助力 HAMi 的持续进步与成长。

参与问卷调查:

02

新特性总览

  • 正式支持华为 Ascend 910b:华为的 Ascend 910b NPU 设备已被完全支持,拓宽了 HAMi 在异构设备管理上的广度,使其在 NPU 虚拟化场景中更加灵活和高效。

  • Ascend NPU 自定义配置支持:用户现在可以根据需要自定义 Ascend NPU 的虚拟化配置文件,提升了灵活性。

  • 按 UUID 或索引过滤设备:在节点注册时,可以根据 UUID 或索引进行设备过滤,提高了资源调度的精细化管理。

  • 新增调度事件信息:新增了更详细的调度事件信息,方便用户在发生调度异常时快速定位问题并排除故障。

  • 新增 HAMi UI 界面:可视化呈现设备状态与使用情况,实时监控一目了然,让调度与管理更加直观高效。

03

新特性简介

正式支持华为 Ascend 910b

新版本将正式支持华为 Ascend 910b 以及 Ascend310P 设备,提供了动态 NPU 虚拟化能力,可通过用户的需求,动态的切分 VNPU 设备并且进行挂载,使用方式大致如下:

Ascend910B

apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  containers:
    - name: ubuntu-container
      image: ascendhub.huawei.com/public-ascendhub/ascend-mindspore:23.0.RC3-centos7
      command: ["bash", "-c", "sleep 86400"]
      resources:
        limits:
          huawei.com/Ascend910B: 1 # requesting 1 Ascend
          huawei.com/Ascend910B-memory: 2000 # requesting 2000m device memor

Ascend310P

apiVersion: v1
kind: Pod
metadata:
  name: gpu-pod
spec:
  containers:
    - name: ubuntu-container
      image: ascendhub.huawei.com/public-ascendhub/ascend-mindspore:23.0.RC3-centos7
      command: ["bash", "-c", "sleep 86400"]
      resources:
        limits:
          huawei.com/Ascend310P: 1 # requesting 1 Ascend
          huawei.com/Ascend310P-memory: 1024 # requesting 1024m device memory

目前 Ascend 910b 仅支持 1/4 和 1/2 两种分片策略。Ascend 310p 支持 3 种分片策略,1/7,2/7,4/7。pod 的显存请求将自动与最接近的分片策略保持一致。

模板详情请参考昇腾官方文档:https://www.hiascend.com/document/detail/zh/computepoweralloca/30rc2/cpaug/cpaug_0005.html

按 UUID 或索引过滤设备

在故障隔离的场景中,有时我们需要将某一个出现故障的 GPU 设备进行隔离,不让任务调度到故障设备上,而在新版本中,HAMI 能够支持使用 UUID 或者 GPU 索引的方式去过滤注册到 K8s 中的 GPU 设备,从而达到不允许任务调度到故障设备上的目的。其使用方式如下:

修改 HAMI 的 Configmap

{
        "nodeconfig": [
            {
                "name": "m5-cloudinfra-online02", //节点名称
                "devicememoryscaling": 1.8,
                "devicesplitcount": 10,
                "migstrategy":"none",
                "filterdevices": {
                  "uuid": ["GPU-54ea13f7-27d8-c1e4-4b86-9411e1283dff"],
                  "index": []
                }
            }
        ]
    }

这个案例中,成功修改 Configmap 后,需要手动重启 Hami-device-plugin 组件使其生效,k8s 不会再将 GPU 应用调度到此 GPU 设备上。

新增调度事件信息

在之前的版本中 ,如果 Pod 调度失败,那么将会很难排查,因为 HAMI 没有注册调度相关的事件信息,这为排障带来了很大阻碍。在新版本中,HAMI 对调度事件这部分进行了优化,新增了更多的调度事件信息,依赖这些信息能够更加方便的进行排障,示例如下:

调度成功:

(base)   scheduler git:(master)  kubectl describe  po nginx-deployment-7bd89f854c-5p2xv
Name:             nginx-deployment-7bd89f854c-5p2xv
Namespace:        default
Priority:         0
Service Account:  default
...
...
...
Events:
  Type    Reason            Age   From            Message
  ----    ------            ----  ----            -------
  Normal  Scheduled         6s    hami-scheduler  Successfully assigned default/nginx-deployment-67f97f4d9d-wtzzd to controller-node-1
  Normal  FilteringSucceed  7s    hami-scheduler  Successfully filtered to following nodes: [controller-node-1] for default/nginx-deployment-67f97f4d9d-wtzzd
  Normal  BindingSucceed    7s    hami-scheduler  Successfully binding node [controller-node-1] to default/nginx-deployment-67f97f4d9d-wtzzd
  Normal  Pulling           6s    kubelet         Pulling image "docker.m.daocloud.io/nginx:latest"
  Normal  Pulled            5s    kubelet         Successfully pulled image "docker.m.daocloud.io/nginx:latest" in 1.075344559s (1.075360343s including waiting)
  Normal  Created           5s    kubelet         Created container nginx
  Normal  Started           5s    kubelet         Started container nginx

调度失败:

(base)   scheduler git:(master)  kubectl describe po nginx-deployment-8dc9c4774-txbzf
Name:             nginx-deployment-8dc9c4774-txbzf
Namespace:        default
Priority:         0
...
...
...
Events:
  Type     Reason            Age   From            Message
  ----     ------            ----  ----            -------
  Warning  FailedScheduling  8s    hami-scheduler  0/2 nodes are available: 1 node(s) had untolerated taint {node.kubernetes.io/unreachable: }. preemption: 0/2 nodes are available: 1 No preemption victims found for incoming pod, 1 Preemption is not helpful for scheduling.
  Warning  FilteringFailed   9s    hami-scheduler  no available node, all node scores do not meet

新增 HAMi UI 界面

在新版本中,HAMI 同步上线了 Web UI 组件,为用户提供了资源管理、节点管理、显卡管理以及任务管理等视图,用户能够在 UI 中清晰地了解集群中 GPU 资源使用的情况,使团队能够更有效监控资源消耗。

更多详情请参考:https://github.com/Project-HAMi/HAMi-WebUI

04

DaoCloud 贡献

在 HAMI 2.4.0 版本发布的周期中,DaoCloud 在其中也参与了不少研发与 Bug 修复工作,以下是部分 PR:

[1] 新增调度事件信息
https://github.com/Project-HAMi/HAMi/pull/417

[2] 按 UUID 或索引过滤设备
https://github.com/Project-HAMi/HAMi/pull/495
https://github.com/Project-HAMi/HAMi/issues/491

[3]  Ascend NPU 自定义配置支持
https://github.com/Project-HAMi/HAMi/pull/510

[4] HAMI 基础镜像优化
https://github.com/Project-HAMi/HAMi/pull/508

[5] HAMI CI 相关优化
https://github.com/Project-HAMi/HAMi/pull/501
https://github.com/Project-HAMi/HAMi/pull/473
https://github.com/Project-HAMi/HAMi/pull/499
https://github.com/Project-HAMi/HAMi/pull/520

[6] 新增容器维度的 GPU 利用率指标
https://github.com/Project-HAMi/HAMi/pull/258
https://github.com/Project-HAMi/HAMi-core/pull/4
https://github.com/Project-HAMi/HAMi/pull/280

[7] 优化调度逻辑
https://github.com/Project-HAMi/HAMi/pull/451
https://github.com/Project-HAMi/HAMi/pull/336

[8] 修复多容器设备分配错误
https://github.com/Project-HAMi/HAMi/pull/217



点击【阅读原文】参与问卷调查




 本文作者 



汤海

「DaoCloud 道客」云原生研发工程师



热门推荐

            

访问以下网址,或点击文末【阅读原文】立即体验

d.run,让算力更自由
https://d.run/




DaoCloud 公司简介

「DaoCloud 道客」,云原生领域的创新领导者,成立于 2014 年底,凭借其自主知识产权的核心技术,成功打造了新一代云原生操作系统 DaoCloud Enterprise 5.0,致力于推动企业数字化、智能化转型。依托在云原生领域的技术积淀与持续创新,「DaoCloud 道客」推出 d.run 算力一体化解决方案,作为专业的技术提供商参与并推动多个区域算力枢纽中心的建设,为各行各业提供稳定、高效的算力支持。成立迄今,公司已在金融科技、先进制造、智能汽车、零售网点、城市大脑等多个领域深耕,标杆客户包括交通银行、浦发银行、上汽集团、格力集团、京东方、屈臣氏集团等。公司总部位于上海,并在新加坡、北京、深圳、成都、南京、武汉等地设立多家分公司及合资公司,总员工人数超过 300 人,是国家级“专精特新”小巨人企业、上海市高新技术企业,并入选了科创板培育企业名单。


网址:www.daocloud.io

邮件:info@daocloud.io

电话:400 002 6898



道客船长
分享云原生技术相关信息,助力开发者和企业云海扬帆!本公众号由 DaoCloud 负责运营
 最新文章