一种基于Redis时间和权重关联的分布式优先级队列方法

news2024/11/17 10:56:56

技术背景:

深度学习平台(或存在异步任务调度的平台),存在不同的操作用户,用户存在不同的部门,调度的硬件服务器资源,按照不同的资源类型,操作系统,GPU卡的型号区分成不同的资源组,CPU资源,或者调试任务和训练任务区分,例如操作用户A,操作用户B,属于不同的部门,均具有对于资源组1080ti资源组的访问权限,且资源1080ti下只有1台1080ti的8卡的GPU服务器,用户A提交训练任务A-1需要8张卡,提交训练任务A-2需要4张卡,用户B提交训练任务B-1要4张卡,提交任务B-2需要1张卡,需要满足的功能业务需求点:

  1. 不同资源的排队任务的情况查看
  2. 对于用户的针对的资源的访问的Priority有管理员进行设置,Priority(1)~Priority(k)
  3. 根据用户的对于资源的等级可以优先抢占资源
  4. 对于同等优先级的任务和对于同一个用户提交的任务按照时间顺序进行排队等待
  5. 管理员可以根据任务的情况和状态删除排队中的任务
  6. 管理员或具备管理员权限的用户可以调整任务的位置,比如,调整到队列的头部,调整到队列的指定位置,调整到队列的尾部

以时间和用户对于资源的角色权重,完成对于资源组下的有限的资源的合理调度,并根据训练任务的和硬件资源组的特色提升硬件资源的利用率。

固有的深度学习的任务的调度策略为使用RabbitMQ,不同版本的RabbitMQ调用任务没有任务优先级策略,且无法满足灵活调整排队任务的如上功能特色需求和更高的性能需求,故基于Redis的zset的内存数据和zset本身的数据结构特色(根据Score自动排队)和数据持久化策略来实现高性能分布式任务调度队列的方法的方案来解决此深度学习平台的应用场景或存在类似场景的需求。也可产品上自行封装实现类似功能的zset的数据结构和数据持久化管理策略

核心创新点:

  1. 通过用户的权重和时间戳管理生成任务的综合Score,原理简单方便理解
  2. 以zset的特殊的高性能数据库结构,实现调度任务的自动高性能的排队
  3. 结合Redis内存数据库和磁盘持久化队列,解决分布式调度队列的高性能和灵活性依旧数据的可靠性的平衡
  4. 以任务的关键要素Score,以简单调整队列任务的Score完成高效的调整任务的位置的方法
  5. 基于Redis的内存数据库形式,可以进行分布式调度,且性能更加优秀

同时需要解决的调用约定,同样Priority根据对于资源的请求时间来排队,如下的方案步骤:
1.以资源的分组的创建资源自身的队列(Redis的zset)
2.用户A的训练任务1卡A-1和用户B的训练任务2卡B-1创建训练任务
3.信令服务接收创建命令,根据用户的信息获取用户的Priority信息和获取系统的ticker时间,根据策略公式生成训练任务的Score,把任务放入任务队列,基于如下计算公式:Score = 权重因子*Priority  + 时间戳(系统的32位ticker时间),例如权重因子:100000000000
4.消费进程或消费线程直接从队列Redis的zset取优先级Score最高的消息进行处理
5.Redis实例进行定时持久化到本地磁盘,以处理任务消息的异常发生时的持久化动作
6.系统管理员可以直接修改权重因子直接调整任务在队列中的位置
7.调整任务在排队中的任务的位置情况,按照如下策略计算Score,同一个任务可以反复调整
1)调整到头部,Score  = 队列头部任务Score  +  1
2)调整到尾部,Score  = 队列尾部任务Score  -  1
3)调整到中间位置,Score  =  (目标位置的前一个任务Score + 目前位置的后一个任务Score) / 2
8.消费进程根据运行中的任务的情况和调度任务的情况设定任务的回馈信息,如:排队中,硬件资源不足,调度中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1142547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【EI会议征稿】 2024年遥感、测绘与图像处理国际学术会议(RSMIP2024)

2024年遥感、测绘与图像处理国际学术会议(RSMIP2024) 2024 International Conference on Remote Sensing, Mapping and Image Processing 2024年遥感、测绘与图像处理国际学术会议(RSMIP2024)将于2024年1月19日-21日在中国厦门举行。会议主要围绕遥感、测绘与图像处理等研究领…

系统定时器

存不住时间,时间转换成对应的数字量,频率和周期的一个关系了,周期是以时间为单位,时间存不住,把周期换成频率 SysTick一般用在实时操作系统,为系统提供时钟信号, systick包括俩种时钟源 1.FCL…

DBeaver安装与使用教程(超详细安装与使用教程),好用免费的数据库管理工具

DBeaver安装步骤 资源下载: https://download.csdn.net/download/qq_37181642/88479235 官网地址: https://dbeaver.io/ 安装dbeaver 点击上图.exe安装工具,安装完成后不要打开 。 windows配置hosts 在hosts文件中加入: 127.0.0…

learning rate

这里写目录标题 learning rate单一固定(one-size-fits-all)的学习率Model训练到驻点很困难(学习率太大不能收敛,学习率太小收敛太慢) 如何客制化学习率?- 引入参数σσ常见的计算方式 - Root mean square&a…

input实现手机验证码输入

实现效果&#xff1a; 实现思路&#xff1a; 将code框定位到input框上通过input的输入实现验证码的输入将input输入的支赋值在code框上 小demo&#xff1a; <template><a-row :gutter"[12, 12]" class"m-12"><a-col :span"24"…

