论文

【论文笔记】Harmony论文阅读笔记
7 minutes

基于深度学习的机器学习集群的任务放置

这是一篇发表在INFOCOM'2019上的论文, 特点是使用了强化学习进行任务放置。

Abstract

  • 背景

    • 虽然作业之间的服务器共享提高了资源利用率,但位于ML 作业之间的干扰可能会导致性能显着下降。
    • 现有的集群调度程序(例如,Mesos)在其作业布置中是忽视干扰的,导致资源效率不佳。
    • 干扰感知工作安置已在文献中进行了研究,但使用详细的工作负载分析和干扰建模进行了处理,这不是通用的解决方案。
  • Harmony

【论文笔记】EasyScale论文阅读笔记
19 minutes

EasyScale 论文阅读笔记

Abstract

  • 分布式同步GPU训练通常被用于深度学习。
    • 使用固定GPU的资源约束
      • 使得大规模的深度学习训练工作受到影响
      • 降低了集群的利用率
    • 纳入资源弹性
      • 往往会引入模型精度的非确定性<—–缺乏隔离能力
  • 本文介绍EasyScale,
    • 这是一个弹性框架
      • 可以在异构GPU上扩展分布式训练
      • 同时产生确定性的深度学习模型
    • 实现了弹性的精度一致的模型训练。
      • EasyScale严格遵循数据并行训练流程
      • 仔细追踪与精度相关的因素
      • 有效利用深度学习特性进行上下文切换
    • 为了使异构GPU的计算能力达到饱和
      • EasyScale根据我们的作业内和作业间调度策略动态地分配工人
      • 最大限度地减少GPU的空闲时间
      • 并相应地提高综合作业的吞吐量。
    • 实验
      • 部署在CompanyA的一个在线服务集群中
      • EasyScale为弹性深度学习训练作业提供动力,使其适时地利用空闲的GPU
      • 在不违反SLA的情况下将集群的整体利用率提高了62.1%

Introduction

  • 弹性深度学习框架很少在行业中使用

【论文笔记】Gandiva论文阅读笔记
21 minutes

Gandiva 论文阅读笔记

Abstract

  • Gandiva: 一个集群调度框架,使用特定领域知识,优化了GPU集群训练深度学习模型的延迟与效率

  • 深度学习job的特征

    • 1)反馈驱动的探索:
      • 一个用户经常运行一组作业(或 a multi-job)来获得特定任务的最佳结果
      • 并使用关于准确性的早期反馈来动态优先考虑或杀死一个作业子集
      • 同步发生的多个作业的早期反馈是至关重要的
    • 2)深度学习工作在资源使用方面的异构,这使得它很难实现最适合的先验。
    • 3)作业内可预测性:因为作业会重复执行叫做mini-batch的迭代
      • Gandiva利用这个特征解决了1)2)两个问题
      • 利用可预测性对GPU进行多个job间进行时分复用, 这提供了低延迟
      • 这种预测性还可以用于内省job性能并动态迁移到最合适的GPU上,提高了集群效率
  • 我们通过一个原型实现和微基准测试表明

【论文笔记】GaiaGPU论文阅读笔记
11 minutes

《GaiaGPU:Sharing GPUs in Container Clouds》论文笔记

Abstract

  • 对于云服务的提供商, 如何在容器间共享GPU, 是一个有吸引力的问题
    • 容器的轻量与伸缩性
    • GPU强大的并行计算能力
    • 在云环境,容器需要使用一个或多个GPU来满足资源需要的同时, 容器独占式的GPU往往使用率很低
  • 我们提出GaiaGPU,能够在容器间共享显存和算力
    • 将物理GPU划分为多个虚拟GPU
    • 采用弹性资源分配动态资源分配来提高资源利用率
    • 实验结果显示, 有效的实现了容器间资源的分配和隔离的同时,平均只增加了1.015%的开销。

Introduction

  • 容器化是一种虚拟化技术
    • 涉及到量身定制一个标准操作系统,方便它在一个物理机上运行由多个用户处理的不同应用程序
    • 与VM模拟底层硬件不同
      • 容器模拟的是操作系统
      • 轻量,可伸缩,易部署
      • 微服务打包与发布应用的事实标准
    • 云服务提供商整合容器编排框架(如k8s)到基础架构中来提供容器云
  • GPU 图像处理单元
    • 有很强的并行处理能力
      • 因为一个芯片上集成了数以千计的计算核
      • GPU被广泛用于计算密集型任务,以加快计算
      • 随着技术的发展趋势,现代GPU内将集成入越来越多的计算资源
    • CUDA是多功能GPU最流行的平台,提供了API方便GPU的使用
    • 卓越的性能吸引了很多云提供商将GPU引入云环境
      • 在云环境中,部署在容器中的一个应用程序可能需要一个或多个GPU才能执行,
      • 而另一方面,应用程序的专用GPU资源导致资源不足。
      • 因此,如何在不同的容器中共享GPU对大多数云提供商都非常感兴趣
  • GPU虚拟化技术是在隔离的虚拟环境(例如VM, 容器)之间共享GPU的技术
    • 多数的GPU虚拟化技术应用于VM, 容器间的虚拟化技术还在起始阶段
    • 现阶段的基于容器的GPU虚拟化技术有以下局限性
      • 需要特定的硬件设备(NVIDIA GRID)
      • 将一整个GPU分配给单个容器, 不能共享 (NVIDIA Docker)
      • 容器间只能共享GPU显存 (ConvGPU)
      • 只支持单个GPU (ConvGPU)
  • 我们提出GaiaGPU,能够在容器间透明地共享显存和算力
    • 用户不用修改容器镜像来共享底层GPU
      • 我们使用k8s的device plugin 框架将物理GPU划分为多个虚拟GPU
    • 每个镜像可以按需分配一个或者多个vGPU
    • 提供了两者方式在运行时更改镜像资源
      • 弹性资源分配:暂时改变资源
      • 动态资源分配:永久改变资源
  • vGPU包括GPU显存和计算资源
    • 共享显存
      • 容器包含GPU显存的一小部分
      • vGPU分配的是GPU的物理内存
    • 共享计算资源
      • 共享计算资源意味着每个容器都拥有GPU线程的一部分以并行执行计算。
      • VGPU的计算资源由GPU的利用率衡量(采样时段内, 容器使用GPU的时间比例)
  • 总结:本文做了如下贡献
    • 提出了GaiaGPU:一种在容器间透明共享显存与算力的方法
    • 采用弹性分配和动态分配的方式提高了资源的利用率
    • 进行了四个实验来验证GaiaGPU的性能。结果:实现了容器间资源的分配和隔离的同时,平均只增加了1.015%的开销。

GPU虚拟化

  • 被应用于在多个虚拟环境之间分享GPU, 极大地提高了应用性能

【论文笔记】PolarDB-Serverless论文阅读报告
14 minutes

PolarDB Serverless论文阅读报告

摘要

数据库管理系统的上云是近期很火的研究趋势,因为这样可以获得更高的弹性,可用性以及更低的成本,传统的独块的数据库架构很难满足这样的要求。高速网络与新的内存技术(例如RDMA)的发展,给分散式数据库带来了可能:它将原先的独块的服务器资源分离解耦到资源池中,再通过高速网络连接起来。下一代的云原生数据库就是为了分散化的数据中心而设计。