【IT168 资讯】在应用程序开发领域中,容器近几年来受到了广泛的关注——原因有很多。这里简单列举几个优点:容器简化并加速了构建和隔离应用程序的过程;它们是轻量级的,而且日常管理开支较低;它们能够更加容易地实现应用程序共享和再现性,因为容器映像包括应用程序及其开发环境。
特别是在深度学习(DL)框架中,容器化的重要性正在上升。为什么?每个DL框架都有许多依赖项。每个依赖库都有特殊的版本需求,所有DL框架都经常发生变化。大多数DL框架的友好支持操作系统是Ubuntu,而数据中心部署通常是运行Red Hat Enterprise Linux/Centos。容器化有助于开发人员克服这些挑战。所有东西都打包成一个单独的包,包括所有必需的部件。
有许多技术可助力实施容器化,例如Docker、LXC、LXD和Singularity等。每一种技术都有各自的优缺点,可以迎合不同的受众类型,适用于不同的用例。对于专注于HPC技术使应用程序大规模化的用户来说——例如MPI和调度器(slurm, torque),Singularity可能是一个更好的选择。另一方面,如果用例是基于微服务的扩展,那么Docker,再加上诸如Kubernetes或Docker集群之类的编排技术,可能会是更好的选择。
对于HPC和DL应用,在Singularity平台上进行容器化会有一些额外的优势。特别地,与Singularity相结合的容器化,有助于开发人员克服与编译和大规模非常好的运行相关的挑战。它使开发人员能够通过Singularity的MPI集成能力将工作负载扩展到单个节点。随着DL数据集的规模不断扩大,这种可伸缩性将成为许多用例的需求。
Singularity是在劳伦斯伯克利国家实验室专门为HPC和DL工作负载开发的。其核心概念是,在容器启动时,用户上下文始终保持不变。这里没有守护进程。相反,Singularity是可执行的。Singularity容器在用户空间中运行,这使得用户的权限在容器内部和外部都是相同的。
在戴尔EMC HPC和AI创新实验室,研究团队将Singularit用在了一个项目中,这个项目包含了其内部用例的DL和HPC应用程序。在这个项目中,该团队发现集装箱化简化了DL在单节点和多节点配置中的构建和部署。
更重要的是,研究团队发现与裸机相比,在Singularit上的DL应用程序没有性能损失。在其基准测试中,研究团队比较了裸机运行与容器运行的对比,发现相对性能差异小于2%。
这是关键。对于在深度学习和HPC领域工作的开发人员来说,容器化的好处是显著的,而无需对性能进行显著影响。显然,随着组织充分利用DL技术提供由人工智能驱动的产品和服务,容器技术将变得更加重要。