首页 > 其他分享 >阅读笔记:Sybilla DLT任务重启判定系统

阅读笔记:Sybilla DLT任务重启判定系统

时间:2023-05-20 21:11:52浏览次数:47  
标签:Sibylla 训练 重启 Sybilla 作业 笔记 学习 failure DLT

论文简介

Sibylla: To Retry or Not To Retry on Deep Learning Job Failure 这篇论文发表在ATC 2022上,主题是提出了一个基于半监督学习的深度学习训练(DLT)作业调度的系统,该系统减少了GPU集群中不必要的作业重启操作。

背景知识

深度学习作业调度中的错误类型与处理机制

目前的大规模GPU训练任务集群中存在后端分布式存储系统专门用于存储在整个集群中训练期间生成的stdout和stderr日志。这些日志中记载了不同虚拟机或者容器的启动,运行情况。

论文中将深度学习作业中发生的错误(failure),分类为决定性(DT failure)非决定性(NDT failure),以此来确定后续需要针对这些错误的响应机制。决定性错误(或DT failure)是由固有的代码语法错误、API误用、错误配置的设置等引起的,这种错误一般无法正常恢复,即使重启虚拟机或者容器镜像也不能正常运行。与此相对,非决定性错误(或NDT failure)是偶然的,通常与临时网络连接丢失或作业分配节点的瞬态问题有关,这种错误可能会因为重启或者在运行而得到恢复。下图展示了论文中认为的这些错误。

在目前Microsoft Philly深度学习训练集群中,失败的训练作业会重启(Retry)固定次数,以克服NDT failure,并在重启后继续或开始运行深度学习训练作业。除了这种重启的作业异常处理机制,企业中的NoRetry机制则会终止每一个发生错误的作业,以避免在DT failure中毫无价值地尝试重新执行作业,占用固定的GPU资源。

Observation

在调度初始作业和失败后重启作业中,使用日志追踪,我们可以估计作业重启率(即经历重启的作业÷所有作业)以及重启期间花费的GPU时间占所有GPU时间的比例。

其中可以发现,深度学习训练作业的重启率在分布式任务上大约为20-40%,这也就说明实际集群中深度学习作业失败率并不容忽视。除开显而易见的结论,论文中还提到了一些重要的观察。具体而言,使用更多GPU的作业更频繁地重试执行,而重试期间消耗的GPU时间占作业大小的12.3-19.9%。我们记一个深度学习作业从正常运行到出现异常的时间为RTF(runtime to failure),那么对于失败的作业,DT failure和NDT failure的中值RTF为614秒和2458秒。这也表明重启的开销也并不低。

如果坚持Retry策略,例如retry所有出现问题的作业固定次数,那么势必会造成严重的资源浪费。但是坚持NoRetry策略是否合适呢?作者提到这样做的训练成功率将下降4.5%左右,其实对于那些可以通过重启正常运行的作业而言的体验会非常不好。

论文方法

论文提出的Sibylla是一个判定出现failure的深度学习作业是否需要重启的系统。其设计目标是高精度、易用、易集成。前两个都好解释,易集成则需要简单说明。Sibylla设计在一个独立的agent中运行,或者在应用程序端运行(例如,Apache YARN中的application Master)以与调度器独立交互。所以并不需要更改原集群的调度器就能将Sibylla集成入集群调度系统中。

Sibylla的思路非常简单,将本问题建模为一个二分类问题再利用AI的方法解决。具体思路是将原本集群中的stdlog和stderr文件作为输入训练一个神经网络,由神经网络的输出判定是否需要重启改作业。有此基础,下面我们来看看它的具体方法。

training workflow

data preprocessing

虽然思路是将log文件作为输入,但实际的log文件信息量并不小,且大部分是与出现failure无关或不起太大作用的。而神经网络如果一次性接受整个不加处理的文件,那么信息提取的结果也会相当有限。如何减少信息的输入呢,论文的思路是选择在出现与特定的failure相关关键字的行之后最多5行。Sibylla还包括关键字前面的一些行,因为它们可能指示导致失败的日志子序列。这样有效的完成了信息提取的第一步。
但仅仅如此问题依然存在,因为log文件是一个具备大量信息的半结构化数据,其中很多类似用户定义的error表达,或者特定的类型名称,函数路径等等都会极大得增加输入长度的不确定性。这些信息很多对最终判定的帮助也并不大。论文的思路是,在解析阶段,每个日志行被分类到一个结构化模板中,该模板主要重新移动与判定语义无关的单词,如非字符单词和停止单词。就如下图的左侧显示的那样:

解决了输入信息量的问题,下面就是如何完成输入的embedding了。Sibylla的思路是采用非深度学习方法进行embedding,这个过程如上图右侧。首先将每个单词数字化为一个矢量。然后,它通过基于TF-IDF(术语频率逆文档频率)得分对每个单词进行加权,将模板中每行的所有单词向量累积到单个语义向量条目中。

Model training

Embedding完成后的语义向量序列用作模型训练的输入。有两种具有代表性的RNN模型参与训练Sibylla:LSTM和基于注意力的GRU。所以模型本身比较简单,但值得一提的是其训练方式选择了半监督训练,采用投票自标注的方法进行模型训练。Sibylla用部分标记的数据开始模型训练,并通过在线方式自动标记未标记的数据来不断更新模型。

