阿里云超算:高性能容器方案实战之Singularity

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 除了自动化整合IaaS层硬件资源为用户提供云上HPC集群外,E-HPC还致力于巩固云上HPC服务的高可用性,先后推出了“集谛多维性能监控”、“低成本断点续算”等新特性,帮助用户更好、更省地使用云上HPC服务。本文主要介绍阿里云超算推出的弹性高性能容器方案以及在分子动力学领域和AI领域的实战案例。

弹性高性能计算(E-HPC,https://ehpc.console.aliyun.com/ )基于阿里云基础设施,为用户提供一站式的公有云HPC服务。除了自动化整合IaaS层硬件资源为用户提供云上HPC集群外,E-HPC还致力于巩固云上HPC服务的高可用性,先后推出了“集谛多维性能监控”、“低成本断点续算”等新特性,帮助用户更好、更省地使用云上HPC服务。本文主要介绍阿里云超算推出的弹性高性能容器方案以及在分子动力学领域和AI领域的实战案例。

高性能容器Singularity

Singularity是劳伦斯伯克利国家实验室专门为大规模、跨节点HPC和DL工作负载而开发的容器化技术。具备轻量级、快速部署、方便迁移等诸多优势,且支持从Docker镜像格式转换为Singularity镜像格式。与Docker的不同之处在于:
1. Singularity同时支持root用户和非root用户启动,且容器启动前后,用户上下文保持不变,这使得用户权限在容器内部和外部都是相同的。
2. Singularity强调容器服务的便捷性、可移植性和可扩展性,而弱化了容器进程的高度隔离性,因此量级更轻,内核namespace更少,性能损失更小。

image.png

下图是在单台神龙裸金属服务器(ecs.ebmg5.24xlarge,Intel Xeon(Skylake) Platinum 8163,2.5GHz,96vCPU,384GB)上使用不同容器测出的HPL性能数据。如图所示,Singularity容器下测得的HPL性能要略优于Docker容器,且与宿主机的实测HPL性能相当。

image.png

3. Singularity高度亲和HPC使用场景,支持对宿主机软硬件资源的充分利用,包括HPC调度器(PBS、Slurm),跨节点通信库(IntelMPI、OpenMPI),网络互连(Ethernet、Infiniband),文件系统以及加速设备(GPU),这使得用户在使用Singularity时无需为HPC做额外的适配。

image.png

E-HPC弹性高性能容器方案

阿里云E-HPC集成开源Singularity容器技术,在支持用户软件环境快速部署、灵活迁移的同时还兼顾云上HPC容器服务本身的高可用性以及与现有E-HPC组件的兼容性,为用户打造高效、易用的弹性高性能容器解决方案。

image.png

用户只需将本地软件环境打包上传到Docker Hub,就可以在E-HPC控制台上完成“集群创建->镜像拉取->容器应用部署->作业提交->性能监控&运行结果查询”整套工作流程,从而达到降低HPC使用成本,提高自身科研、生产效率的目的。

image.png

Singularity容器实战案例

  • 案例一:SCC多节点运行分子动力学NAMD容器作业

NAMD是一款主流的分子动力学模拟软件,扩展性好,并行效率高,常用于处理大规模分子体系。本文基于镜像docker.io/centos:7.2.1511构建包含intelmpi+namd+inputfile的Singularity镜像,并使用pbs调度器将NAMD容器作业和本地作业先后提交到4台SCC(ecs.scch5.16xlarge,Intel Xeon(Skylake) Gold 6149,3.1GHz ,32物理核,192GB)节点上,pbs作业脚本如下所示。

#!/bin/sh
#PBS -l ncpus=32,mem=64gb
#PBS -l walltime=20:20:00
#PBS -o namd_local_pbs.log
#PBS -j oe

# Singularity 容器执行
/opt/intel/impi/2018.3.222/bin64/mpirun --machinefile machinefile -np 128 singularity exec --bind /usr --bind /sys --bind /etc /opt/centos7-intelmpi-namd.sif /namd-cpu/namd2 /opt/apoa1/apoa1.namd

# 宿主机本地执行
/opt/intel/impi/2018.3.222/bin64/mpirun --machinefile machinefile -np 128  /opt/NAMD_2.12_Linux-x86_64-MPI/namd2 apoa1/apoa1.namd

为了展示“容器运行NAMD”与“宿主机直接运行NAMD”两者在CPU利用率、RoCE网络带宽以及软件执行效率等方面的差异,本文使用E-HPC自带的性能监控工具“集谛”对SCC集群资源利用情况进行监控。“集谛”的功能已经在前文https://yq.aliyun.com/articles/661962中详细介绍过。各节点资源利用情况如下图所示。

image.png

从图中可以看出,“容器运行NAMD”与“宿主机直接运行NAMD”两者在集群资源利用情况上基本一致:4个节点的CPU持续满载,RoCE网络带宽维持在1.3GB/s左右。作业执行时间分别为1324秒和1308秒。由此可见,Singularity不仅高度适配宿主机调度器、MPI并行库、RoCE网络,还能够保证容器作业的高效运行,相比于宿主机性能损失在2%以内。

  • 案例二:EGS实例运行tensorflow图像分类容器作业

CIFAR-10是图像识别领域的经典数据集。本文基于镜像docker.io/tensorflow/tensorflow: latest-devel-gpu-py3分别构建包含图像分类模型的Singularity容器和Docker容器,并基于这两款容器在单台EGS(ecs.gn5-c8g1.4xlarge,Intel Xeon E5-2682v4,2.5GHz,16vCPU,120GB,P100x2)节点上对tensorflow网络模型进行训练,命令行如下所示。

# Singurity容器执行
singularity exec --nv /opt/cifar10.sif python /cifar10/models/tutorials/image/cifar10/cifar10_multi_gpu_train.py --num_gpus=2

# Docker容器执行
nvidia-docker run -it d6c139d2fdbf python /cifar10/models/tutorials/image/cifar10/cifar10_multi_gpu_train.py --num_gpus=2

使用“集谛”对作业进行监控,节点资源利用情况如下图所示。

image.png

从图中可以看出,基于Singularity容器和Docker容器的tensorflow图像分类模型训练在资源利用情况没有明显差异:CPU利用率维持在75%,单块GPU利用率在30%~40%之间波动。在训练效率上,10万steps的训练时间分别为1432秒和1506秒。由此可见,Singularity容器不仅高度适配宿主机GPU和CUDA,而且在作业执行效率上比Docker容器略占优势。

总结

阿里云超算集成开源Singularity容器技术,打造高效、易用的云上弹性高性能容器方案,大幅降低用户迁云成本,助力用户高效科研。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
1月前
|
专有云 Serverless 持续交付
亚太唯一,阿里云再度入选Gartner®容器管理魔力象限领导者
Gartner正式发布 2024《容器管理魔力象限》报告,阿里云再度成为中国唯一一家入选「领导者象限」的科技公司。
|
27天前
|
人工智能 专有云 Serverless
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
亚太唯一!阿里云再度入选Gartner®容器管理魔力象限领导者
104 2
|
30天前
|
弹性计算 Kubernetes 网络协议
阿里云弹性网络接口技术的容器网络基础教程
阿里云弹性网络接口技术的容器网络基础教程
阿里云弹性网络接口技术的容器网络基础教程
|
2月前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
阿里云ACK容器服务生产级可观测体系建设实践
|
30天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
65 0
|
1月前
|
Ubuntu Linux 应用服务中间件
Docker容器入门实战
Docker容器入门实战
|
2月前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
70 0
|
2月前
|
人工智能 Cloud Native 调度
阿里云容器服务在AI智算场景的创新与实践
2024年云栖大会,我们总结过往支持AI智算基础底座的实践经验、发现与思考,给出《容器服务在AI智算场景的创新与实践》的演讲。不仅希望将所做所想与客户和社区分享,也期待引出更多云原生AI领域的交流和共建。
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
15天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。