乾象投資:基于JuiceFS 構建云上量化投研平臺( 二 )


乾象投資:基于JuiceFS 構建云上量化投研平臺

文章插圖
第一 , 突發任務多,彈性非常大 。上圖是我們某個集群近期的運行實例數據 。可以看到在多個時間段里 , 整個集群實例都是被打滿的狀態,但是同時整個計算集群的規模也會有 scale 到 0 的時候 。量化機構的計算任務和研究員的研發的進度是有很大關聯的,波峰波谷的差距會非常大 , 這也是離線研究任務的特點 。
第二,“技術爆炸”,很難準確預估何時會產生算力需求 ?!凹夹g爆炸”是科幻小說《三體》的概念,對應到我們這就是我們的研究模式和算力的需求會發生飛躍式進步,我們很難準確預估算力需求的變化 。我們在 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 。

推薦閱讀