在剛剛結束 TiDB Hackathon 2021 賽事中,Matrix 賽隊的作品 Tenseigan,是針對 TiDB 的一個分散式資料庫的調優測試框架,該工具能夠提供:自動調參、引數影響度評估等功能,整合了多種 workload。由於專案的創新性和可擴充套件性,摘得了“最佳校園獎”和“明勢資本特別贊助最佳市場潛力獎”。
陳書寧代表 Matrix 賽隊在現場領獎
本篇文章將通過 Matrix 團隊與明勢資本執行董事徐之浩的對話,揭祕團隊賽前幕後的精彩故事,也希望給開發者們未來基於 TiDB 開發自己的應用和專案帶來一些啟示。
Matrix 隊名的由來
童劍: 如果把 TiDB 看成是黑客帝國的一個矩陣,我們的專案 Tenseigan 就像是黑客帝國的男主角 Neo,本身有很強的學習能力,可以自我進化,最終還可以成為救世主一樣的存在。所以取了 Matrix 這個名字。
專案的靈感來源
丁晨: 這個專案的靈感來源於 2017 年 SIGMOD 頂會的一篇 paper,也就是 OtterTune 框架。我們做這個專案的初衷是想看看 OtterTune 在 TiDB 上的表現,能否落地到生產環境,去解決實際的問題,以及 OtterTune 框架本身還存在哪些問題,對於分散式的場景,會不會有新的研究點產生。
Tenseigan:一個適配 TiDB 的自動化調優測試框架
投資人評委眼中的專案價值
Matrix 團隊的精彩創意也給明勢資本執行董事徐之浩留下了深刻印象,徐之浩在加入投資行業之前,也有過近 10 年研發工作經歷,對這類 Infra 的專案非常感興趣。明勢資本執行董事徐之浩在 Hackathon 頒獎現場
徐之浩:選擇這個隊伍獲得最佳市場潛力獎,主要是因為這個專案有很強的擴充套件性,另一方面也比較有創新性。之前大家對資料庫的優化更多停留在核心和優化器、執行器或者架構部分,但從使用者的視角來看,通過一些配置和引數的調整就可以獲得很好的效能提升。大家都聚焦在核心的優化上,沒有太多人來關注調參這部分,所以這個方向還是比較有創新性的。
在技術棧的選擇上,選擇用 AI 代替人來選擇最優的引數也是比較創新的。最近 Google 也在提用 AI 本身去優化 AI 的訓練框架,這本質上也是一種調參,是 ROI 很高的一個研究方向。如果能作為產品化的外掛用在 TiDB 上的話,對 TiDB 的效能是如虎添翼的。這樣被訓練完之後的 AI 也就像一個運維老師傅一樣,可以更高效地給出更好的引數建議,是有未來機器替代人工的現實意義的。
作為學生參賽的特殊體驗
Matrix 賽隊可以說是華中科技大學的代表隊,隊長丁晨在華中科技大學讀博二,研究方向是基於新硬體的鍵值儲存系統;熊逸欽是丁晨在同一個實驗室的學弟,在讀研一;童劍和陳書寧也都畢業於華中科技大學,目前在 PingCAP 做研發工程師。
丁晨: 作為學生參賽,最大的感受就是 Hackathon 是一個高強度、沉浸式的專案體驗,這種機會在學校裡面是比較少的。在學校裡做事情通常比較慢,也沒有 Deadline,像這種兩天內就需要寫一個小專案,對於學生能力的挑戰還是比較大的。此外,藉助這個機會接觸工業界實際的問題,對於我們做研究還是很有幫助的。因為我們做研究很多是從邏輯出發,如果瞭解到工業中的實際問題,就可以試著去解決實際遇到的問題。
熊逸欽: 這是我第一次參加 Hackathon,作為學生或者第一次參賽的選手來說,Hackathon 這種形式對我來說是前所未有的,而且很有吸引力。因為在短短兩天的時間內,我全身心地投入到專案中去,給我個人帶來的提升也是非常大的。
團隊協作共同攻克技術困難
丁晨:前期主要是我跟逸欽負責叢集搭建和框架部署,以及一些 TiDB 適配的工作。後期書寧和童劍主要是把生產環境的一些 Workload 給構造出來,然後讓調參的效果凸顯出來。我們分別構造了一個 TiDB、PD、TiKV 的 Case,後來我就去寫答辯的 PPT 和 Demo 了。陳書寧和童劍在 Hackathon 廣州現場
Q
在比賽過程中你們遇到過什麼比較大的技術困難?是如何解決的?距離真正生產可用還差多遠?
丁晨: 最開始,我們針對典型的 TPCC 的負載做效能測試的時候,發現 OtterTune 對於調參的效果不太明顯。因為 TiDB 對於這種標準的測試,預設配置引數已經優化得比較好了。後來我們就去嘗試構造一些在真實生產環境中遇到過的、有瓶頸的 Case。只有在有瓶頸的 Case 下面,調參的效果才能夠比較好的體現出來。這是我們遇到的一個技術難點,就是如何構造一個真實的環境,把調參的效果給展示出來是我們遇到的一個問題。
在框架的易用性方面的話,其實 OtterTune 的框架還是不太好用的,我們這個專案也是做了很多很多個指令碼,就像是跑了一個指令碼集。如果要讓它更加易用的話,可以在框架上做一些改進,比如可以把指令碼放在網頁上,一鍵執行,讓運維和研發更加方便地使用。未來如果能夠把 OtterTune 跟 TiDB Cloud 結合起來,在雲上可以給運維提供更好的環境,而把複雜性隱藏起來,應該是一個更有想象力的場景,這也是未來我們這個專案希望去擴充套件的地方。
成本問題 & 由於時間原因未完成的遺憾
徐之浩: 我還是比較好奇,你們有沒有算過要構建這麼一個訓練的叢集,需要花費多少成本?如果真要把它做成生產可用的產品的話,我理解還是需要有很多資料準備的,在這種情況下,如何保證訓練成本依然可控呢?
丁晨: 成本這個問題是一個關鍵問題,我們在做的時候其實並沒有太考慮這個問題。我們跑的資料也就是幾百個點的規模,後續如果要用在生產環境的話,可能需要一個專門的調參叢集,去做 AI 模型的訓練,把各種各樣的使用者資料收集到這個叢集裡面,讓 AI 模型去學習不同業務的 Workload,以及不同硬體配置下的經驗。這個經驗是可以複用的,也可以提高資料的使用效率,當這個訓練足夠多以後,成本是可以降低的。
Q
這次 Hackathon 的時間有限,你們在比賽過程中還有什麼遺憾嗎?
丁晨:目前我們的專案只能給出一個最優的引數。但沒辦法解釋這個引數為什麼最優,就是說我們的 AI 還是缺乏可解釋性的,我們還想做一個視覺化的模組,直觀地展示效能和最優配置之間的關係,從而幫助運維和研發去分析引數背後的原因。但因為時間原因,視覺化這裡還沒做得很直觀,只是做了一個列表。另外還有一些 Case 的測試結果不太符合預期,這一點跟 Workload 還比較有關聯,後續如何讓框架整合更多 Workload,讓不同 Workload 之間的調參經驗可以相互複用是一個需要考慮的問題。
熊逸欽: 因為時間關係,我們測試的覆蓋度還是不太夠,包括測試數量和測試引數都不是太完善。
童劍: 其實一些有經驗的 DBA,對於引數應該怎麼調整是有自己的經驗的。但他們通常只能給出一個方向性的建議。我們想做的實際上是把這種關係給具體化,能夠知道引數的變化關係,從而快速定位到最優引數的位置。這樣能加速收斂這個過程。
陳書寧: 我這邊主要有 2 個遺憾,一個是因為疫情關係,2 位隊友沒有辦法來到現場一起 Coding。另外因為這次參賽者比較多,預賽和決賽分開,沒有辦法保留完整的 24 小時持續程式設計的時間。其實那種連續 24 小時不間斷 coding 的體驗是很吸引人的。
評委眼中的 TiDB Hackathon
徐之浩: 這是我第一次擔任 Hackathon 的評委。TiDB Hackathon 給我的感受是特別硬核,之前我還在做程式設計師的時候參加過公司組織的 Hackathon,但感覺沒有這次這麼硬核。這次有 AI 類的專案,也有直接在 TiKV 上面做圖資料庫之類的專案,硬核程度完全超乎我的想象。明勢資本執行董事徐之浩在 Hackathon 現場參與評審
這次 Hackathon 對於 TiDB 也是非常有價值的,有很多專案離進入 TiDB 產品已經很近了,實用性方面也是非常棒的。而且這個過程中大家開了很多腦洞,產生了很多對產品迭代和產品周邊非常有價值的想法。所以 Hackathon 也可以看作是社群智慧的年度大爆發,在其中能非常切實地感受到社群小夥伴的創造力和潛力。
從活動組織上來看,活動早期的宣傳造勢,以及當時有個社群粉絲做得很炫酷的 “找隊友” 的短視訊,都讓我印象深刻。另外決賽環節中,一些沒有進入 20 強,但在單個方向上表現比較突出的專案也有機會能參與獨立獎項的角逐,展示自己的專案,這一點還是比較貼心的。唯一比較考驗的就是我們這些老評委的體力,整個答辯的時長還是比較長的。
展望與期待
Q
徐老師作為投資人,您對該專案有哪些商業化的建議嗎?
徐之浩: 我的建議還蠻多的,這個專案離一個可以商業化的產品還有很長的路要走。第一,我們可以把產品做得更穩定一些,不能在某些 workload 中表現很好,在其他 workload 中沒有效果。因為這個調參是針對資料庫,或者其他的 Infra,對於企業都是非常核心的部分,如果表現不穩定是很難商業化的。
第二就是成本問題,需要把 AI 的演算法和人的經驗結合起來,比如把一些不相關的因素通過人的經驗先排掉,這樣能讓 AI 更快地趨近好的效果,也能節省成本。
第三,建議可以先針對某一款軟體的場景打穿打透。這個過程中就需要跟軟體的原廠比如 PingCAP,保持比較緊密的合作,比如獲得更多真實環境中的資料等。另外考慮到商業模式,調參也不要做成一錘子買賣,儘量做成一個持續動態的調參建議,會讓我們的商業模式更加有想象力。
Q
你們的專案這次獲得了明勢資本特別贊助的最佳市場潛力獎和校園團隊獎,未來希望繼續把這個專案繼續下去嗎?
丁晨: 我們是希望繼續完善的,一方面是往雲上做適配,另外希望整合更多的功能,比如視覺化的展示和 AI 的因果推理等。還有前面徐總提到的動態負載的調優,同時兼顧收益和成本的關係。再就是優化框架,也需要社群實際生產環境中的資料。
Q
期待明年的 TiDB Hackathon 有哪些改進?
丁晨、熊逸欽: 可以考慮吸引更多高校的學生參與進來,加強在校園圈的宣傳力度。
童劍: 首先,學生對 TiDB 和工程實現沒有那麼熟悉。所以希望可以給校園群體設立獨立賽道,獨立評獎。另外,對於初賽被淘汰的隊員,決賽的參與度不高,可以多增加一些展示和互動的環節,讓初賽選手也能持續關注決賽。
徐之浩: 希望賽前提前給評委一些專案簡介,幫助評委更好地理解專案。另外,現場評審的強度挺高的,大腦資訊已經過載,有點審美疲勞了,中間希望有更多休息。也希望在賽前看到前一年 Hackathon 專案的狀態和落地情況等,這對選手和評委都是一種鼓舞。