面向对象(类/继承/封装/多态)详解

简介: 面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种广泛应用于软件开发的编程范式。它基于一系列核心概念&#xff0c;包括类、继承、封装和多态。在这篇详细的解释中&#xff0c;我们将探讨这些概念&#xff0c;并说明它们如何在P…

【Git企业开发】第一节.Git 初识

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a; 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff01;&#xff01…

Clion 初始化 QT

1.新建项目 2.打开项目&#xff0c;如果出现报错 By not providing “FindQt5.cmake” in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by “Qt5”, but CMake did not find one. 解决方法&#xff1a;安装QT5和对应的…

吴恩达《机器学习》1-2:什么是机器学习?

一、什么是机器学习&#xff1f; Arthur Samuel&#xff08;1959&#xff09;&#xff1a; 他定义机器学习为&#xff0c;在进行特定编程的情况下&#xff0c;给予计算机学习能力的领域。 Tom Mitchell&#xff08;1998&#xff09;&#xff1a; 他定义的机器学习是&#xff0c…

一文通透位置编码:从标准位置编码到旋转位置编码RoPE

前言 关于位置编码和RoPE 我之前在本博客中的另外两篇文章中有阐述过(一篇是关于LLaMA解读的&#xff0c;一篇是关于transformer从零实现的)&#xff0c;但自觉写的不是特别透彻好懂再后来在我参与主讲的类ChatGPT微调实战课中也有讲过&#xff0c;但有些学员依然反馈RoPE不是…

《计算机工程》期刊投稿记录(实时更新)

文章目录 2023年10月27首次更新 2023年10月27首次更新 本人于2023-09-22投稿《计算机工程》&#xff0c;预计2023-10-25完成加急外审&#xff0c;目前是2023-10-27&#xff0c;超时2天。同门超时17天。 在CSDN水评论区后发现&#xff1a;近期投稿《计算机工程》的文章&#x…

Android开发知识学习——HTTP基础

文章目录 学习资源来自&#xff1a;扔物线HTTPHTTP到底是什么HTTP的工作方式URL ->HTTP报文List itemHTTP的工作方式请求报文格式&#xff1a;Request响应报文格式&#xff1a;ResponseHTTP的请求方法状态码 HeaderHostContent-TypeContent-LengthTransfer: chunked (分块传…

并发编程 - 并发可见性,原子性,有序性 与 JMM内存模型

1. 并发三大特性 并发编程Bug的源头&#xff1a; 原子性 、 可见性 和 有序性 问题 1.1 原子性 一个或多个操作&#xff0c;要么全部执行且在执行过程中不被任何因素打断&#xff0c;要么全部不执行。 在 Java 中&#xff0c;对基本数据类型的变量的读取和赋值操作是原子性操…

Linux中进程的控制(上)

对于进程控制的第一个学习部分那就是使用fork去创建子进程这一部分&#xff0c;请去复习fork那一节的笔记。 这里我们主要学习一个在使用fork创建子进程的时候&#xff0c;是如何进行写时拷贝的&#xff0c;在之前的那一节fork的学习中我们学习到的是使用fork创建一个子进程&a…

企业管理系统有哪些?

文章目录 企业管理系统一、ERP 企业资源计划&#xff08;Enterprise Resource Planning&#xff09;二、OMS 订单管理系统&#xff08;Order Management System&#xff09;三、WMS 仓库管理系统&#xff08;Warehouse Management System &#xff09;四、TMS 运输管理系统 (Tr…

【计算机网络】认识协议

目录 一、应用层二、协议三、序列化和反序列化 一、应用层 之前的socket编程&#xff0c;都是在通过系统调用层面&#xff0c;如今我们来向上打通计算机网络。认识应用层的协议和序列化与反序列化 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应…

GCC编译器 gcc编译过程 ‘ ‘ ‘ ‘ --- 记一次查缺补漏 ‘ ‘

文章目录 前言GCC介绍GCC编译过程预处理编译汇编链接关于链接&#xff1a; 前言 学习的过程遇到了.s后缀的文件&#xff0c;原来是gcc的编译过程&#xff0c;复习一下。 又牵扯到了各种C编译器&#xff0c;诸如MSVC、MinGW、ClangLLVM等&#xff0c;挖个坑先。 还有关于动态链…

大厂面试题-JVM为什么使用元空间替换了永久代?

目录 面试解析 问题答案 面试解析 我们都知道Java8以及以后的版本中&#xff0c;JVM运行时数据区的结构都在慢慢调整和优化。但实际上这些变化&#xff0c;对于业务开发的小伙伴来说&#xff0c;没有任何影响。 因此我可以说&#xff0c;99%的人都回答不出这个问题。 但是…

AI类APP上线需要注意的问题

上线AI类应用程序需要考虑一系列重要问题&#xff0c;以确保应用程序的顺利运行、用户满意度和法规遵从。以下是在上线AI应用程序时需要注意的关键问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。…

目标识别、目标追踪等计算机视觉技术在视频监控领域的应用

随着科技的不断进步和发展&#xff0c;人们的科技意识也在不断提高&#xff0c;人工智能技术也在逐渐改变着人类的生产和生活方式&#xff0c;尤其是在安防监控领域&#xff0c;人工智能技术的落地应用越来越多。 计算机视觉技术是指设备能够“看到”它正在进行的操作&#xf…