北京大学区块链公开课


本课程主要讲解区块链的基本概念和实现原理,面向具有计算机相关的基础知识,对区块链技术和应用感兴趣的同学。 通过这门课的学习,能够掌握比特币、以太坊等区块链技术的设计思路并有效解决实际问题。



高效低延迟的虚拟机热备份系统研究


基于虚拟化技术的双机热备份系统往往被认为是提供容错服务的有效手段之一,该系统一般要求在两台物理机上分别运行主虚拟机和备份虚拟机,主虚拟机周期性地将其完整的机器状态备份到备份虚拟机中,一旦主虚拟机所在物理机发生硬件故障,则由备份机接管,继续执行。然而传统的虚拟机热备份系统往往会引入极大的性能开销以及极高的网络延迟,而这往往是这些关键应用所无法接受的,因此也限制了虚拟机热备份系统的应用。本团队针对上述问题,从多个角度出发,深入研究,分别实现了Taiji以及Phantasy两个虚拟机热备份系统,较好的解决了热备份系统运行性能开销过大及网络延迟过长等问题。



基于硬件辅助虚拟化的

多核确定性重演系统研究


虚拟机确定性重演系统在记录阶段将程序执行时发生的所有不确定性事件记录到日志中,在重演阶段选取相同的检查点作为执行起始点,并且在相同位置插入记录阶段的所有不确定性事件,使得处理器执行相同的指令流,进而得到一致的输出和结果。然而多核处理器环境的出现给确定性重演技术带来了极大的挑战,本研究团队提出了基于硬件辅助虚拟化的多核确定性重演系统——Samsara。Samsara是第一个基于硬件辅助虚拟化技术来从软件上实现多核虚拟机在线确定性重演的系统,该系统采用了基于执行块的方法,在运行时将虚拟处理器执行的指令划分为若干个指令块,通过指令块内存访问写时复制机制和指令块的提交-回滚机制保证指令块的执行满足原子性和可串行性,通过记录指令块的长度和提交顺序实现对于共享内存访问交织的记录。该方法使得对共享内存交织的记录能够以指令块为粒度进行处理,从而大大提高了记录效率并且减少了记录日志的大小。



跨编程语言的分布式

机器学习系统研究


随着互联网的发展,研究人员能够获取到越来越多的数据,单机训练方法难以满足研究人员快速高效训练模型的需求,因此分布式机器学习框架成为了当下的主流选择。现有的主流机器学习框架包括TensorFlow,PyTorch,Petuum等,如果使用以上框架,研究人员需要学习目标框架的编程语言,然后根据该框架的接口重新编写机器学习代码。现有的机器学习框架都存在跨编程语言的问题,用户为了使用这些训练框架需要重新学习一门新的编程语言,这带来了高昂的开发代价;现有的机器学习训练框架大多采用检查点机制进行故障恢复,因此在容错方面以及集群动态扩展方面还有明显的提升空间。

基于现有机器学习框架的不足,本文提出一种高可用的跨编程语言的分布式机器学习训练框架Plug-in ML。该框架基于参数服务器架构,使用进程间通信方式与原有单机机器学习程序交换模型参数;此外,本框架兼容任何的编程语言,可以使用原有的单机机器学习程序与本框架对接,显著降低了研究人员的使用门槛,另外还支持动态的增加和删除训练节点,提供用户透明的网络通信方式、支持可配置的模型同步方式以及具有完备的容错机制。

研究表明,通过增加简单的交互代码,任何编程语言都可以利用该框架将原有的单机迭代式机器学习程序,扩展为分布式机器学习程序。实验结果表明,与单机训练方式相比,Plug-in ML能够达到与其相同的训练效果,同时,还具有良好的扩展性,能够达到近似线性的加速比;与现有的分布式机器学习框架相比,Plug-in ML框架只有很少的系统开销。



基于深度强化学习的

集群资源调度算法研究


强化学习在众多需要处理序列决策问题的领域得到了广泛的应用。计算机集群资源调度是一个典型的序列决策问题,需要在每个时刻根据集群当前的状态和任务的资源需求,从待调度的候选任务中选择合适的任务部署到合适的机器上运行,或者将合适规模的计算资源分配给指定任务。集群调度目前主要是由经验丰富的领域专家设计启发式算法来完成,往往需要根据集群资源的具体情况和任务需求特征手动调优,这使得调度效率低,算法可扩展性差。

本项目分别针对批处理任务和流处理任务开发了利用深度强化学习技术来自动学习出适合计算机集群任务负载的调度策略的方法。针对批处理任务的资源调度算法通过资源快照来刻画集群资源未来使用情况和任务的未来资源需求,能够支持细粒度的资源分配,以端到端的方式实现了对任务偏好设置的支持。本项目设计了一种基于卷积神经网络、残差支持、并联支路的特征提取网络来有效地提取未来一段时间内集群资源分配和任务资源需求的深层次特征。针对流处理任务的资源调度算法通过时空图的方式对流任务的拓扑依赖关系和动态负载进行刻画。本项目进一步设计了一种基于神经网络的变分子图采样器,通过采样子图来加快模型推理速度,并设计了基于互信息最大化的目标函数,可以和子图采样器进行协同优化和更新。

实验结果表明,针对批处理任务的资源调度算法能够很好地支持任务偏好和奖励方案的设置,有效地提高集群的吞吐率,减少任务等待时间,在多项重要指标上都显著优于传统调度方法。针对流处理任务的资源调度算法可以通过采样子图来加快模型推理速度,并在延迟和资源利用率指标上达到更好的效果。本项目的研究成果申请了两项专利和一项软件著作权,在国内外著名会议和期刊上发表了多篇论文。