Automatic sample labeling

训练和自动标注的流程如下:

Sibylla利用了对预测结果进行投票的集成方法来决定失败类型,从而减轻了单个模型错误预测的影响。总的来说就是自标注的半监督学习+集成学习的方式构成其模型训练的整个过程。

神经网络的训练数据则是从操作NoRetry的公司获得了97个错误日志文件,并通过手动搜索Stack Overflow收集了另外159条错误消息得到的。此外这点数据很容易过拟合,所以论文还使用了两种流行的文本数据增强方法,WordNet和Word2Vec,用于用认知同义词替换原始日志文件中的单词,并创建一个新的数据增强文件。

实验

实验需要提到的并不多,本篇论文的实验纯模拟,通过深度学习集群数据集the Philly trace of MS来作业调度性能。

讨论

总的来说,这是一篇应用深度学习方法的典型文章,主要突出的创新点在于问题的切入点非常新,考虑了以往深度学习作业调度中基本被避开的失败问题。

标签:Sibylla,训练,重启,Sybilla,作业,笔记,学习,failure,DLT
From: https://www.cnblogs.com/medianet-ytc/p/notes_Sibylla_paper.html

相关文章

  • cmd python pip 笔记
    ......
  • 《人月神话》阅读笔记3
    《人月神话》是一本软件工程经典著作,作者是著名的计算机科学家弗雷德里克·布鲁克斯。本书主要探讨了计算机软件开发的几个核心问题,如时间与效率、团队协作、软件设计和管理等等,并提出了一些关于软件开发管理的思考和经验。本书的关键思想之一是“人月神话”,也就是在软件开发中添......
  • ABBAC900F学习笔记301:使用securityLock做解除联锁按钮的权限限制功能
    这一篇学习笔记,我在新浪博客记录过,因为担心丢失,在这里再记录一遍,新浪博客地址ABBAC900F学习笔记301:使用securityLock做解除联锁按钮的权限限制功能_来自金沙江的小鱼_新浪博客(sina.com.cn) 这个学习练习,实际上还是在以前学习基础上做的,没有多少新意,权当复习一遍吧。在虚拟......
  • Redis笔记(四):Java集成和配置
    JedisJedis是Redis官方提供的Java客户端,用于在Java应用程序中连接、操作Redis,它提供了与Redis通信的API,简化了Java开发者与Redis的交互流程。JedisGithubReadme:https://github.com/redis/jedis#getting-startedSpringBoot在SpringBoot2.x之后,原来使用的jedis被替换成了lettc......
  • 【学习笔记】(8) 拉格朗日插值
    拉格朗日插值首先一个定理:\(n\)个点(横坐标不同)唯一确定一个最高\(n-1\)次的多项式。那么,\(n\)个点的点值\((x_i,y_i)\)可以唯一确定一个\(n−1\)次多项式(为了叙述方便,本文中所有“\(k\)次多项式”“\(k\)次函数”的最高次项系数可以为0)。拉格朗日插值就是用......
  • 初等数论学习笔记
    线性筛素数直接上代码。constintMAXN=100000008;boolnp[MAXN];vector<int>prm,pre;voidgg(constintN=100000000){ pre.resize(N+1); for(inti=2;i<=N;i++){ if(np[i]==false){ prm.push_back(i); pre[i]=i; } for(autoj:prm)if(i*j<=N){ int......
  • 【学习笔记】(1) 差分约束
    1.算法介绍差分约束系统是一种特殊的\(N\)元一次不等式组,它包含\(N\)个变量\(X_1\simX_N\)以及\(M\)个约束条件,每个约束条件是由两个其中的变量做差构成的,形如\(X_i-X_j\lec_k\),其中\(1\lei,j\leN,1\lek\leN\)并且\(c_k\)是常数(可以是非负数,也可以......
  • 《程序员修炼之道--从小工到专家》阅读笔记01
    《程序员修炼之道–从小工到专家》是一本经典的软件开发实践指南书籍,被许多程序员视为进阶必读之书。以下是本人对该书第一章节的阅读笔记。第一章节题为:为什么需要修炼?显然,程序员和武林中的武功修炼者一样,都需要经过长期的学习、训练和实践,才能成为真正的专家。而与武术不同的是......
  • es笔记七之聚合操作之桶聚合和矩阵聚合
    本文首发于公众号:Hunter后端原文链接:es笔记七之聚合操作之桶聚合和矩阵聚合桶(bucket)聚合并不像指标(metric)聚合一样在字段上计算,而是会创建数据的桶,我们可以理解为分组,根据某个字段进行分组,将符合条件的数据分到同一个组里。桶聚合可以有子聚合,意思就是在分组之后,可以在每......
  • es笔记三之term,match,match_phrase 等查询方法介绍
    本文首发于公众号:Hunter后端原文链接:es笔记三之term,match,match_phrase等查询方法介绍首先介绍一下在es里有两种存储字符串的字段类型,一个是keyword,一个是text。keyword在存储数据的时候是作为一个整体存储的,不会对其进行分词处理text存储数据的时候会对字符串进行分......