作者:宗华 来源:科学网 www.sciencenet.cn 发布时间:2017/7/4 13:46:26
选择字号:
将软件工具塞进“容器”

图片来源:Project Twins

 

2015年,遗传学家Guy Reeves试图安装一个被称为“银河”的免费软件系统,以便使他的生物信息学项目取得进展。然而,在经过一两天的挫败后,他开始向IT部门的成员寻求帮助。他们帮其安装了Docker—— 一种模拟电脑环境的技术。这使Reeves得以利用同他需要的任何东西一起打包的特殊版本“银河”。为此,Docker也被称为容器。

来自德国马普学会进化生物学研究所的Reeves是采用这种容器的诸多科学家之一。随着科学越来越多地向数据密集型发展,更多软件正在被编写以便从这些数据中汲取知识。不过, 极少有研究人员拥有时间和计算机技术来充分利用它。容器,即把软件代码以及运行它的计算环境放在一起的程序包,能缩小这一差距。它们能帮助研究人员利用更加广泛的软件、加速实验进程,并且提高可重复性。

容器实质上是轻量级、可配置的虚拟机器——操作系统及其硬件的虚拟版本,可让软件开发者共享其计算环境。研究人员利用它们分配复杂的科学软件系统,并因此允许别人在和初始开发者利用的相同的条件下运行软件。在这种情况下,容器可消除计算生物学可变性的一个来源。不过,加州大学戴维斯分校生物信息学家C. Titus Brown介绍说,虚拟机器是相对资源密集型的,且没有那么灵活,容器则是紧凑、可配置的。尽管配置底层的容器化软件可能比较麻烦,但容器可被修改,从而根据用户的需求增加或移除一些工具。Brown表示,正是这种灵活性提升了它们的知名度。

将任何东西打包

实验室制造的工具极少能拿来就用。它们通常以必须接受处理和配置的脚本或者编程源代码的形式存在。大多数软件需要额外的工具和程序库,但用户可能并未安装。即便用户能获得软件并运行它,计算环境的不同也会无意中改变其性能并且影响可重复性。容器通过将运行所需软件要求配置的计算环境的关键要素打包进一个轻量级的虚拟盒子,减少了这种复杂性。它们并未改变运行软件需要的资源——如果某个工具需要大量内存,那么它的容器也会需要。不过,它们使得软件更容易被使用,结果也更容易重复。

取决于所使用的软件,容器可在Windows、Mac OS X、Linux上或者云中运行。Docker、Singularity和rkt是比较流行的容器。它们可将来自从单一流程到诸如“银河”等复杂环境的任何东西打包。这些工具能彼此交互,比如共享数据或者创建管道。由于每个应用都呆在自己的盒子里,因此即便是通常相互冲突的工具,也能和谐地运行。

Docker利用的是被称为镜像的可执行软件包。它包括被包含的工具以及开发者的计算环境。为创建Docker镜像,开发者需要创建配置文件以及如何下载和构建全部所需工具的指令。随后,他们运行该文件,以创建可执行软件包。用户需要做的全部事情是获取软件包并且运行它。

位于加州伯克利的国家能源研究科学计算机中心计算机专家Deborah Bard已帮助很多研究人员在实验室的超级计算机上安装了他们的软件。她回忆说,安装用于望远镜模拟和分析的复杂软件通道之前需要三四天。利用容器则将这一时间缩减到几个小时。“你可以把时间用在做科研上,而不是弄清楚编译器的版本。”Bard表示。

获得容器

尽管计算机专家拥有容器平台的多个选择,但在2013年发起的开源项目——Docker可能在科学家中最流行。它拥有大型预建容器注册表以及竞争者无法匹及的活跃网络社区。不过,很多高性能计算系统的管理员会排除对Docker的使用,因为它需要高级别的管理访问权限才能运行。这种类型的访问可能允许用户复制或损害系统上的任何东西。一种基于付费的企业版本的附加组件使用户得以回避这一要求,但对于免费的社区版本来说,这种组件是无法获得的。不过,他们可以利用诸如Shifter等不要求全部权限或根访问但仍支持Docker镜像的不同的容器化工具。

Brown解释说,对根访问的要求是Docker被广泛采用的最大障碍。很多学者在由其所属机构或政府管理的高性能计算集群上运行生物信息学工具。“当然,他们并未拥有大多数系统的管理权限。”虽然每年要为亚马逊网络服务提供的云计算时长支付约5万美元,但Brown表示,这仅占据了其计算工作的1/3。其他的则在密歇根州立大学的计算集群中开展,而他并未拥有最高权限。于是,Brown为自己的软件工具创建了Docker容器,但自己很少能利用它们。

研究人员可通过Docker平台自己的主机服务或者诸如BioContainers、Dockstore等容器寄存器,获取Docker镜像。曾是Dockstore寄存器技术主管的加州大学研究人员Brian OConnor建议科学家浏览容器寄存器以寻找对其项目起作用的工具,而非试图重复发明已经存在的东西。

不过,旨在简化该流程的网络服务——“代码海洋”首席执行官Simon Adar 表示,真正让底层Docker软件正确地运行非常具有挑战性。“它太过技术化,并且原本是为开发者部署复杂系统而设计的。”在今年2年启动的“代码海洋”创建了被Adar称为“计算胶囊”的服务。它把代码、数据、结果和Docker容器本身包含在一起。研究人员上传他们的代码和数据,然后在网络浏览器上执行该软件,或者共享给其他人。Adar将这一过程比作在网站上共享视频。该公司甚至提供可使用户在网页中嵌入可执行代码的小部件。

提高可重复性

参与欧洲核子研究中心ATLAS项目(寻找新的基本粒子)的纽约大学物理学家Kyle Cranmer介绍说,尽管围绕可重复性的大多数争论集中在数据和代码上,但计算环境本身也起到了很大作用。“这真的很重要。”Cranmer表示。例如,一项对结构分析工具在不同计算环境下的性能进行的研究发现,操作系统的选择产生了相当大的影响。

不过,乔治·华盛顿大学机械与航空航天工程师Lorena Barba认为,只有封装的工具质量高,容器才会表现得好。“如果研究人员将糟糕的代码塞进容器中并将其分享开来,我们注定会失败。”Brown则表示,没有来自资助机构和期刊的压力,容器化技术本身不可能让研究人员突然间欣然接受计算的可重复性。

伊利诺依大学香槟分校统计学家Victoria Stodden表示,的确很少有研究人员在使用容器。部分原因在于缺少需求或者意识,但他们可能并不具备相关计算机技能也是重要原因。

不过,这一切正在悄悄地发生改变。石溪大学生物信息学家Jonas Almeida介绍说,诸如谷歌、微软等公司已开始运行容器中的一些软件。大规模生物信息学项目也开始采用容器化技术。Almeida预测,5~10年内,科学家将不再需要担心下载和配置软件问题,工具也将被简单地容器化。“这是不可避免的。”Almeida说。(宗华编译)

更多阅读

《自然》相关报道

 

 
 打印  发E-mail给: 
    
 
以下评论只代表网友个人观点,不代表科学网观点。 
SSI ļʱ
相关新闻 相关论文

图片新闻
这场赛事探索自动驾驶的“最后一公里” 首张另一星系中的恒星照片出炉
《自然》(20241121出版)一周论文导读 清华这位院士搭建了一座室外地质博物园
>>更多
 
一周新闻排行 一周新闻评论排行
 
编辑部推荐博文
 
论坛推荐

Baidu
map