0. 前言
AI的場景豐富多彩,AI的評價方法百花齊放,這對于設計一套更通用的評測框架來說,是一個極大的挑戰,需要兼顧不同的協議,不同的模型環境,甚至是不同的作業系統,本文分享了我們在AI評測路上的一些實踐經驗,重點介紹了我們在解決執行環境的不確定性方面所做的一些嘗試,彈性容器是我們當前最合適的解決方案,期望對大家也有所啟發,
1. AI評測是什么?
在當前的AI產品研發中,需要經常回答類似這樣的問題,比如哪一款智能音箱更好一些,哪一款引擎更加厲害,或者是哪一個機器學習演算法更適合我去用,
諸如此類,要回答這樣的問題,我們就需要有一個度量的尺子,這個尺子就是評測,我們需要設計指標是什么,能夠用什么資料出這些指標,每一類指標所體現出來的優缺點又是什么,怎么才能有效提升指標,這就是評測所做的事情,

2. AI評測怎么做?
AI評測平臺架構
以下是平臺的一個整體架構,分為接入層、邏輯層、資料層和存盤層,這個架構是一個純云原生系統,所有的服務部署以及所應用的一些存盤資源全部都是基于云上邊的,

3. 評測任務的不確定性
下面是評測任務的一個流程圖,我們有流水線、任務調度、有任務封裝這樣的重要環節,我們發現要調度和執行的任務會有一個極大的挑戰,那就是這些任務要支持到多種物件,每一種任務又是協同開發的一種方式,這就導致任務執行的一個環境是不確定的,還有就是任務在執行時所消耗的資源也是不確定的,

這里舉一些不同場景的特點:
評測服務的多樣性
比如我們要去評服務,可能面臨多種請求協議和回傳的內容,

評測模型的復雜性
我們要去評模型,會面臨不同的深度學習框架,比如基于tensorflow的,基于pytorch的,

評測演算法的多樣性
我們要評演算法,可能又會面臨不同格式的一些資料,

4. 任務執行架構的演進之路
那么怎么解決這些不確定性呢?我們其實做了幾種不同的嘗試,接下來就跟大家分享一下我們所做的幾步嘗試,
專門的任務運行服務
最開始的方案就是用一套專門的服務來支持所有的場景,所有功能和環境集成在一起,最明顯的一個問題就是任務間耦合特別高,維護起來特別麻煩,很難做到共同開發,因為我們評服務、評模型、評演算法有可能是不同的團隊或者不同的同學,如果把所有的服務都封裝在一個服務里面,實際上在每一層之間都有一個特別大的影響,其實也會導致整個的復用性特別低,

獨立且固定的容器服務
我們又探索了第二種方案,就是將一類的服務獨立出來,在一定程度上解決了服務的復雜性,但是復雜度還是較高,因為同一類服務里邊,比如以模型評測為例,不同的模型的框架是不一樣的,如果還是封裝在同一個服務里面,實際上要兼容不同的框架在同一個服務里邊也是一個特別復雜的事情,

方案二有一個好處,各種服務功能相對獨立,但是還是有一個問題,同一類服務復雜度較高,另外服務是常駐的,不同業務即使是同一種型別的評測,它的頻率是不一樣的,甚至是相差特別大,那么就導致服務空載比較多,資源利用率是不高的,
彈性的容器任務
在EKS[1]推出后,作為公司內首批吃螃蟹的業務,我們真正面向客戶的一個業務,開始進行了另一種方案的探索,就是用彈性容器任務的方式進行一個評測任務,我們確實感覺它是一個真香的,將所有的任務完全隔離,然后現在的一個維護成本是非常低的,不用自己部署服務,也不用自己管理資源的事情,

對每一個評測任務的開發者也是一個很好的福利,開發者甚至可以為所欲為地去做一些事情,不用擔心平臺的框架不支持,另外也不用擔心他所做的事情會影響到其他業務,當然對整個平臺設計來說,最大的好處就是用完就釋放,非常合理地利用資源,
幾種解決方案的對比
以下是三個方案的一個對比,也是EKS帶給我們的一些收益,

在方案一的時候雖然可以統一維護,但是確實要實作一個服務要得到評測物件的各種依賴是非常難的,同時任務間的耦合也特別高,導致只能支持有限的場景,
方案二,雖然做到的一定的隔離,任務間的耦合相對也是比較低的,但是每一個服務的忙閑狀態是不一樣的,我們的資源空耗是特別多的,就像這個圖所示,可能有的服務還是比較規律,忙一段閑一段,有的服務就會一直忙,然后有的服務就特別零散地忙一下,然后就長期處于一個閑置的狀態,
基于彈性的容器任務,可以做到任務可以隨啟隨銷,維護成本低,資源能夠達到一個合理利用,
5. 評測任務的“彈性”
以下是基于EKS后的整體任務調度流程,我們會把任務封裝到一個鏡像庫,然后調度鏡像部署到一個EKS倉庫中進行執行,這個就是解決評測任務所面臨的不確定性的問題,

EKS評測任務的發布程序
這是一個更具像化的程序,任務的開發者只需要把開發代碼提交到代碼庫,我們會有一套標準流程將代碼封裝到鏡像里面,在具體流水線調度的時候,會將這個鏡像啟動到EKS的調度中調度執行,這個執行結果會回傳到開發者這邊,他就可以及時地知道這一次任務執行的一個效果是怎么樣的,

6. 總結
EKS確實在我們支持不同的場景的評測任務時起到了非常大的一個助力,這樣對于我們拓展自己的評測場景起到了非常好的幫助,
在之前,我們要解決不同場景的評測,很多時候就需要靠我們自己平臺的開發者跟具體任務的開發者不斷地適配,這次任務需要什么環境,我需要幫你準備好,然后讓我的任務能夠給你提供一個比較好的環境,也能夠去執行,
自從有了EKS之后,我們可以只關注平臺架構的一個設計,任務里面需要依賴什么環境,需要什么包,完全都交給任務的一個開發者去設計,然后我們將他所需要的包、環境都打到一個鏡像里邊,各個任務的鏡像又相互獨立,然后我就可以很好地通過EKS調度執行,這樣對整個平臺的架構的一個可擴展性以及我們自己能力的拓展都有了一個很好的助力,
參考資料
[1]EKS: https://cloud.tencent.com/product/eks
【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/691.html
標籤:其他

