《算力网络中高效算力资源度量方法》论文解读与实验复现

论文摘要

  1. 算力度量的研究处于起步阶段,已有的度量方法相对单一,只考虑了部分静态或动态指标,难以保证算力资源利用率算力资源匹配准确率
  2. 设计了先静后动的混合式度量方法(hybrid metric method, HMM),考虑节点基础性能及动态工作状态的变化;在指标选取上进行了全面考量。
  3. 实验和数据分析证明能有效提升算力资源利用率和算力资源匹配准确率。

关键词

算力网络(computing-first network)
算力度量(computing resource metric)

论文贡献

  1. 提出更加综合的度量指标
  2. 提出混合式算力度量方法,其性能表现更优

研究现状

对于算力度量处于起步阶段,目前研究对于算力度量标准的设计较为单一,大部分单独使用静态指标或动态指标来衡量,容易产生资源利用率低和匹配准确性差等问题。

  • 只有静态指标:节点基础性能相近时,哪个拥有的资源更加匹配用户节点
  • 只有动态指标:不考虑节点基础性能,算力资源利用率低

传统资源度量技术

CPU性能衡量

CPI = 每条指令的周期 * 每条指令的事件
TOPS、MIPS作为衡量CPU性能的静态指标

GPU性能衡量

与IPC(instructions per cycle)、缓存命中率(cache hit rate)、DRAM利用率、L2利用率等有关
GOPS作为衡量GPU性能的动态指标

除此之外,还有存储等因素
RAM、硬盘存储量作为衡量存储的静态指标

算力资源度量技术

请添加图片描述
文献1:均为静态指标
文献2-3:只考虑CPU利用率和存储剩余量

方案设计

设计原则

  • 全面性:先满足基础性能需求,再考虑动态性能需求
  • 综合性:考虑了基础算力、智能算力、存储能力、网络能力四大指标
    1. 基础算力: TOPS/W、MIPS为静态指标,CPU空闲率为动态指标
    2. 智能算力:GOPS为静态指标,GPU空闲率为动态指标
    3. 存储能力:RAM和硬盘存储大小为静态指标,硬盘存储剩余量为动态指标
    4. 网络能力:吞吐率作为动态指标
  • 可操作性:场景案例分析,只考虑动态不满足静态,只考虑静态不满足动态,HMM全部满足
    在这里插入图片描述

工作流程

  1. 利用熵权法计算节点的基础性能分数

将TOPS/W、GOPS、MIPS、RAM、硬盘存储大小五个静态因素定义成五元组I = (I1, I2, I3, I4, I5),通过熵权法取得客观的指标权重w = {w1, w2, w3, w4, w5}, 从而得到一个多因素静态联合指标M,M = w1 * I1 + w2 * I2 + w3 * I3 + w4 * I4 + w5 * I5

  1. 得到节点基础性能分数后,对基础性能进行分段

采用CART算法为排好序的算力节点分数进行分段

  1. 在确定用户对节点基础性能需求后,分析动态因素

采用n维欧式距离法对动态因素联合分析

  1. 找出最短距离的节点,即为最优节点

在这里插入图片描述

实验评估

  1. 数据集:收集1000台服务器的算力信息(TOPS/W,GOPS,MIPS,RAM,硬盘存储大小)
  2. 熵权法得到节点基础性能分数,CART分类,得到静态性能为低、中、高三类节点的数量
    在这里插入图片描述
  3. 节点利用率测定,设置1000个节点信息,更改用户任务数量(100,200, … ,1000)
    在这里插入图片描述
  4. 节点匹配准确率测定
    在这里插入图片描述

实验复现

算力度量指标

由于无法找到测定TOPS/W的方式,以及GOPS方式,决定将静态指标变更为:
MIPS(衡量CPU)、GFLOPS(衡量GPU的浮点运算能力)、RAM、硬盘大小

动态指标依然是:CPU利用率、GPU利用率、硬盘剩余量、吞吐率

数据集构造

测定了30台计算机的静态算力信息(来自同学or实验室)

在这里插入图片描述

根据静态性能,采用随机数等方式生成30条动态算力信息

在这里插入图片描述

采用随机数方式生成30条用户任务需求

在这里插入图片描述

算法复现

代码文件结构:
在这里插入图片描述

其中CART的原理和python实现见另一篇博客
决策树之CART算法分类树原理及python实现


只贴main代码部分:

