将软件工具塞进“容器”
来源:双胞胎项目
2015年,遗传学家盖伊·里维斯试图安装一个名为galaxy的*软件系统,以推进他的生物信息学项目。然而,在经历了一两天的挫折后,他开始向信息技术部门的成员寻求帮助。他们帮助安装了Docker,一种模拟计算机环境的技术。这使得里夫斯能够利用一个特殊版本的“银河”来包装他需要的任何东西。因此,码头工人也被称为集装箱。
德国马克斯·普朗克进化生物学研究所的里维斯是使用这个容器的许多科学家之一。随着科学越来越向数据密集型发展,越来越多的软件被用来从这些数据中获取知识。然而,很少有研究者有时间和计算机技术来充分利用它。容器,也就是将软件代码和运行它的计算环境放在一起的包,可以缩小这个差距。它们可以帮助研究人员使用更广泛的软件,加速实验过程,提高可重复性。
该容器本质上是一个轻量级且可配置的虚拟机——操作系统及其硬件的虚拟版本,允许软件开发人员共享他们的计算环境。研究人员使用它们来分发复杂的科学软件系统,从而允许其他人在与最初开发者相同的条件下运行软件。在这种情况下,容器可以消除计算生物可变性的来源。然而,加州大学戴维斯分校的生物信息学专家C·泰特斯·布朗说,虚拟机相对来说是资源密集型的,灵活性较差,而容器是紧凑的,可配置的。虽然配置底层的容器化软件可能很麻烦,但是可以根据用户的需要修改容器以添加或删除一些工具。布朗说正是这种灵活性增加了他们的知名度。
打包任何东西
实验室制造的工具很少使用。它们通常以必须处理和配置的脚本或编程源代码的形式存在。大多数软件需要额外的工具和库,但用户可能没有安装它们。即使用户可以获得并运行软件,计算环境的差异也会无意中改变其性能并影响可重复性。容器通过将运行所需软件所需的计算环境的关键元素打包到一个轻量级虚拟盒中来降低这种复杂性。它们不会改变运行软件所需的资源——如果一个工具需要大量内存,那么它的容器也需要它。然而,它们使软件更容易使用,结果更容易重复。
根据所使用的软件,该容器可以在视窗、苹果OS X、Linux或云中运行。码头工人,奇点和rkt是流行的容器。他们可以包装任何东西,从单一的过程到复杂的环境,如未来的“银河”。这些工具可以相互交互,例如共享数据或创建管道。因为每个应用程序都保存在自己的盒子里,所以即使是通常相互冲突的工具也可以和谐地运行。
Docker使用一个叫做镜像的可执行软件包。它包括工具和开发人员的计算环境。为了创建Docker映像,开发人员需要创建配置文件以及如何下载和构建所有必需工具的说明。然后他们运行文件来创建一个可执行的包。用户需要做的就是获取包并运行它。
加州伯克利国家能源研究科学计算机中心的计算机专家黛博拉·巴德已经帮助许多研究人员在实验室的超级计算机上安装了他们的软件。她回忆说,安装用于望远镜模拟和分析的复杂软件通道需要三四天时间。使用容器将这一时间减少到几个小时。"你可以花时间做科学研究,而不是搞清楚编译器的版本."巴德说。
获取容器
尽管计算机专家有多种容器平台选择,但2013年启动的开源项目Docker可能是科学家中最受欢迎的。它有一个大型的预建容器注册中心和一个竞争对手无法比拟的活跃网络社区。然而,许多高性能计算系统的管理员排除了Docker的使用,因为它需要高级别的管理访问才能运行。这种类型的访问可能允许用户复制或损坏系统上的任何东西。基于付费企业版本的附加组件允许用户避免这种需求,但是这个组件对于免费社区版本是不可用的。然而,它们可以利用不同的容器工具,如不需要完全权限或根访问,但仍然支持Docker镜像的移位器。
布朗解释说,对根访问的要求是Docker被广泛采用的最大障碍。许多学者在其附属机构或*管理的高性能计算集群上运行生物信息学工具。"当然,他们没有大多数系统的管理权限."尽管为亚马逊的网络服务提供云计算时间每年花费约5万美元,但布朗表示,它只占其计算工作的三分之一。其他的都是在密歇根州立大学的计算集群中进行的,他没有最高权威。结果,布朗为他的软件工具创建了Docker容器,但是他很少使用它们。
研究人员可以通过码头平台自己的主机服务或容器注册(如生物容器和码头商店)获得码头图像。布莱恩·奥康纳是加州大学的一名研究员,他曾经是码头商店注册的技术主管,他建议科学家浏览容器注册,以找到对他们的项目有用的工具,而不是试图重新发明已经存在的东西。
然而,旨在简化流程的网络服务Code Ocean的首席执行官西蒙·阿达尔(Simon Adar)表示,让底层Docker软件正确运行非常具有挑战性。"它太过技术性,最初是为开发人员部署复杂系统而设计的."代码海洋,在今年2年推出,创造了一个服务称为“计算胶囊”由阿达。它包括代码、数据、结果和Docker容器本身。研究人员上传他们的代码和数据,然后在网络浏览器上运行该软件或与其他人共享。Adar将这个过程比作在网站上分享视频。该公司甚至提供小部件,使用户能够在网页中嵌入可执行代码。
提高可重复性
纽约大学的物理学家凯尔·克兰默(Kyle Cranmer)参与了欧洲粒子物理研究所的ATLAS项目(寻找新的基本粒子),他说,尽管大多数关于可重复性的争论都集中在数据和代码上,但计算环境本身也发挥了很大的作用。“这真的很重要。”克兰默说。例如,一项关于不同计算环境中结构分析工具性能的研究发现,操作系统的选择具有相当大的影响。
然而,乔治·华盛顿大学的机械和航天工程师洛雷纳·巴尔巴认为,只有包装好的工具质量高,容器才能发挥作用。"如果研究人员把坏代码塞进容器并共享,我们注定会失败."布朗说,没有来自资助机构和期刊的压力,集装箱化技术本身无法让研究人员突然接受计算的可重复性。
伊利诺伊大学厄巴纳-香槟分校的统计学家维多利亚·斯托登说,的确很少有研究人员使用容器。部分原因是缺乏需求或意识,但同样重要的是,他们可能不具备相关的计算机技能。
然而,这一切都在悄然改变。西施大学的生物信息学专家乔纳斯·阿尔梅达说,像谷歌和微软这样的公司已经开始在容器中运行一些软件。大型生物信息学项目也开始采用集装箱化技术。阿尔梅达预测,在5到10年内,科学家将不再担心软件的下载和配置,工具将被简单地集装箱化。“这是不可避免的。”阿尔梅达说。(宗华编译)
阅读更多
《自然》杂志的相关报道