开发者
资源
文档评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

核隔离使能方法

在执行核动态隔离前,请保证智算任务以及其他通算任务已经启动。当前只支持以vLLM作为推理引擎的智算任务。

  1. 获取AIHost-Turbo代码。
    1
    2
    3
    git clone https://gitcode.com/openeuler/AIHost-turbo.git
    cd AIHost-turbo/a-sched
    pip install .
    
  2. 执行亲和脚本。参考指令如下:
    1
    sudo python examples/affinity_vllm.py -dp-size 4 -dp-size-local 4 -dp-start-rank 0 -tp-size 4 -ep -r
    

    执行完成后,即可实现vLLM推理服务亲和执行,将智算任务与通算任务的核心资源隔离,提升推理性能。

    表1 脚本执行参数说明

    参数

    说明

    -r/--run

    运行亲和调度。

    -d/--dry-run

    试运行,仅做方案决策,不影响实际的执行结果。

    -p/--print

    打印当前实际的亲和信息。

    -restore

    恢复亲和性到调度前状态。

    --tp-size

    张量并行(TP)大小(必填),该参数与vLLM启动时参数相同。

    --dp-size

    数据并行(DP)大小(必填),该参数与vLLM启动时参数相同。

    --dp-size-local

    当前节点的DP大小(单节点时取值与--dp-size相同即可)。

    --dp-start-rank

    当前节点的DP起始rank(单节点时取0即可)。

    -ep/--enable_ep

    使能专家并行(EP)。

    示例输出如下:

    示例输出解释:

    • 进程与线程条目:描述了主要计算进程或内部线程的资源分配范围。
      1
      - PROCESS[2024621]: name=VLLM::EngineCore_DP0, priority=NORMAL, socket=[0, 1, 2, 3], numa=[0-7], cluster=[0-79], cpu=[0-319]
      
      表2 输出参数说明

      字段

      示例数值

      说明

      类型

      [PROCESS] / [Thread]

      标识该条目是进程还是线程。

      PID

      2024621

      操作系统分配的唯一标识符(Process ID)。

      Name

      VLLM::EngineCore_DP0

      进程名称。DP0通常表示数据并行组0;TP表示张量并行;EP表示专家并行。

      Priority

      NORMAL

      进程/线程的调度优先级。

      Socket

      [0, 1, 2, 3]

      允许运行的CPU插槽(物理CPU)编号。

      NUMA

      [0-7]

      允许访问的NUMA节点范围。

      CPU

      [0-319]

      允许运行的CPU逻辑核心范围。

    • 硬件中断条目:描述了硬件中断(IRQ)的具体绑定位置,是性能调优的关键,决定了哪个CPU核心负责处理NPU的通信。
      1
      - Irq[2062](sq_send_trigger_irq): numa=[6], cluster=[62], cpu=[249]
      
      表3 输出参数说明

      字段

      示例数值

      说明

      类型

      Irq[2062]

      标识这是一个中断请求,后跟中断号。

      描述

      (sq_send_trigger_irq)

      中断类型名称,通常代表特定的硬件通信事件。

      NUMA

      [6]

      该中断被绑定到的具体NUMA节点。

      Cluster

      [62]

      逻辑核心所属的集群编号(逻辑分组)。

      CPU

      [249]

      最关键的字段:该中断被精确绑定到的具体CPU核心ID。

    • AIHost-Turbo修改进程/线程亲和性需要root权限,在执行时需要显式添加sudo,或使用root用户。
    • 完成亲和使能后,会生成一个JSON文件,该文件记录了恢复使能亲和状态前使用的信息,删除后将无法使用脚本恢复亲和前状态。
  3. 恢复到调度前状态。
    1
    sudo python examples/affinity_vllm.py -dp-size 4 -dp-size-local 4 -dp-start-rank 0 -tp-size 4 -ep -restore
    

    示例输出:

    恢复状态时,依然需要输入启动时的dp-size和tp-size参数,否则将无法正常识别需要恢复的进程和线程。