对于在深度学习和 HPC 领域工作的开发人员来说, 容器化的好处是显著的, 而无需对性能进行显著影响. 显然, 随着组织充分利用 DL 技术提供由人工智能驱动的产品和服务, 容器技术将变得更加重要.
在应用程序开发领域中, 容器近几年来受到了广泛的关注 -- 原因有很多. 这里简单列举几个优点: 容器简化并加速了构建和隔离应用程序的过程; 它们是轻量级的, 而且日常管理开支较低; 它们能够更加容易地实现应用程序共享和再现性, 因为容器映像包括应用程序及其开发环境.
特别是在深度学习 (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 技术提供由人工智能驱动的产品和服务, 容器技术将变得更加重要.
来源: http://server.51cto.com/HPC-571970.htm