【弹性计算】异构计算云服务和 AI 加速器(五):EAIS & AI 加速器

异构计算云服务和 AI 加速器》系列,共包含以下文章:

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

1.EAIS 软件池化技术

🚀 在云计算领域(如阿里云),EAIS 代表一种弹性加速服务,允许用户将 GPU 等加速资源动态附加到 ECS 实例,以提升计算性能(如 AI 推理、深度学习等),而无需更换原有实例。

除了支持预定义规格的异构计算加速实例,还可以通过 弹性加速实例Elastic Accelerated Computing InstanceEAIS)以池化的方式将前端 CPU 的核心数和后端的异构加速设备解耦,让前端 ECS 动态挂载、后端异构计算加速实例卸载。前端和后端异构计算加速实例都以虚拟化的方式启动。通过虚拟化的方式可以对 GPU、FPGA、NPU 等不同的异构加速实例化调度和管理。

EAIS 架构如下图所示,通过虚拟网卡技术将异构计算加速实例挂载到前端 ECS 上,后端异构计算加速实例会运行 一个监听前端请求的进程一个推理服务进程,然后在前端 ECS 上启动弹性推理客户端,在推理前端服务和推理后端服务之间建立一个高速安全通信通道,前端应用的 AI 推理计算请求和模型通过通道发送到后端的推理服务进程上进行 AI 推理计算,推理的结果再通过安全通信通道返回给前端应用。
在这里插入图片描述

2.AI 加速器及其性能优化技术

AI 加速器主要面向人工智能领域的性能加速,目前应用最多的 AI 框架就是TensorFlow、PyTorch、MXNet、Caffe 等,而这些 AI 框架自身都有很多的发布版本被不同的开发者使用,并且各框架都有自己的一套分布式并行方式,我们为了屏蔽不同计算框架之间及不同计算框架版本间的分布式训练差异,通过统一的框架和统一的优化代码来优化这 4 种计算框架的不同版本。我们研发了统一的 AI 加速器,其架构如下图所示。
在这里插入图片描述
我们把这些分布式训练框架的通信部分整合到了同一个框架之中,接下来在这框架之下的所有优化工作,都将直接加速支持的全部 AI 计算框架。

2.1 分布式通信优化方法

  • 计算和通信的重叠。传统的计算和通信是串行的,即先做完梯度计算、再做梯度通信,我们的第一个优化工作是将计算和通信重叠起来,尽量减少通信的开销。
  • 去中心化梯度协商。传统分布式梯度协商方式是根节点和所有节点都协商,因此根节点的负担会随着节点数增加而大幅升高。而我们采取的去中心化的梯度协商方式,将大规模下梯度协商的复杂度降低了一个数量级。
  • 梯度压缩。将要传输的梯度从 FP32 压缩到 FP16,并建立了相应的数据缩放机制,从而防止精度损失。
  • 分级通信优化。传统的环形通信方式是将所有节点上的 GPU 形成一个大环,致使其整体性能在以太网的通信上受到限制。我们做了分级通信的优化,首先在节点内部的 GPU 上做一级规约通信,每个节点都规约到一块 GPU 上,然后每个节点的这个 GPU 再做二级规约通信。这样一方面减少了以太网上传输的数据量,另一方面通过流水线将节点内部的规约通信和节点之间的规约通信重叠起来,减少了整体通信时间。
  • 梯度融合优化。传统的通信方法是计算出一个梯度通信一次,这样会产生很多小包的通信,对网络带宽非常不友好,优化是等一批梯度计算完成后再融合在一起做通信,这样的大数据包能够大大提升网络带宽的利用率。

2.2 性能加速效果

我们选择了将分布式性能优化得很好的 Horovod 框架和各 AI 计算框架本身进行性能对比,经过测试发现,AI 加速器支持的框架的分布式训练性能比 Horovod 及各 AI 计算框架能够提升 65 % 65\% 65% ~ 500 % 500\% 500% 不等的性能。

图像分类 TensorFlow ResNet-50 分 布 式 训 练, 在 4 机 32 张 P100 GPU 上比 Horovod-TensorFlow 提升 65% 的性能,如下图所示。
在这里插入图片描述

图像分类 TensorFlow VGG-16 分布式训练,在 2 机 16 张 P100 GPU 上比 Horovod-TensorFlow 提升 90 % 90\% 90% 的性能,如下图所示。
在这里插入图片描述

大规模人脸识别 MXNet 分布式训练,在 2 机 16 张 P100 GPU 上比 MXNet 提升 400 % 400\% 400% 的性能,如下图所示。
在这里插入图片描述

### Docker 安装后使用 `systemctl` 启动服务时报错的解决方案 当尝试使用 `systemctl` 来管理 Docker 服务时,如果收到错误信息 `"System has not been booted with systemd as init system (PID 1). Can't operate"`,这意味着当前系统并未以 `systemd` 作为其初始化系统运行。此问题常见于基于 Debian 的发行版(如 Ubuntu Server Minimal 或者某些自定义构建的 Linux 发行版),这些版本可能默认使用了其他初始化系统(例如 SysVinit)。以下是具体分析与解决方法: --- #### 错误原因解析 该错误的根本原因是系统的初始化进程并非由 `systemd` 提供支持。在现代 Linux 系统中,`systemd` 是主流的初始化系统之一,许多工具服务依赖它来实现诸如服务管理日志记录等功能。然而,在一些轻量级或者定制化的 Linux 版本中,默认使用的可能是传统的 `SysVinit` 或其他替代方案[^2]。 --- #### 解决方案一:切换到 `systemd` 初始化系统 对于希望保留 `systemd` 功能的情况,可以通过以下步骤将系统切换至 `systemd` 模式: 1. **更新包管理器索引** ```bash sudo apt-get update ``` 2. **安装必要的组件** 确保已安装 `systemd` 相关工具链。 ```bash sudo apt-get install -y systemd systemctl ``` 3. **设置引导选项** 修改 GRUB 引导加载程序配置文件 `/etc/default/grub` 中的相关参数,确保指定 `systemd` 为初始进程: ```bash sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 systemd.unified_cgroup_hierarchy=1"/' /etc/default/grub sudo update-grub ``` 4. **重启系统** 应用更改后需重新启动计算机使新设置生效: ```bash sudo reboot ``` 完成上述操作后,再次尝试通过 `systemctl` 控制 Docker 服务应不再出现原错误消息[^2]。 --- #### 解决方案二:不依赖 `systemd` 的方式启动 Docker 如果不打算迁移到 `systemd`,也可以采用传统的方法直接运行 Docker Daemon: ```bash sudo dockerd & ``` 这种方式绕过了任何特定初始化系统的约束条件,适合那些不需要复杂服务编排的小型项目或测试环境[^1]。 另外还可以创建简单的 shell 脚本来封装这一过程,并将其加入开机自动执行序列里去代替原本期望的功能。 --- #### 注意事项 - 上述两种途径各有优劣,请依据实际应用场景选取合适的一种实施; - 若决定转换成 `systemd` 架构,则务必小心处理好现有数据备份以及兼容性验证工作以防万一造成不必要的麻烦;反之亦然。 --- ### 总结代码片段展示 最终推荐的标准做法如下所示: ```bash # 方案 A: 使用 Systemd (适用于大部分标准服务器) sudo apt-get update && \ sudo apt-get install -y systemd systemctl && \ sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 systemd.unified_cgroup_hierarchy=1"/' /etc/default/grub && \ sudo update-grub && \ sudo reboot # 方案 B: 手动运行 Dockerd (快速简易法) nohup sudo dockerd > ~/docker.log 2>&1 & ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值