到 2022 年,人工智能已經(jīng)發(fā)展幾十年,如今我們?cè)僬務(wù)撊斯ぶ悄芤巡辉倬窒抻诶碚摗?a href="http://www.brongaenegriffin.com/v/" target="_blank">工業(yè)界需要應(yīng)用人工智能去解決問(wèn)題,學(xué)術(shù)界也需要得到相關(guān)模型在大規(guī)模應(yīng)用場(chǎng)景下的反饋。然而隨著技術(shù)的演進(jìn),我們發(fā)現(xiàn),基于開(kāi)源算法的人工智能項(xiàng)目陷入了“落地難”的困境,“從 98% 到 99.9% 精度”的這個(gè)過(guò)程尤其困難,所以業(yè)內(nèi)就有了“人工智能或許不適合開(kāi)源”的聲音出現(xiàn)。
于是,本期“InfoQ 極客有約”與“OpenI 啟智社區(qū)”聯(lián)合推出的系列直播欄目便邀請(qǐng)到了聯(lián)通研究院的教授級(jí)高級(jí)工程師、啟智社區(qū)開(kāi)源項(xiàng)目“CubeAI ?智立方”的負(fù)責(zé)人霍龍社博士,聽(tīng)他給我們分析一下當(dāng)下人工智能開(kāi)源項(xiàng)目的現(xiàn)狀與未來(lái),共同探討下“人工智能到底適不適合開(kāi)源”,并一起了解下,為推動(dòng) 5G 與 AI 融合創(chuàng)新,中國(guó)聯(lián)通在 2019 年發(fā)布 CubeAI 智立方平臺(tái)后的技術(shù)演進(jìn)與思考。
以下為直播內(nèi)容整理:
InfoQ:AI 到底適不適合開(kāi)源?您覺(jué)得為何會(huì)有“開(kāi)源不適合 AI”的聲音出現(xiàn)?您如何評(píng)價(jià)當(dāng)下 AI 技術(shù)的“開(kāi)源”?
霍博士:從普通開(kāi)發(fā)者的角度來(lái)看,開(kāi)源本質(zhì)上是一種促進(jìn)技術(shù)進(jìn)步、促進(jìn)科技創(chuàng)新的手段。所謂站在巨人的肩膀上,開(kāi)源使得普通的軟件開(kāi)發(fā)者一上來(lái)就能夠有一個(gè)較高的起點(diǎn),而不像我們?cè)趲资昵伴_(kāi)發(fā)軟件一樣,每一個(gè)項(xiàng)目都得從零開(kāi)始,從最底層開(kāi)始,一行行的來(lái)積攢代碼?,F(xiàn)在不一樣了,在開(kāi)始一個(gè)項(xiàng)目之前,首先上網(wǎng)找找有沒(méi)有合適的開(kāi)源代碼來(lái)打底子,搭建基礎(chǔ)的代碼框架,基礎(chǔ)的架子搭起來(lái)之后,只需要在上面專(zhuān)心實(shí)現(xiàn)自己特有的功能模塊就可以了。即使找不到非常合適的基礎(chǔ)代碼,類(lèi)似的東西也可以拿過(guò)來(lái)作為參考,啟發(fā)自己的開(kāi)發(fā)思路。從這個(gè)角度來(lái)說(shuō),開(kāi)源確實(shí)是一個(gè)好東西,不論什么技術(shù)都應(yīng)該開(kāi)源,沒(méi)有什么適合不適合的。
從公司的角度來(lái)說(shuō),開(kāi)源又是一把雙刃劍。開(kāi)源的歷史發(fā)展其實(shí)也說(shuō)明了這個(gè)問(wèn)題。最開(kāi)始商業(yè)公司開(kāi)發(fā)的軟件基本都是閉源的,不僅閉源,而且可能還有著一些非常嚴(yán)格的防止外泄的管理制度。也就是最近這些年來(lái),開(kāi)源才逐漸形成了一種潮流。因?yàn)閷?duì)于公司來(lái)說(shuō),考量是否適合開(kāi)源的一個(gè)重要因素可能主要還是利益,對(duì)公司的營(yíng)銷(xiāo)收益以及長(zhǎng)期發(fā)展能有多大的正面或負(fù)面的影響。之前之所以對(duì)代碼嚴(yán)格管理,就是怕泄露之后被別人抄襲,影響自己的生意。現(xiàn)在又把部分代碼拿出來(lái)開(kāi)源,部分原因也是為了能夠營(yíng)造自己的技術(shù)生態(tài)環(huán)境,把大量開(kāi)發(fā)者收攏到自己的開(kāi)發(fā)生態(tài)圈之內(nèi),同樣可以達(dá)到擠壓競(jìng)爭(zhēng)對(duì)手的目的。而在當(dāng)今世界開(kāi)源已被廣大開(kāi)發(fā)者所期待和習(xí)慣的形勢(shì)下,開(kāi)源開(kāi)放必將成為不可逆轉(zhuǎn)的世界潮流。因?yàn)閷?duì)于某項(xiàng)技術(shù)來(lái)說(shuō),如果你不開(kāi)源,但是周?chē)泻芏鄤e的競(jìng)爭(zhēng)對(duì)手選擇開(kāi)源,廣大開(kāi)發(fā)者和使用者必然會(huì)逐漸選擇加入到別的開(kāi)源創(chuàng)新的隊(duì)伍中去,從而慢慢擠壓掉你的市場(chǎng)份額。當(dāng)然,除非你有非常獨(dú)特的技術(shù)優(yōu)勢(shì),但是這種優(yōu)勢(shì)隨著時(shí)間的流逝可能也會(huì)慢慢喪失掉的。至于說(shuō)到 AI 技術(shù),從開(kāi)源的角度我認(rèn)為跟別的技術(shù)也沒(méi)有什么特別的區(qū)別,所以它的發(fā)展趨勢(shì)也必然是應(yīng)該全面走向開(kāi)源的。
至于說(shuō)有“開(kāi)源不適合 AI”的聲音出現(xiàn),其實(shí)有點(diǎn)以偏概全。AI 的開(kāi)源應(yīng)該是包含了很多層面上的,例如基礎(chǔ)設(shè)施、軟件環(huán)境、框架、算法、應(yīng)用等等,而不僅僅是一個(gè)模型的訓(xùn)練。就算是訓(xùn)練一個(gè)模型,模型的規(guī)模也是有大有小的,并不見(jiàn)得都是超大模型。就算是超大模型,你開(kāi)源出來(lái)我訓(xùn)練不了,我看看總還是可以吧?說(shuō)不定從中能吸取點(diǎn)什么思路,給你提點(diǎn)什么好的意見(jiàn)?而且既然別人都用不了你的模型,你開(kāi)源出來(lái)你又吃不了什么虧,那又為什么不可以開(kāi)源呢?
當(dāng)然了,AI 的模型訓(xùn)練確實(shí)也還是有跟別的技術(shù)不太一樣的東西的,那就是需要大規(guī)模甚至超大規(guī)模的數(shù)據(jù)。對(duì)于學(xué)術(shù)界來(lái)說(shuō),往往使用一些網(wǎng)上公開(kāi)的數(shù)據(jù)集就可以了。而對(duì)于工業(yè)界來(lái)說(shuō),數(shù)據(jù)的保密性可能就存在一定的問(wèn)題。數(shù)據(jù)的無(wú)法開(kāi)源也會(huì)影響到開(kāi)源模型的有效性和實(shí)用性,這方面是值得注意和研究的??傊?,個(gè)人認(rèn)為并不存在什么適合不適合開(kāi)源的問(wèn)題,而主要是愿意不愿意開(kāi)源,以及開(kāi)源到什么程度的問(wèn)題。
InfoQ:依賴(lài)開(kāi)源算法,AI 技術(shù)是否可以完成深度落地?
霍博士:這個(gè)問(wèn)題不好回答,但如果能改成“借助開(kāi)源算法,是否可以促進(jìn) AI 技術(shù)高效落地”,那這個(gè)答案就是比較肯定的了。
開(kāi)源只是一個(gè)能夠促進(jìn)協(xié)作創(chuàng)新、提高開(kāi)發(fā)效率的手段,而并不是一個(gè)無(wú)所不能、能夠包打天下的東西。不同的群體對(duì)于開(kāi)源的貢獻(xiàn)和索取的期望值不盡一致,導(dǎo)致開(kāi)源內(nèi)容的品種和質(zhì)量也是五花八門(mén)、良莠不齊的。比如學(xué)術(shù)界開(kāi)源的項(xiàng)目可能更傾向于一些理論、算法的驗(yàn)證,距離實(shí)際生產(chǎn)應(yīng)用會(huì)較遠(yuǎn)一些。工業(yè)界對(duì)于開(kāi)源的態(tài)度,出于利益競(jìng)爭(zhēng)的考慮,可能也會(huì)有一些掐頭去尾,不太可能把自己的老底完全兜出來(lái)的;有些企業(yè)拿出來(lái)用于開(kāi)源的代碼和自己在現(xiàn)網(wǎng)生產(chǎn)系統(tǒng)中使用的代碼可能是兩套完全不同的東西,從算法和系統(tǒng)運(yùn)行的性能、安全性、可靠性、穩(wěn)定性、適用環(huán)境等方面都會(huì)打一定的折扣。所以,要完成 AI 技術(shù)的深度落地,可能并不能完全依賴(lài)開(kāi)源算法。
但是,不完全依賴(lài)開(kāi)源并不是說(shuō)就完全不依賴(lài)開(kāi)源,AI 技術(shù)的落地還是要而且必須要借助于開(kāi)源算法的。借助開(kāi)源的效果,最主要的就是提高開(kāi)發(fā)和生產(chǎn)效率。對(duì)于一個(gè)面向?qū)嶋H生產(chǎn)運(yùn)營(yíng)的項(xiàng)目,拿一個(gè)開(kāi)源代碼過(guò)來(lái)不加修改直接運(yùn)行幾乎 99% 是不太可能成功的,但是利用現(xiàn)有的開(kāi)源代碼進(jìn)行二次開(kāi)發(fā),通過(guò)采取擴(kuò)展功能、改善性能、增強(qiáng)安全性可靠性等措施,或者僅把開(kāi)源代碼當(dāng)做參考原型,借助其工作原理來(lái)重新進(jìn)行代碼設(shè)計(jì)和開(kāi)發(fā),與完全不參考開(kāi)源代碼自己一切從頭開(kāi)發(fā)比起來(lái),其開(kāi)發(fā)效率都必然會(huì)大大提高,達(dá)到事半功倍的效果。
InfoQ:2019 年,中國(guó)聯(lián)通為推動(dòng) 5G 與 AI 融合創(chuàng)新,發(fā)布了 CubeAI 智立方平臺(tái),當(dāng)初為什么選擇開(kāi)源?
霍博士:關(guān)于 CubeAI 智立方這個(gè)平臺(tái)的開(kāi)發(fā)和開(kāi)源,其實(shí)也并不是一開(kāi)始就規(guī)劃好要做開(kāi)源,而是有一個(gè)逐漸演進(jìn)和發(fā)展的過(guò)程的。CubeAI 智立方是中國(guó)聯(lián)通研究院自主研發(fā)的集 AI 模型自動(dòng)化服務(wù)封裝、發(fā)布、共享、部署和能力開(kāi)放等功能于一體的開(kāi)源 AI 算能服務(wù)平臺(tái),其核心作用在于打通 AI 模型開(kāi)發(fā)至實(shí)際生產(chǎn)應(yīng)用之間的壁壘,加速 AI 創(chuàng)新和應(yīng)用進(jìn)程,促進(jìn) AI 應(yīng)用從設(shè)計(jì)、開(kāi)發(fā)直到部署、運(yùn)營(yíng)整個(gè)生命周期的自動(dòng)化快速迭代和演進(jìn)。
CubeAI 其實(shí)主要實(shí)現(xiàn)了以下三個(gè)功能:AI 模型的自動(dòng)化服務(wù)封裝、自動(dòng)化模型發(fā)布和自動(dòng)化模型部署。所謂自動(dòng)化服務(wù)封裝,就是將原先只能在本地調(diào)用的模型推理程序通過(guò)簡(jiǎn)單的代碼模板套用自動(dòng)封裝成為可通過(guò)網(wǎng)絡(luò)遠(yuǎn)程訪問(wèn)的 API 服務(wù)。所謂自動(dòng)化模型發(fā)布,就是將經(jīng)服務(wù)化封裝的模型推理程序自動(dòng)打包成微服務(wù)容器,一鍵發(fā)布至 CubeAI 提供的模型共享托管平臺(tái),供用戶進(jìn)行瀏覽、評(píng)價(jià)、交易和部署。所謂自動(dòng)化模型部署,就是將 CubeAI 模型共享平臺(tái)中的模型推理微服務(wù)一鍵部署至 k8s 等云原生算力平臺(tái),部署之后直接向用戶提供基于 API 接口的 AI 能力開(kāi)放服務(wù)。
最開(kāi)始我們想要做這個(gè)平臺(tái)的時(shí)候,主要是基于內(nèi)部項(xiàng)目的一些需要。剛開(kāi)始并沒(méi)有想要完全自己做,而是打聽(tīng)到有一個(gè)叫做 Acumos 的開(kāi)源項(xiàng)目,能夠提供類(lèi)似的一些功能。Acumos 是 Linux foundation 下面的一個(gè)深度學(xué)習(xí)基金會(huì)立項(xiàng)的一個(gè)開(kāi)源項(xiàng)目,但它的開(kāi)發(fā)者主要來(lái)源于 AT&T 公司,跟我們聯(lián)通一樣都屬于電信運(yùn)營(yíng)商。剛開(kāi)始我們是想直接利用 Acumos 的代碼,希望能夠直接把它跑起來(lái),最多是在它的基礎(chǔ)上根據(jù)我們的需求改吧改吧,來(lái)滿足我們的應(yīng)用。但在實(shí)際使用過(guò)程中,我們發(fā)現(xiàn)這樣的做法并不太行得通。首先下載下來(lái)的代碼在我們的機(jī)器上就跑不起來(lái),好容易想盡各種辦法把它勉強(qiáng)跑起來(lái)了,好多功能調(diào)用的時(shí)候又出錯(cuò),幾乎無(wú)法使用。其次發(fā)現(xiàn)他們的代碼過(guò)于龐雜,而且不是我們想要的微服務(wù)架構(gòu),二次開(kāi)發(fā)和代碼維護(hù)的難度都非常大。
所以我們就決定不直接基于 Acumos 代碼進(jìn)行二次開(kāi)發(fā),而是重起爐灶搭建我們自己的代碼框架,然后參考和部分借用 Acumos 的代碼來(lái)進(jìn)行開(kāi)發(fā)。也就是說(shuō),我們不直接使用 Acumos 已經(jīng)編好的筐,而是新編一個(gè)我們自己的筐,然后把 Acumos 筐中覺(jué)得好用的蛋拿到我們的筐中來(lái),實(shí)現(xiàn)我們需要的功能。
基于這個(gè)思路,我們很快就完成了 CubeAI 平臺(tái)第一個(gè)版本的開(kāi)發(fā),并在 2019 年的世界移動(dòng)通信大會(huì)進(jìn)行了發(fā)布。考慮到它并不是一個(gè)單一的產(chǎn)品或平臺(tái),而是需要與產(chǎn)業(yè)界各方進(jìn)行交流合作,共同來(lái)構(gòu)建產(chǎn)業(yè)合作生態(tài)環(huán)境,于是我們?cè)诎l(fā)布這個(gè)版本的同時(shí)就決定將其同步進(jìn)行開(kāi)源。當(dāng)然在決定開(kāi)源的時(shí)候,除了面向產(chǎn)業(yè)鏈生態(tài)合作方面的因素之外,我們也考慮了其他的一些理由。首先我們的這個(gè) CubeAI 最初是在參考開(kāi)源軟件 Acumos 的基礎(chǔ)上進(jìn)行開(kāi)發(fā)的,雖然后來(lái)我們實(shí)際上已經(jīng)完全脫離了 Acumos 的體系,但最初畢竟還是受到了它的影響,既然來(lái)源于開(kāi)源,也就應(yīng)該回饋于開(kāi)源,這是其中一個(gè)考慮因素。另外就是我們覺(jué)得我們剛開(kāi)始參考的這個(gè) Acumos 開(kāi)源軟件做的并不太好,而且不太適用于我們中國(guó)人使用,而我們自主開(kāi)發(fā)的這個(gè) CubeAI 從好幾個(gè)方面都比外國(guó)人做的東西更好用,我們就希望能把它開(kāi)源出去來(lái)向外界進(jìn)行展示,也算是一種宣傳吧。
InfoQ:從目前人工智能行業(yè)發(fā)展來(lái)看,AI 模型開(kāi)發(fā)與實(shí)際生產(chǎn)應(yīng)用之間有哪些壁壘?作為開(kāi)源 AI 算能服務(wù)平臺(tái),CubeAI 智立方是如何打通這些壁壘的?
霍博士:大家都知道 AI 的使用主要包括模型訓(xùn)練和模型推理兩大步驟。模型開(kāi)發(fā)者首先使用大量數(shù)據(jù)訓(xùn)練出一個(gè)模型來(lái),然后模型使用者調(diào)用這個(gè)預(yù)訓(xùn)練好的模型,輸入自己的數(shù)據(jù)來(lái)執(zhí)行模型推理,計(jì)算出自己的預(yù)測(cè)結(jié)果來(lái)?,F(xiàn)在 AI 方面大量的工作主要集中在模型訓(xùn)練方面,而對(duì)于如何將訓(xùn)練后的模型交付給最終用戶進(jìn)行使用關(guān)注得并不多。究其原因,可能主要是因?yàn)槟P陀?xùn)練過(guò)程本身就包含了模型推理,大多數(shù)模型開(kāi)發(fā)者并沒(méi)有覺(jué)得調(diào)用和執(zhí)行模型推理是一件什么難事。而實(shí)際上,在真實(shí)的行業(yè)應(yīng)用中,廣大的模型使用者可能對(duì) AI 模型訓(xùn)練和推理的具體技術(shù)細(xì)節(jié)并不是太了解,讓他們直接使用與模型開(kāi)發(fā)者一樣的編程環(huán)境來(lái)進(jìn)行模型推理實(shí)在就有點(diǎn)勉為其難了。
舉個(gè)例子,現(xiàn)在學(xué)校里的研究生發(fā)表 AI 相關(guān)的論文,一般都還同時(shí)把自己的源碼上傳到類(lèi)似 Github 這樣的開(kāi)源托管平臺(tái)上;審稿人在閱讀論文的時(shí)候,如果想親自核實(shí)一下論文算法的運(yùn)行效果,就需要先把作者開(kāi)源的代碼下載到本地,然后根據(jù) README 指示在自己的電腦上從頭配置一套運(yùn)行環(huán)境,然后再在這個(gè)環(huán)境中運(yùn)行模型推理代碼。由于每個(gè)作者每個(gè)模型的運(yùn)行環(huán)境千差萬(wàn)別,這個(gè)從頭配置環(huán)境并運(yùn)行代碼的過(guò)程有時(shí)是十分困難的,沒(méi)有非常熟練的 AI 模型開(kāi)發(fā)經(jīng)驗(yàn)的人員一般很難輕松搞定。當(dāng)然,在這個(gè)例子中的審稿人通常是行業(yè)專(zhuān)家,完成這些工作也許不是什么大的問(wèn)題,但也會(huì)浪費(fèi)很多時(shí)間。而對(duì)于像我這樣的對(duì)于什么是神經(jīng)網(wǎng)絡(luò)、什么是張量等等都搞不懂的普通人來(lái)說(shuō),如果也想去試試,就不是那么簡(jiǎn)單的了。而在其他的行業(yè)應(yīng)用中,真正的用戶其實(shí)大部分就是類(lèi)似我們這樣的普通人,而不個(gè)個(gè)是 AI 和編程專(zhuān)家。
為了解決這個(gè)問(wèn)題,一個(gè)辦法就是把 AI 模型服務(wù)化,把它部署到云端,然后用戶不需要在自己的本地電腦上安裝配置運(yùn)行環(huán)境,而是直接通過(guò)調(diào)用云端提供的服務(wù)化 API 接口來(lái)獲取模型推理結(jié)果就可以了。這種方式現(xiàn)在已經(jīng)大量存在,好多商業(yè)化的網(wǎng)站和生產(chǎn)應(yīng)用系統(tǒng)也都采用的是這種模式。但是,這種模式雖然方便了使用者,但卻給普通的模型開(kāi)發(fā)者帶來(lái)了麻煩。因?yàn)樵谶@種模式下,要想把一個(gè)模型推理程序變成云端服務(wù)器上的服務(wù)化 API 接口,是需要由網(wǎng)站運(yùn)營(yíng)者針對(duì)每一個(gè)模型程序?qū)iT(mén)進(jìn)行服務(wù)化定制開(kāi)發(fā)和部署的,不僅流程繁瑣、工作量大,而且對(duì)于普通的模型開(kāi)發(fā)者也是可望而不可及的,只有那些實(shí)力雄厚、擁有自己服務(wù)器和網(wǎng)站的企業(yè)才可能做到。以上面提到的論文審稿為例,一個(gè)研究生可以很輕松把自己的模型代碼放到 github 等代碼托管平臺(tái)上,但是卻很難有渠道將其服務(wù)化部署到一個(gè)大家都可以訪問(wèn)的網(wǎng)站上去。
我們做的這個(gè) CubeAI 智立方,剛好就可以解決這個(gè)問(wèn)題,打破模型開(kāi)發(fā)者到模型使用者之間的這個(gè)障礙,使得模型開(kāi)發(fā)者不需要了解云端網(wǎng)站開(kāi)發(fā)和服務(wù)化封裝的基本原理和編程知識(shí),只需要簡(jiǎn)單套用一下 CubeAI 提供的模板程序,就可以將自己的模型程序一鍵發(fā)布和部署至云端網(wǎng)站,以服務(wù)化 API 的方式對(duì)所有用戶提供模型推理服務(wù);而模型使用者也不需要了解和掌握任何 AI 編程和運(yùn)行環(huán)境配置等知識(shí),只需要使用經(jīng) CubeAI 封裝的非常簡(jiǎn)單的方式調(diào)用網(wǎng)絡(luò) API 接口就可以了。
InfoQ:CubeAI 智立方由 AI 建模、AI 模型共享(AI 商城)和 AI 能力開(kāi)放三大平臺(tái)組成。分別解決了 AI 模型使用者的哪些問(wèn)題?
霍博士:在最初的規(guī)劃中,CubeAI 是打算由 AI 模型訓(xùn)練、AI 模型共享和 AI 能力開(kāi)放這 3 個(gè)平臺(tái)組成。在實(shí)際做的過(guò)程中,我們實(shí)際上沒(méi)有自己去做模型訓(xùn)練這一塊。當(dāng)然這樣說(shuō)也不太準(zhǔn)確,我們?cè)?jīng)自己也開(kāi)發(fā)過(guò)一個(gè)模型訓(xùn)練平臺(tái)的,但做出來(lái)后發(fā)現(xiàn)做的并不太好,跟目前市場(chǎng)上已經(jīng)有的一些模型訓(xùn)練平臺(tái)相比,采用的技術(shù)和實(shí)現(xiàn)的功能都大同小異,但好用性和可用性等方面都不是太好,所以后來(lái)就決定放棄這一塊,不再自己做,而是直接使用現(xiàn)成的訓(xùn)練平臺(tái)。不論用哪一家訓(xùn)練平臺(tái)訓(xùn)練出來(lái)的模型,都可以與我們的模型共享平臺(tái)進(jìn)行對(duì)接。例如,百度的 AI-Studio 就是一個(gè)很好的 AI 訓(xùn)練平臺(tái),從界面友好性等方面都比我們當(dāng)初自己做的那個(gè)要好用得多。啟智社區(qū)的 AI 協(xié)作平臺(tái)功能就更加強(qiáng)大了。
AI 模型共享平臺(tái)可以看作是一個(gè)經(jīng)服務(wù)化封裝的 AI 模型推理程序運(yùn)行體的托管倉(cāng)庫(kù)。這個(gè)經(jīng)服務(wù)化封裝的 AI 模型推理程序運(yùn)行體的具體表現(xiàn)形式目前就是一個(gè) Docker 容器。把每一個(gè)模型推理程序封裝成一個(gè) Docker 容器,這樣就實(shí)現(xiàn)了云原生,可以隨時(shí)隨地將其部署至任何可以運(yùn)行 Docker 的環(huán)境中運(yùn)行并提供模型推理服務(wù)。打個(gè)比方,跟 GitHub 等傳統(tǒng)的靜態(tài)代碼托管平臺(tái)相比,我們可以把 CubeAI 的模型共享平臺(tái)看作是一個(gè)可以運(yùn)行的“活體程序”的托管平臺(tái)。通過(guò)平臺(tái)提供的界面,用戶可以瀏覽、搜索自己感興趣的模型,也可以像市場(chǎng)中的商品一樣對(duì)模型進(jìn)行評(píng)價(jià)、收藏、交易、分享,對(duì)于已購(gòu)買(mǎi)的模型,可以將它部署至任意云平臺(tái)或者本地電腦。目前,因?yàn)檫€沒(méi)有商業(yè)化運(yùn)行,我們暫時(shí)還沒(méi)有實(shí)現(xiàn)模型交易這個(gè)功能,所有模型都還是免費(fèi)的,所以我們暫時(shí)還把這個(gè)平臺(tái)叫做 AI 模型共享平臺(tái),而沒(méi)有叫做 AI 商城。
在 AI 模型訓(xùn)練平臺(tái)到 AI 模型共享平臺(tái)之間,實(shí)際上還是有一個(gè) AI 模型服務(wù)化的過(guò)程的。在這里我們主要是開(kāi)發(fā)了一個(gè)叫做 ServiceBoot 的 AI 模型服務(wù)化引擎,還有一個(gè)模型服務(wù)化程序模板。模型開(kāi)發(fā)者只需要套用這個(gè)程序模板對(duì)他開(kāi)發(fā)好的模型推理程序進(jìn)行非常簡(jiǎn)單的代碼封裝,就可以達(dá)到模型服務(wù)化的效果,利用 ServiceBoot 引擎以網(wǎng)絡(luò) API 接口的形式對(duì)外提供模型推理服務(wù)。封裝好的模型服務(wù)器程序,再經(jīng)過(guò)一鍵發(fā)布操作,就可以將其發(fā)布至 AI 模型共享平臺(tái)。在模型發(fā)布過(guò)程中,AI 模型共享平臺(tái)會(huì)自動(dòng)將經(jīng)服務(wù)化封裝的 AI 模型推理程序打包成微服務(wù)形式 Docker 容器鏡像,模型運(yùn)行所需要的 Python 環(huán)境、AI 框架等等都會(huì)被自動(dòng)選擇并打包進(jìn)去,而不需要用戶的手動(dòng)干預(yù)。
最后再來(lái)解釋一下這個(gè) AI 能力開(kāi)放平臺(tái)。本質(zhì)上來(lái)說(shuō),用戶可以將從 AI 模型共享平臺(tái)購(gòu)買(mǎi)的 AI 模型部署至任何可以運(yùn)行 Docker 容器的環(huán)境中進(jìn)行運(yùn)行,例如各類(lèi)云平臺(tái)、本地電腦等等。但是考慮到很多用戶自己并沒(méi)有合適可用的云平臺(tái),所以我們就開(kāi)發(fā)了這樣一個(gè) AI 能力開(kāi)放平臺(tái),用于進(jìn)行模型的部署和運(yùn)行管理。我們目前采用 k8s 來(lái)搭建 AI 能力開(kāi)放平臺(tái)。模型部署至 k8s 之后,通過(guò) AI 能力開(kāi)放平臺(tái)提供的用戶界面,用戶可以查看模型的運(yùn)行狀態(tài);還可以對(duì)模型運(yùn)行的生命周期狀態(tài)進(jìn)行管理,例如執(zhí)行實(shí)例擴(kuò)縮容等操作;還可以使用模型提供的 API 接口進(jìn)行模型推理測(cè)試;甚至還可以利用模型開(kāi)發(fā)的 Web 界面進(jìn)行可視化模型演示。
InfoQ:經(jīng)歷 3 年的發(fā)展,CubeAI 智立方在技術(shù)方面實(shí)現(xiàn)了怎樣的突破?在 5G 與 AI 融合方面有怎樣的探索?目前在攻克的技術(shù)難題是什么?
霍博士:CubeAI 從 2019 年開(kāi)始做,到現(xiàn)已經(jīng)斷斷續(xù)續(xù)開(kāi)發(fā)了不短的時(shí)間,也迭代了不少的版本。這個(gè)過(guò)程中還是做了一些比較有價(jià)值的事:
第一個(gè)就是 AI 模型服務(wù)化引擎的開(kāi)發(fā)。模型服務(wù)化其實(shí)可以算作是 CubeAI 中最核心最關(guān)鍵的一個(gè)東西,與普通的 Web 框架相比,關(guān)鍵是要能夠?qū)崿F(xiàn)對(duì)普通的模型推理程序進(jìn)行自動(dòng)化服務(wù)封裝,還有就是要實(shí)現(xiàn)模型加載和模型推理兩個(gè)過(guò)程的分離,以便提升模型推理的性能。剛開(kāi)始我們直接使用 Acumos 提供的一個(gè)叫做 acumos-model-runner 的服務(wù)化引擎,但在使用過(guò)程中發(fā)現(xiàn)它這個(gè)東西僅僅對(duì) TensorFlow 等少數(shù) AI 框架有效,連對(duì) PyTorch 這樣主流的框架都不支持。于是我們就經(jīng)過(guò)分析之后對(duì) acumos-model-runner 進(jìn)行了改造,基本能夠支持對(duì)所有 AI 框架開(kāi)發(fā)的模型進(jìn)行服務(wù)化封裝。再后來(lái)我們進(jìn)一步研究,發(fā)現(xiàn) acumos-model-runner 的實(shí)現(xiàn)原理和使用方式都非常別扭,有把簡(jiǎn)單問(wèn)題復(fù)雜化的傾向,導(dǎo)致開(kāi)發(fā)效率、運(yùn)行性能和用戶體驗(yàn)等方面都不是很友好。于是我們就又徹底拋棄 acumos-model-runner,完全重新設(shè)計(jì)和開(kāi)發(fā)了一個(gè)全新的服務(wù)化引擎,不論從技術(shù)原理、開(kāi)發(fā)效率、運(yùn)行性能還是用戶友好性等方面,都取得了超越 acumos-model-runner 的非常好的效果。我們最開(kāi)始給這個(gè)服務(wù)化引擎起了個(gè)名字叫作 iBoot。
第二個(gè)是基于微服務(wù)框架的平臺(tái)開(kāi)發(fā)和重構(gòu)。前面說(shuō)過(guò),CubeAI 最初是參考開(kāi)源項(xiàng)目 Acumos 開(kāi)發(fā)的。但是由于我們對(duì) Acumos 的代碼結(jié)構(gòu)不是很滿意,所以一開(kāi)始我們選擇了采用基于 SpringCloud 的開(kāi)源微服務(wù)框架來(lái)搭建代碼主體框架,僅僅是參考 Acumos 的部分代碼來(lái)實(shí)現(xiàn)平臺(tái)功能,這樣就形成了 CubeAI 的最初版本。在使用 SpringCloud 微服務(wù)框架的開(kāi)發(fā)過(guò)程中,我們也遇到了一些問(wèn)題,促使我們決定試著開(kāi)發(fā)一個(gè)自己的微服務(wù)框架。首先是這個(gè)框架非常龐大,調(diào)用關(guān)系非常復(fù)雜,雖然號(hào)稱(chēng)是開(kāi)源的,但有些組件深入 debug 之后發(fā)現(xiàn)還是找不到源碼,從而導(dǎo)致對(duì)有些功能的實(shí)現(xiàn)知其然不知其所以然,有些不符合自己使用習(xí)慣的東西想改又不知道該怎么改,有些搞不清的東西也不知道到底敢不敢用。其次是這個(gè)框架只支持 java 編寫(xiě)的微服務(wù),不支持其他語(yǔ)言開(kāi)發(fā)微服務(wù)的接入,不利于微服務(wù)的兼容擴(kuò)展。再次是 Java 編程的學(xué)習(xí)和調(diào)試難度較高,而我們的開(kāi)發(fā)力量和水平有限,導(dǎo)致開(kāi)發(fā)效率不太高。考慮到現(xiàn)在絕大多數(shù) AI 模型都是基于 Python 進(jìn)行開(kāi)發(fā)的,大多數(shù) AI 開(kāi)發(fā)者對(duì)它都比較熟悉,而且 Python 也相對(duì)比較容易學(xué)習(xí),能夠大大提高開(kāi)發(fā)效率,所以我們就試著使用 Python 對(duì)整個(gè) CubeAI 平臺(tái)代碼進(jìn)行了重寫(xiě),包括其中的微服務(wù)框架部分。
第三個(gè)是微服務(wù)引擎和微服務(wù)框架的抽象和重構(gòu)。最開(kāi)始用 Python 重寫(xiě)的 CubeAI 平臺(tái),其代碼結(jié)構(gòu)還是比較繁瑣的,特別是涉及到網(wǎng)絡(luò)并發(fā)處理等操作,其中的異步編程機(jī)制不僅編程麻煩,而且一般人很難理解和學(xué)習(xí)。正在為這個(gè)問(wèn)題犯愁的時(shí)候,突然想起來(lái)們的 iBoot 既然可以用來(lái)對(duì) AI 模型程序進(jìn)行服務(wù)化封裝,那是不是也可以用來(lái)開(kāi)發(fā)普通的微服務(wù)程序呢?于是我們就參考 iBoot 又開(kāi)發(fā)了一套通用的微服務(wù)引擎,起名叫作 ServiceBoot。ServiceBoot 對(duì)微服務(wù)訪問(wèn)的各類(lèi)異步并發(fā)操作以及 API 接口映射、參數(shù)處理機(jī)制等等進(jìn)行了統(tǒng)一的抽象和封裝,提供了一套簡(jiǎn)單易懂的函數(shù)式網(wǎng)絡(luò)編程接口,能夠大大簡(jiǎn)化編程復(fù)雜度,提高微服務(wù)開(kāi)發(fā)的效率。在這個(gè)基礎(chǔ)上,我們又把整個(gè)平臺(tái)中提供微服務(wù)框架的基礎(chǔ)組件抽象出來(lái),使用 ServiceBoot 重新編寫(xiě),這樣就構(gòu)成了一套獨(dú)立的通用微服務(wù)框架基礎(chǔ)組件,我們給它起了個(gè)名字叫作 CubePy。CubePy 是一套通用的微服務(wù)框架,包括微服務(wù)注冊(cè)和發(fā)現(xiàn)、API 網(wǎng)關(guān)、用戶認(rèn)證授權(quán)、應(yīng)用管理、文件和鏡像管理、前端微服務(wù)模板等基礎(chǔ)組件,它不僅可以用于開(kāi)發(fā) CubeAI,而且可以用于開(kāi)發(fā)其他任意的云原生微服務(wù)類(lèi)應(yīng)用。CubePy 的基礎(chǔ)組件雖然是使用 Python 和 ServiceBoot 寫(xiě)的,但是它并不限于僅支持 Python 微服務(wù)接入,用其他語(yǔ)言寫(xiě)的微服務(wù),只要符合 CubePy 的相關(guān)接口要求,也都是可以接入到 CubePy 框架來(lái)進(jìn)行管理的。
因?yàn)闅v史的原因,之前 iBoot 和 ServiceBoot 一直是按照兩個(gè)產(chǎn)品來(lái)進(jìn)行開(kāi)發(fā)和維護(hù)的,一個(gè)專(zhuān)門(mén)用于 AI 模型的開(kāi)發(fā)和服務(wù)化封裝,一個(gè)專(zhuān)門(mén)用于 CubePy 微服務(wù)的開(kāi)發(fā)。前一段時(shí)間我們剛剛對(duì)這兩個(gè)東西進(jìn)行了融化整合,把它們整合成了一個(gè)產(chǎn)品,名字定為 ServiceBoot。這樣對(duì)內(nèi)對(duì)外都比較方便。對(duì)外便于用戶理解和使用,對(duì)內(nèi)便于開(kāi)發(fā)團(tuán)隊(duì)的開(kāi)發(fā)和維護(hù)。也就是說(shuō),以后不論是開(kāi)發(fā)普通的微服務(wù)應(yīng)用,還是開(kāi)發(fā) AI 模型推理服務(wù),都使用這個(gè)統(tǒng)一的 ServiceBoot 就行了。而且,ServiceBoot 不僅僅可以用來(lái)對(duì) AI 模型進(jìn)行服務(wù)化封裝的,實(shí)際上它可以用來(lái)對(duì)任意的 Python 程序進(jìn)行服務(wù)化封裝,在開(kāi)發(fā)和部署效率、服務(wù)性能和用戶友好性等方面都明顯好于其他的 Python Web 框架。
InfoQ:CubeAI 智立方進(jìn)入 OpenI 項(xiàng)目培育管道后,有怎樣的體驗(yàn)?獲得了哪些助力?您如何評(píng)價(jià) OpenI?
霍博士:CubeAI 大概是在去年 7 月份,經(jīng)過(guò)啟智社區(qū)嚴(yán)格的評(píng)審流程,正式被社區(qū)采納,作為重點(diǎn)開(kāi)源項(xiàng)目貢獻(xiàn)至啟智社區(qū)并進(jìn)入社區(qū)項(xiàng)目孵化管道的。進(jìn)入社區(qū)這一年多來(lái),在社區(qū)的支撐和培育之下,我們的項(xiàng)目得到了良好的發(fā)展,取得了顯著的進(jìn)步,總體感覺(jué)是非常不錯(cuò)的。
我們以單位名義、以會(huì)員方式正式加入了社區(qū),并且在社區(qū)正式立項(xiàng)了開(kāi)源項(xiàng)目,所以就可以光明正大地來(lái)搞開(kāi)源,不再受制于一些條條框框的約束和限制了。
其次社區(qū)提供了 AiForge 這樣一個(gè)非常好的代碼托管協(xié)作開(kāi)發(fā)平臺(tái)。在加入啟智社區(qū)之后,經(jīng)過(guò)一段時(shí)間的試用,我們就喜歡上了這個(gè)平臺(tái),并且把 CubeAI 項(xiàng)目的所有代碼開(kāi)發(fā)活動(dòng)都切換到了這個(gè)平臺(tái)之上。主要原因就是因?yàn)樗暮糜?,一個(gè)是速度快,瀏覽、提交、合并代碼都非常流暢,幾乎沒(méi)有什么卡頓;二是用戶界面友好、操作簡(jiǎn)單方便,沒(méi)有太多啰嗦和看不懂的地方;再就是它本身也是一個(gè)持續(xù)迭代開(kāi)發(fā)的開(kāi)源項(xiàng)目,你可以在線看到它的持續(xù)更新,而且每次都是向著更好的用戶體驗(yàn)。不僅如此,在使用過(guò)程中如果遇到什么問(wèn)題,都可以及時(shí)提出并得到反饋,好的修改建議會(huì)很快出現(xiàn)在下一個(gè)發(fā)布的版本之中。這些都是以前用其他代碼托管平臺(tái)和工具時(shí)所無(wú)法體驗(yàn)到的。
還有就是在加入社區(qū)之后,社區(qū)給我們提供了很多展示和宣傳項(xiàng)目的機(jī)會(huì)和平臺(tái),例如 EngineClub 論壇講座、啟智校園行、蘇州智博會(huì)、啟智開(kāi)發(fā)者大會(huì)、中國(guó)開(kāi)源大會(huì)等等。通過(guò)參與這些活動(dòng),一方面宣傳和擴(kuò)大了 CubeAI 的影響,另一方面也學(xué)到了更多開(kāi)源方面的知識(shí)和先進(jìn)經(jīng)驗(yàn)。在年初召開(kāi)的啟智開(kāi)發(fā)者大會(huì)上,CubeAI 還有幸榮獲了啟智社區(qū)頒發(fā)的優(yōu)秀開(kāi)源項(xiàng)目獎(jiǎng),我們的開(kāi)發(fā)團(tuán)隊(duì)成員也榮獲了啟智社區(qū)的優(yōu)秀開(kāi)發(fā)者稱(chēng)號(hào)。最近一段時(shí)間社區(qū)搞的“我為開(kāi)源打榜狂”活動(dòng)也很有意思。我覺(jué)得所有這些都是對(duì)開(kāi)源開(kāi)發(fā)者很好的鞭策和鼓勵(lì),促使大伙能夠更好地投入到開(kāi)源事業(yè)的建設(shè)和發(fā)展中來(lái)。
InfoQ:之后對(duì) CubeAI 智立方平臺(tái)的發(fā)展有何規(guī)劃?
霍博士:作為一個(gè)平臺(tái)型的開(kāi)源軟件,CubeAI 要真正發(fā)揮作用主要還是在于運(yùn)營(yíng),特別是面向公眾互聯(lián)網(wǎng)的運(yùn)營(yíng),潛在用戶目前來(lái)看主要應(yīng)該是廣大的 AI 個(gè)體開(kāi)發(fā)者或中小型開(kāi)發(fā)團(tuán)隊(duì)。目前互聯(lián)網(wǎng)上應(yīng)該還沒(méi)有類(lèi)似的平臺(tái)。但是很遺憾 CubeAI 項(xiàng)目現(xiàn)在還只是處于開(kāi)源孵化階段,還沒(méi)有得到實(shí)際的應(yīng)用。所以對(duì)于它的發(fā)展規(guī)劃,我們最希望的就是有人能夠把它真正投入運(yùn)營(yíng),真正的應(yīng)用起來(lái)。大家都知道開(kāi)源的東西跟實(shí)際真正運(yùn)營(yíng)的產(chǎn)品之間還是有一定差距的,目前的開(kāi)源系統(tǒng)最多可以看做是一個(gè)原型產(chǎn)品。如果要實(shí)際投入運(yùn)營(yíng)的話,還是需要根據(jù)真實(shí)的運(yùn)營(yíng)需求對(duì)這個(gè)開(kāi)源平臺(tái)進(jìn)行適當(dāng)?shù)墓δ軘U(kuò)展和優(yōu)化開(kāi)發(fā)的。
InfoQ:如今開(kāi)源 AI 平臺(tái)越來(lái)越多,AI 技術(shù)應(yīng)用門(mén)檻不斷降低,“人人都可以做 AI 開(kāi)發(fā)”,您怎么看待這個(gè)技術(shù)應(yīng)用趨勢(shì)?
霍博士:從某種意義上來(lái)講,我是同意這種說(shuō)法的。之所以出現(xiàn)這種趨勢(shì),我覺(jué)得大致主要得益于以下幾方面的因素。
第一,人工智能技術(shù)的發(fā)展,特別是這些年來(lái)基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)技術(shù)的突破和流行。與傳統(tǒng)機(jī)器學(xué)習(xí)相比,深度學(xué)習(xí)的最大優(yōu)勢(shì)之一就是可以進(jìn)行端到端的學(xué)習(xí),而不需要人工進(jìn)行特征提取,這就在模型算法研究和設(shè)計(jì)的層面降低了技術(shù)門(mén)檻。
第二,各類(lèi)開(kāi)源 AI 框架的出現(xiàn)和普及。深度學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)層次多、網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜、參數(shù)數(shù)量龐大,這樣就會(huì)導(dǎo)致模型訓(xùn)練和推理的程序代碼結(jié)構(gòu)復(fù)雜,普通開(kāi)發(fā)者很難搞定。特別是神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練中的反向傳播算法,需要一層層的計(jì)算梯度,也就是針對(duì)各類(lèi)函數(shù)求偏導(dǎo)數(shù),不僅公式復(fù)雜,而且數(shù)量龐大,這就更不是一般人能夠搞得明白的了,更不用說(shuō)編程實(shí)現(xiàn)了。而 AI 框架的出現(xiàn)就解決了這個(gè)問(wèn)題,它把各類(lèi)雖然復(fù)雜但是可規(guī)律性重復(fù)使用的代碼封裝起來(lái),并且自動(dòng)實(shí)現(xiàn)了計(jì)算圖構(gòu)建、偏導(dǎo)計(jì)算等復(fù)雜操作,這樣就使得模型開(kāi)發(fā)者只需要使用若干比較有限的通用 API 接口就能夠構(gòu)建神經(jīng)網(wǎng)絡(luò),執(zhí)行模型訓(xùn)練和模型推理等操作,從而大大降低模型開(kāi)發(fā)的難度和復(fù)雜度,在 AI 模型開(kāi)發(fā)這個(gè)層面降低了技術(shù)門(mén)檻。
第三,各類(lèi)增強(qiáng)型開(kāi)源框架或平臺(tái)的出現(xiàn)。它們首先開(kāi)發(fā)一些通用模型,利用大量通用數(shù)據(jù)集訓(xùn)練出一些預(yù)訓(xùn)練模型出來(lái),把它發(fā)布到網(wǎng)上。然后不同應(yīng)用領(lǐng)域的模型開(kāi)發(fā)者可以在這些預(yù)訓(xùn)練模型參數(shù)的基礎(chǔ)上,使用自己擁有的部分領(lǐng)域數(shù)據(jù)集來(lái)進(jìn)行增強(qiáng)和優(yōu)化訓(xùn)練,得到更加適合于自己領(lǐng)域的模型參數(shù)。這樣就進(jìn)一步降低了應(yīng)用型 AI 模型開(kāi)發(fā)的技術(shù)門(mén)檻。
第四,各類(lèi)開(kāi)源 AI 集成或應(yīng)用服務(wù)平臺(tái)的出現(xiàn)。這些平臺(tái)直接提供面向各類(lèi)應(yīng)用的訓(xùn)練好的模型,應(yīng)用開(kāi)發(fā)者只需要從中選擇合適的模型,進(jìn)行簡(jiǎn)單的參數(shù)配置或者編排組裝之后就可以直接調(diào)用。這樣就大大降低了各類(lèi)需要用到 AI 技術(shù)的應(yīng)用開(kāi)發(fā)者的技術(shù)門(mén)檻,他們可以基本上不用學(xué)習(xí)和掌握 AI 的理論和編程知識(shí),就可以進(jìn)行應(yīng)用開(kāi)發(fā)了,從而真正實(shí)現(xiàn)“人人都可以做 AI 開(kāi)發(fā)”。
總之,一個(gè)技術(shù)要想營(yíng)造良好的應(yīng)用生態(tài)環(huán)境就必須吸引更多的人來(lái)參與,要想吸引更多的人就必須降低技術(shù)門(mén)檻,而開(kāi)源正是降低技術(shù)門(mén)檻的最有效的手段之一。
InfoQ:國(guó)內(nèi)的公司關(guān)于 AI 的開(kāi)源項(xiàng)目并不少,基本上大廠都開(kāi)源了自己的 AI 框架,有的還不止一個(gè),但是后續(xù)維護(hù)和推廣做得好的并不多,產(chǎn)生這種現(xiàn)象的原因是什么?您又是如何看待國(guó)內(nèi)廠商爭(zhēng)相構(gòu)建 AI 開(kāi)源框架這件事的?
霍博士:確實(shí),國(guó)內(nèi)目前做 AI 開(kāi)源項(xiàng)目的很多,特別是開(kāi)源 AI 框架,好多公司還有一些大學(xué)等研究機(jī)構(gòu)也都在做,但是在業(yè)界有比較大名氣和影響力的,目前似乎只有 PaddlePaddle 和 MindSpore。出現(xiàn)這種情況的原因主要有以下幾個(gè):
首先,用戶的使用習(xí)慣、學(xué)術(shù)生態(tài)和對(duì)國(guó)外主流的依賴(lài)心理的因素。普通的 AI 研究和開(kāi)發(fā)者,最早接觸和使用的是國(guó)外的 TensorFlow 和 PyTorch 等知名的主流框架,在國(guó)際上發(fā)論文、學(xué)術(shù)交流等也都普遍采用這些主流框架,這就使得一方面使用習(xí)慣了不太愿意去換新的工具,畢竟任何新的東西也都還是有一定的學(xué)習(xí)成本的;另一方面使用新的東西可能會(huì)失去與他人特別是國(guó)際上一些學(xué)術(shù)圈子交流的機(jī)會(huì),因?yàn)橐粋€(gè)新的東西要想混入圈子是會(huì)遭到當(dāng)前圈子里主流的排斥的。至于像 PaddlePaddle 和 MindSpore 這兩個(gè)現(xiàn)在之所以能夠搞出點(diǎn)名氣來(lái),本身產(chǎn)品過(guò)硬是一方面,我覺(jué)得最主要的還是靠著公司的財(cái)大氣粗硬挺出來(lái)的,而且主要還是在面向產(chǎn)業(yè)應(yīng)用的領(lǐng)域,在學(xué)術(shù)界還是不太流行。
第二,做開(kāi)源并不是一件輕松的事情,還是需要有相當(dāng)大的人力物力財(cái)力來(lái)支持的。比如說(shuō)要有雄厚的技術(shù)儲(chǔ)備,要有強(qiáng)大、持續(xù)的創(chuàng)新開(kāi)發(fā)人才隊(duì)伍,要建設(shè)和運(yùn)營(yíng)社區(qū),要有強(qiáng)大的算力和網(wǎng)絡(luò)資源,要持續(xù)進(jìn)行大規(guī)模布道、宣傳、推廣等等,所有這些都不是一般的財(cái)力不足的小公司能夠長(zhǎng)久持續(xù)應(yīng)付得了的。這可能也是一些開(kāi)源項(xiàng)目后續(xù)維護(hù)和推廣做得不太好的一個(gè)原因吧。
第三,持續(xù)的創(chuàng)新能力。有些開(kāi)源項(xiàng)目可能剛開(kāi)始做得很好,但是后續(xù)時(shí)間長(zhǎng)了如果不能持續(xù)推出新的東西,自然也就會(huì)逐漸失去人們的關(guān)注,自己也失去信心,無(wú)法再堅(jiān)持做下去了。
當(dāng)然,這里說(shuō)的只是開(kāi)源項(xiàng)目可能做不好的部分原因,并不表示我國(guó)的大多數(shù) AI 開(kāi)源項(xiàng)目就都做得不好。事實(shí)上我覺(jué)得我們國(guó)內(nèi)有些名氣不是太大的開(kāi)源項(xiàng)目做的可能還是非常好的。所謂的專(zhuān)尖特精,有些公司或團(tuán)隊(duì)只是在 AI 相關(guān)的部分領(lǐng)域有自己獨(dú)到的創(chuàng)新之處,由于方向相對(duì)比較窄,受眾范圍比較小,再加上宣傳力度跟不上,所以開(kāi)源之后就只能在自己特定專(zhuān)業(yè)領(lǐng)域的部分小圈子內(nèi)進(jìn)行傳播,而無(wú)法在更大的范圍內(nèi)引起轟動(dòng)。
所以說(shuō)對(duì)于目前國(guó)內(nèi)廠商都在爭(zhēng)相構(gòu)建 AI 開(kāi)源框架這件事,我認(rèn)為這其實(shí)是件好事。因?yàn)椴煌膹S商必定都有各自獨(dú)到的創(chuàng)新之處,爭(zhēng)相開(kāi)源的話就會(huì)形成一種百花齊放的局面,在這個(gè)基礎(chǔ)上大家通過(guò)相互學(xué)習(xí)借鑒、取長(zhǎng)補(bǔ)短、競(jìng)爭(zhēng)融合,最后可能就會(huì)打造出幾個(gè)集大成者的優(yōu)秀項(xiàng)目出來(lái),成為帶動(dòng)我國(guó) AI 開(kāi)源蓬勃發(fā)展領(lǐng)頭雁。當(dāng)然要造就這種局面,是需要一定的政策和市場(chǎng)融合競(jìng)爭(zhēng)機(jī)制的,使得參與開(kāi)源的不同的企業(yè)和團(tuán)隊(duì)之間能夠友好合作、互相促進(jìn),而不是勾心斗角、惡性競(jìng)爭(zhēng)。我相信這種局面是會(huì)出現(xiàn)的。
InfoQ:目前行業(yè)里存在哪些技術(shù)挑戰(zhàn)?在未來(lái),是否可以通過(guò)“開(kāi)源”得到解決?為什么?
霍博士:從 AI 技術(shù)的應(yīng)用這方面來(lái)說(shuō),將來(lái) AI 模型部署和運(yùn)行的形態(tài)到底應(yīng)該呈現(xiàn)個(gè)什么樣子,我不是太有把握?,F(xiàn)在大家談起來(lái),一般都有云邊端這樣的說(shuō)法,但是到底什么情況下應(yīng)該布到云、什么情況下應(yīng)該布到邊、什么情況下應(yīng)該布到端,這里邊都還是有一個(gè)技術(shù)、人力、財(cái)力等方面的成本和收益的考慮和權(quán)衡的?,F(xiàn)在算力網(wǎng)絡(luò)這個(gè)概念比較火,利用算力網(wǎng)絡(luò)是否能解決這個(gè)問(wèn)題?在算力網(wǎng)絡(luò)中又如何去實(shí)現(xiàn) AI 模型的最優(yōu)化部署和算力調(diào)度以使得模型的開(kāi)發(fā)者、運(yùn)營(yíng)者和使用者都能夠得到最大的實(shí)惠和便利呢?我想這些問(wèn)題可能現(xiàn)在都還沒(méi)有一個(gè)比較好的現(xiàn)成的答案,是值得去挑戰(zhàn)挑戰(zhàn)的。
舉個(gè)例子,就像 GPU 算力設(shè)備的使用和調(diào)度,目前做得好像都還不是太理想,還不能像使用 CPU 那樣隨心所欲。一方面,對(duì)于開(kāi)發(fā)者來(lái)說(shuō),編程時(shí)還需要考慮不同的驅(qū)動(dòng)版本、需要指定將數(shù)據(jù)復(fù)制到哪一個(gè) GPU 板卡上去,簡(jiǎn)直是太不友好了。另一方面,GPU 等 AI 計(jì)算設(shè)備在各類(lèi)云環(huán)境中的虛擬化和共享技術(shù)目前也還不成熟,無(wú)法做到真正的按需調(diào)度和使用。我覺(jué)得在理想的算力網(wǎng)絡(luò)中,模型開(kāi)發(fā)者應(yīng)該對(duì)算力設(shè)備不感知才對(duì),不管你有沒(méi)有 CPU、GPU 或者其他什么 PU,更不管你這些有多少或者放在什么地方,開(kāi)發(fā)者只關(guān)注于寫(xiě)算法就行了,至于在哪個(gè) PU 上計(jì)算,那應(yīng)該是算力網(wǎng)絡(luò)來(lái)完成的事情。但現(xiàn)在不論哪個(gè) AI 框架,編程和計(jì)算設(shè)備都還沒(méi)有解耦,這似乎在目前還不太好解決。
另外,開(kāi)源是解決這些問(wèn)題所需要借助和依賴(lài)的一個(gè)非常必要的機(jī)制和手段,但是光靠開(kāi)源可能也是不行的,還是得多措并舉。?
編輯:黃飛
電子發(fā)燒友App












評(píng)論