乾象投资:基于JuiceFS 构建云上量化投研平台( 二 )


乾象投资:基于JuiceFS 构建云上量化投研平台

文章插图
第一 , 突发任务多,弹性非常大 。上图是我们某个集群近期的运行实例数据 。可以看到在多个时间段里 , 整个集群实例都是被打满的状态,但是同时整个计算集群的规模也会有 scale 到 0 的时候 。量化机构的计算任务和研究员的研发的进度是有很大关联的,波峰波谷的差距会非常大 , 这也是离线研究任务的特点 。
第二,“技术爆炸”,很难准确预估何时会产生算力需求 。“技术爆炸”是科幻小说《三体》的概念,对应到我们这就是我们的研究模式和算力的需求会发生飞跃式进步,我们很难准确预估算力需求的变化 。我们在 2020 年年初的时候,研究的实际用量和预估用量都非常小,但是当研究团队提出的一些新的研究方法思路之后,会在某个瞬间突然对算力产生非常大的需求 。而容量规划是在建设传统机房的规划时候非常重要的一件事情 。
第三,现代 AI 生态,几乎是搭载在云原生平台上的 。我们做了很多创新的技术尝试,包括现在非常流行的 MLOps,将整套 pipeline 串联起来 , 再去做机器学习训练的流水线;现在很多的分布式的训练任务的支持,都是面向云原生去做了很多的开发工作 , 这也使得我们把整个计算任务放到云上成为一个很自然的选择 。
02 量化平台存储需求根据上面业务和计算的需求,可以比较容易的去推导出来我们对存储平台的需求 。
  1. 计算与存储不均衡 。上文提到计算任务会有很大的突增,计算量会很容易会达到非常高的水平 。而热数据的增长量并没有那么快,这就意味着我们需要去做存算分离 。
  2. 为热数据,比如行情的数据,提供高吞吐的访问 。上百个任务同时访问数据,对它吞吐要求非常高 。
  3. 为冷数据提供低成本存储 。量化研究需要大量 archive 数据,也要为这些数据提供相对低成本的存储 。
  4. 文件类型/需求多样性即 POSIX 兼容性 。我们有很多不同的计算任务 , 这些计算任务对文件的类型的需求是非常多样的,例如CSV、Parquet 等,有一些研究场景还有更灵活的定制开发的需求,这就意味着在选型的时候不能够对文件存储方式做严格限制,因此 POSIX 的兼容性对于存储平台选型是一个很关键的考量因素 。
  5. IP 保护:数据共享与数据隔离 。我们 IP 保护的需求,不仅是计算任务上需要做这样的隔离,在数据上也是需要支持这样的隔离能力;同时对行情数据这类相对公开的数据,还需要支持研究员的获取方式是便捷的 。
  6. AI 生态,在云的平台上去做各种任务的调度 。这也是较为基础的一个使用需求 , 因此存储上也是需要对 Kubernetes 做很好的支持 。
  7. 模块化即中间结果存储/传输 。计算任务模块化的场景,导致我们会对中间结果的存储跟传输也有需求 。举个简单的例子,在特征计算过程中会生成比较大量的特征数据,这些数据会立刻用于被训练的节点上,我们需要一个中间存储介质去做缓存 。
03 存储方案选型非 POSIX 兼容方案最初,我们尝试了很多对象存储的方案,也就是非 POSIX 的方案 。对象存储有很强的扩容能力,而且成本非常的低,但是对象存储的问题也很明显 。最大的问题就是没有 POSIX 兼容性 。对象存储的使用方式跟文件系统有比较大的区别,如果把对象存储直接作为接口面向研究员,对他们来讲使用有很大的难度,便利性也有很大的限制 。
除此之外,很多云厂商的对象存储有请求限制 。例如,阿里云会对整个帐号的 OSS 带宽做限制 。对于普通的业务场景这通常是可以接受的,但是突发性任务会在瞬时产生非常大的带宽需求,仅仅使用对象存储很难去支撑这类场景 。
另一个方案是 HDFS  , 我们在 HDFS 上面并没有做太多测试 。首先,我们所采用的技术栈对 Hadoop 没有太强的依赖;同时,HDFS 对 AI 训练的产品的支持并没有特别突出,而且 HDFS 没有完整的 POSIX 兼容性,这对我们的使用场景会有一些限制 。
乾象投资:基于JuiceFS 构建云上量化投研平台

文章插图
云上 POSIX 兼容方案上文中提到的业务特点决定了我们对 POSIX 兼容性有很强的需求,而且技术平台是基于公有云来进行的,因而我们将存储选型的范围确定为:云上兼容 POSIX 。

推荐阅读