生物技术初创公司Grail正在构建自己的基础设施,以支持它在构建模型的同时所做的数据科学工作。这家公司最近开源了两个面向大数据的无服务器项目Bigmachine和Bigslice,并将Go作为首选语言。
“我们正在进行大量的研发、发现和模型构建,我们需要非常迅速地转向。”Grail的软件工程师Marius Eriksen说,“因此,我们必须拥有灵活快速的基础设施。”
这家公司致力于探测早期癌症,以便开展有效治疗。它正致力于通过观察血液中的细胞碎片,开发一种针对多种癌症的单一血液检测方法。它使用机器学习技术来检测癌症并确定癌症在体内的起源。
FDA最近批准了Grail循环无细胞基因组图谱(CCGA)研究的突破性设备设计——它可以快速跟踪开发、评估和审查。该公司的目标是招收165000名参与者。该研究已经招募了10万名女性进行乳房X光检查,并预计明年将公布结果。
试验中每个人的基因组测序可以产生超过1万亿字节的数据,因此该公司需要处理庞大的数据集。它建立模型的方法依赖于快速的反馈周期——在这个周期中,研究人员建立模型,在真实数据上测试想法,并从结果中学习。
“计算是工作的核心。我们需要非常擅长处理大规模的计算作业。”Eriksen说,“Grail建立在非常重视技术基础设施的理念之上。我们决定遵循现代软件工程实践,关注可伸缩性和速度。”
它运行两种主要类型的数据处理管道:生物信息数据处理以使原始测序数据具有生物意义;机器学习模型进行特别分析,构建最终决定产品性能的分类器。
公司开始对这两种类型的工作负载使用Go语言,并决定围绕代码构建基础设施,而不是反过来。
“Go是一种非常简单的语言,对新人来说非常容易上手。”Eriksen说,“很多生物信息处理是性能密集型的;有些代码只需要运行得非常快。Go提供的工具可以让你对代码的性能进行分析,并编写非常高性能的代码。我们觉得很合适。”
同时,该公司发现需要更广泛地分配工作负载。“我们需要一些集群计算的方法。例如,我们不把代码倾注到一些现有的集群计算系统中(如SCAP),而是认为将基础设施移植到已经拥有的代码上会更容易。同时,还要重新思考这些集群计算系统在现代云计算环境下实际上是怎么工作的。”
“像Spark这样的系统是在现代云时代之前构建的,在某种意义上不是云原生的。我们希望构建的基础设施能够完全支持云计算提供商所提供的各种抽象。”
此时,云原生并不意味着使用Kubernetes这样的第三方基础设施,该公司直接根据各种云提供商提供的API来实现构建。
Bigmachine提供了一个库和机制来编写跨集群自分发的程序。它提供了一个API,允许驱动程序处理来自运行分布式工作负载的计算机集群的数据。用户代码通过服务公开,这些服务是与每台计算机关联的有状态Go对象。
“我可以使用Bigmachine的多个API编写一个程序,它可以将自己分发到任意多台机器。这完全是在你编写的程序中指定的,不需要外部配置或操作。”
“Bigmachine负责所有事情,从管理临时添加的计算机集群和它们如何安全地通信到如何监控它们。它负责处理云提供商上大型计算机集群的所有运维相关的事情。这几乎就像拥有Kubernetes,但作为一个库,它直接用于单个程序,而不是共享的基础设施。”
目前,Bigmachine支持EC2上的集群,但可以在其他带有Go接口的系统上实现。
Bigslice也是一个建立在Bigmachine之上的库。它类似于Apache Spark和FlumeJava,但是是用Go编写的,是为无服务器计算而设计的。
“这样做的结果是,只需拥有云计算环境的凭证,就可以构建一个Bigslice程序。它能够直接利用这些资源,而无需任何其他运维方面的考虑。”
“当你运行一个Bigslice程序时,它将直接在云提供商上分配机器,完全透明地分发自己,并将其工作负载分发给已分配的机器。对于用户来说,没有额外的设置或其他需要考虑的事情。你只需要有一些凭证就行了。它不依赖其他软件来实现这一点。”
你像编译一个普通的Go二进制文件一样编译它。当你运行这个二进制文件时,它自己执行计算,分配节点,分发自己,处理运行这样一个集群的所有运维相关的事情,然后当它完成或需要更少的资源时,集群会自动缩小。
Bigslice公开了一个可组合的API,允许你根据调用用户代码的一系列数据转换来表示数据处理任务。Bigslice使用顺序计算,一步一步地说明如何转换数据,从而并行化进程,将数据集分割成许多较小的片段——这些片段可以放在内存中,跨多台计算机并行执行转换。它还可以根据需要为join或reduce等操作重新排列数据。
“我们可以做到很多与使用像Spark这样的现成系统相同的事情。Go是我们的首选语言,但在Spark之类的系统使用Go相当不方便。围绕已有代码构建基础设施,比将代码注入一个与代码如何工作无关的系统要简单得多。”
原文链接:
https://thenewstack.io/bigmachine-and-bigslice-two-new-open-source-serverless-projects/