if __name__ == '__main__':
    # 读取节点的静态性能数据,得到静态性能评分
    m, n, staticData, labelList = bp.readStaticPerform()
    print("节点的数量为:" + str(m))
    print("评价指标的数量为:" + str(n))
    M = bp.getBaseScore(m, n, staticData)
    print("节点的评分为:")
    print(M)
    # 利用CART算法训练决策树
    features = ['score']
    labels = ['low', 'mid', 'high']
    x, y = dt.readDataSet()
    model = dt.train(x, y)
    dt.drawTree(model, features, labels)
    # 读取用户需求
    x, y, userRequire = readUserRequirement()
    staticRequire = []
    dynamicRequire = []
    for ur in userRequire:
        staticRequire.append(ur[0])
        dynamicRequire.append([float(tk) for tk in ur[1:]])
    # 读取节点的静态性能分数
    sScore = bp.readScore()
    # 读取节点的动态性能数据
    m, n, dynamicData = dp.readDynamicPerform()
    # 已选择节点集合
    usedNode = []
    # 已匹配的任务集合
    overTask = []
    # 遍历用户需求,对于每个用户需求,先匹配静态性能,再匹配动态性能
    for i in range(x):
        result = dt.predictClassify(model, [[int(staticRequire[i])]])
        minDist, index_of_best_node = dp.getBestDistance(m, n, dynamicRequire[i], dynamicData, int(staticRequire[i]), result, sScore)
        if minDist > 0 and index_of_best_node > -1:
            usedNode.append(index_of_best_node)
            overTask.append(i)
            # 选择该节点,更新其变化后的动态性能
            for j in range(n):
                dynamicData[index_of_best_node][j] -= dynamicRequire[i][j]

    print("已选择的算力节点有:")
    print(usedNode)
    print("节点的利用率为:")
    print(len(set(usedNode)) / m)

复现结果

D:\Configure\python\python.exe D:/ProgramFiles/seApp/pycharm-workspace/CPN/main.py
节点的数量为:30
评价指标的数量为:4
节点的评分为:
[26, 7, 25, 24, 22, 18, 45, 13, 19, 7, 30, 2, 19, 24, 3, 19, 30, 14, 42, 3, 12, 38, 14, 14, 43, 24, 28, 35, 69, 90]
预测结果准确性:
1.0
分数为:[5] 需要基础性能为 low 的节点 选择的节点为:7
分数为:[34] 需要基础性能为 high 的节点 选择的节点为:24
分数为:[38] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[7] 需要基础性能为 low 的节点 选择的节点为:-1
分数为:[34] 需要基础性能为 high 的节点 选择的节点为:21
分数为:[24] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[45] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[56] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[35] 需要基础性能为 high 的节点 选择的节点为:27
分数为:[26] 需要基础性能为 mid 的节点 选择的节点为:0
分数为:[38] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[70] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[39] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[38] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[31] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[29] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[46] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[26] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[19] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[63] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[33] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[31] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[69] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[38] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[25] 需要基础性能为 mid 的节点 选择的节点为:-1
分数为:[57] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[38] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[54] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[56] 需要基础性能为 high 的节点 选择的节点为:-1
分数为:[41] 需要基础性能为 high 的节点 选择的节点为:-1
已选择的算力节点有:
[7, 24, 21, 27, 0]
节点的利用率为:
0.16666666666666666

上述30个任务,有5个被分配到了算力节点。
对于上述的30个节点,输入各自的算力信息,通过CART算法分类的结果如下图:
在这里插入图片描述
在图中可知,
score <= 13.5的为low
13.5 < score <= 32.5的为mid
score > 32.5的为high

由于涉及到复现过程中节点数据不够等问题,结果与论文中存在差异。

一些思考

  1. 在构造数据集对于数据进行标签的标注的过程中,想到本文使用熵权法意在得到一个比较客观的权重,且指标较为全面,似乎通用性较强。那么若对于特定的应用场景比如用户的任务需求为深度学习等需要用到高算力的情况,是否可以采用一些主观赋权的方法,有意识倾向于某些指标,使得其适配于特定的场景?

赋权法

  1. 主观赋权法
    AHP层次分析法:一种解决多目标的复杂问题的定性与定量相结合的决策分析方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能否实现的标准之间的相对重要程度,并合理地给出每个决策方案的每个标准的权数,利用权数求出各方案的优劣次序,比较有效地应用于那些难以用定量方法解决的问题。
  2. 客观赋权法
  • 主成分分析(Principal Component Analysis,PCA):一种降维的统计方法,将原来变量重新组合成一组新的相互无关的几个综合变量,同时根据实际需要从中可以取出几个较少的总和变量尽可能多地反映原来变量的信息。
  • 熵权法:仅依赖于数据本身的离散性。不确定性越大,熵就越大,包含的信息量越大;不确定性越小,熵就越小,包含的信息量就越小。
  1. 组合赋权法
    采用主观赋权法和客观赋权法相结合的组合赋权方法,以弥补单一赋权带来的不足。将两种赋权方法相结合。
  1. 对于特定的服务场景,是否需要研究一下业务到模型的映射?一种思路是:确定特定业务场景——业务场景建模——算力节点度量方法——评估度量方法有效性


参考内容:
【1】柴若楠,郜帅,兰江雨等.算力网络中高效算力资源度量方法[J].计算机研究与发展,2023,60(04):763-771.
【2】https://blog.csdn.net/AAGHJJSJBJSHJ/article/details/119790443

基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值