樂觀的人會想,未來機(jī)器學(xué)習(xí)能夠完成駕駛汽車、接聽電話、預(yù)約、回復(fù)電子郵件這些人類才能完成的任務(wù)。但現(xiàn)實往往很骨感。現(xiàn)代機(jī)器學(xué)習(xí)能有效解決的問題范圍仍然非常狹窄,比如在 Netflix 上推薦下一個節(jié)目或計算 ETA。
然而,當(dāng) OpenAI 發(fā)布 GPT-2 后,機(jī)器和人類之間的差距就開始縮小了。
通過簡單地指示模型的大小,OpenAI 建立了一個通用語言模型,通過后者可以更流暢地處理人類的任務(wù)(雖然有時不完美):
GPT-2 的出現(xiàn)并非偶然,它發(fā)布不久,Salesforce 就發(fā)布了 16 億參數(shù)語言模型 CTRL。NVIDIA 構(gòu)建了 Megatron,一個 80 億參數(shù)的 transformer 模型。最近,Google 又發(fā)布了擁有 26 億參數(shù)的最先進(jìn)的會話模型 Meena。
即使在計算機(jī)視覺領(lǐng)域,要實現(xiàn)更好的性能往往也需要更大的模型。2018 年夏天,就在 GPT-2 首次發(fā)布的前幾個月,Google 發(fā)布了 NASNet,這是一個創(chuàng)紀(jì)錄的圖像分類模型,它擁有 8890 萬個參數(shù),比其他任何能夠識別圖像中物體的主流圖像分類模型都要大:
資料來源:Sik-Ho Tsang
趨勢很明顯。為了實現(xiàn)機(jī)器學(xué)習(xí)驅(qū)動未來的美好愿景,這些「超級模型」將越來越大。但現(xiàn)在的問題是:
它們太大了,沒有辦法在生產(chǎn)中使用。
超級模型面臨哪些挑戰(zhàn)?
模型不斷膨脹,將它們部署到生產(chǎn)中變得越來越棘手。以 GPT-2 為例:
GPT-2 大于 5 GB。在本地將模型嵌入到應(yīng)用程序中不是移動設(shè)備中軟件的選擇。GPT-2 需要計算。為了服務(wù)于單個預(yù)測,GPT-2 可以以 100% 的利用率占用 CPU 幾分鐘。即使使用 GPU,一個預(yù)測仍然需要幾秒鐘。而與之相比,一個 web 應(yīng)用程序可以用一個 CPU 服務(wù)數(shù)百個并發(fā)用戶。GPT-2 對內(nèi)存需求很大。除了相當(dāng)大的磁盤空間和計算需求之外,GPT-2 還需要大量內(nèi)存才能保證順利運行。換句話說,GPT-2 規(guī)模大、資源密集、速度慢。將其投入生產(chǎn)是一個挑戰(zhàn),而擴(kuò)大規(guī)模則更加困難。
這些問題并非 GPT-2 獨有,它們對所有超級模型來說都是通用的,而且只會隨著模型變大而變得更糟。幸運的是,機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)中的一些項目正在消除這一障礙。
我們?nèi)绾谓鉀Q超級模型問題
雖然完全解決問題還為時過早,但解決超級模型問題的總體方向有三點:
1.把模型變小
如果模型變得太大,最直接的方法就是壓縮它們。
一種方法是通過知識蒸餾。在一個很高的層次上,這可以說是一個小模型(學(xué)生)可以通過學(xué)習(xí)來模仿大模型(家長)的表現(xiàn)。
換言之,訓(xùn)練 GPT-2 需要輸入 40 GB 的文本,這相當(dāng)于一個大約 27118520 頁的文本文件。然而,訓(xùn)練一個精簡的 GPT-2 模型,只需要你給它輸入 GPT-2 的輸出。
著名的 Transformers NLP 庫幕后的公司 HuggingFace 就是這樣創(chuàng)建了 DistilGPT2。雖然 DistilGPT2 在某些質(zhì)量基準(zhǔn)上的得分比完整的 GPT-2 模型低一些,但它比完整的 GPT-2 模型小 33%,速度快兩倍。
速度提高兩倍是了不起的大事。對于自動駕駛汽車來說,安全停車和撞車是兩碼事。對于一個會話代理來說,這是自然對話和與惱人的機(jī)器人通話之間的區(qū)別。
2.將模型部署到云端
然而,即使經(jīng)過蒸餾,模型仍然相當(dāng)大。對超過 25 GB(NVIDIA 的 Megatron是 GPT-2 的 5.6倍)的模型來說,減小 33% 仍然很龐大。
在這樣的規(guī)模下,我們用來消費 ML 生成內(nèi)容的設(shè)備——我們的手機(jī)、電視,甚至我們的電腦——都不能托管這些模型,它們根本不適合。
一種解決方案是將模型作為微服務(wù)部署到云中,我們的設(shè)備可以根據(jù)需要進(jìn)行查詢。這被稱為實時推理,是在生產(chǎn)中部署大型模型的標(biāo)準(zhǔn)方法。
然而,在云中部署有自己的問題,特別是規(guī)模問題。
舉個例子,讓我們看看 AI Dungeon,這是一個流行的文本冒險游戲,建立在 GPT-2 上:
由于 GPT-2 的規(guī)模和計算要求,AI Dungeon 只能為來自單一部署模型的兩個用戶提供服務(wù)。隨著流量的增加,AI Dungeon 需要自動升級。
擴(kuò)展 GPT-2 部署是很棘手的。它要求你:
確保每個部署都是相同的。例如,使用 Docker 對模型進(jìn)行容器化,使用 Kubernetes 對容器進(jìn)行編排。自動擴(kuò)展部署。例如,通過配置云供應(yīng)商的自動縮放器,根據(jù)流量自動上下旋轉(zhuǎn)實例。優(yōu)化資源。這意味著在不犧牲性能的情況下找到成本最低的實例類型和資源分配方式。如果做得不對,你就會收到一筆巨大的云賬單——部署 200 個 g4dn.2xlarge 實例每小時花費 150.40 美元,或者你會發(fā)現(xiàn)自己的預(yù)測服務(wù) API 經(jīng)常崩潰。
換句話說,要為你的大型模型服務(wù),你目前需要對 devops 有相當(dāng)多的了解,而且大多數(shù)數(shù)據(jù)科學(xué)家并不能完成基礎(chǔ)設(shè)施工程師的工作。
幸運的是,有些項目正在努力消除這個瓶頸。
像 Cortex 這樣的開源項目——AI Dungeon 基礎(chǔ)設(shè)施背后的項目,作為自動化部署大型模型所需的 devops 工作工具
3.加速模型服務(wù)硬件
最后一類讓服務(wù)大模型變得更容易的方法與模型本身沒有任何關(guān)系。相反,它與改進(jìn)硬件有關(guān)。
大模型在不同的硬件上性能更好。事實上,正如我之前所說的,為什么 GPU 對模型服務(wù)很重要?這是因為只有在 GPU 上才能以足夠低的延遲來為 GPT-2 服務(wù),比如 autocorrect:
一般人每分鐘打 40 個字,一般的英語單詞大約有 5 個字符,因此,一個普通人每分鐘輸入 200 個字符,或者每秒輸入 3.33 個字符。再往前走一步,這意味著平均每個人輸入每個字符之間時間大約有 300 毫秒。如果你在 CPU 上運行,每次請求占用 925 毫秒,那么你的 Gmail 智能合成速度就會慢下來。當(dāng)你處理一個用戶的字符時,他們大約會領(lǐng)先 3 個字符——如果輸入是快速打字機(jī),甚至領(lǐng)先更多。然而,在 GPU 的幫助下,你的處理速度遠(yuǎn)遠(yuǎn)領(lǐng)先于他們。在每個請求占用 199 毫秒時,你將能夠用大約100 毫秒的空閑時間預(yù)測其余的消息,這在他們的瀏覽器仍需要呈現(xiàn)你的預(yù)測時非常有用。
然而,隨著模型越來越大,我們需要更多的處理能力。
解決這個問題的方法包括構(gòu)建全新的硬件。例如,Google 已經(jīng)發(fā)布了 TPU,這是專門為 TensorFlow 接口而設(shè)計的 asic。Google 最新的 TPU 最近打破了模型服務(wù)基準(zhǔn)的可伸縮性和性能記錄。美國亞馬遜云(AWS)最近也發(fā)布了自己的專業(yè)推理芯片。
其他工作包括加速和優(yōu)化現(xiàn)有硬件。例如,NVIDIA 發(fā)布了 TensorRT,這是一個用于優(yōu)化推理服務(wù)中 NVIDIA GPU 利用率的 SDK。NVIDIA 已經(jīng)記錄了在 GPU 上使用 TensorRT 的性能,它比僅使用 CPU 的推理提高了 40 倍。
機(jī)器學(xué)習(xí)將變得司空見慣
在很多方面,機(jī)器學(xué)習(xí)仍然像美國西部一樣蠻荒。
像 GPT-2 這樣的超級模型剛剛開始出現(xiàn),除了大公司,機(jī)器學(xué)習(xí)正越來越廣泛地為工程師們所接受,模型架構(gòu)的新突破似乎一直就在眼前。
然而,我們已經(jīng)看到機(jī)器學(xué)習(xí)幾乎出現(xiàn)在每個垂直領(lǐng)域,從媒體到金融到零售。不出意外,在不久的將來,幾乎沒有一款產(chǎn)品會不涉及機(jī)器學(xué)習(xí)。
隨著機(jī)器學(xué)習(xí)成為軟件的標(biāo)準(zhǔn)部分,在生產(chǎn)中部署大型模型的挑戰(zhàn)也將變得司空見慣。
聯(lián)系:highspeedlogic
QQ :1224848052
微信:HuangL1121
郵箱:1224848052@qq.com
網(wǎng)站:http://www.mat7lab.com/
網(wǎng)站:http://www.hslogic.com/
微信掃一掃:

--------------------------------------------------------------------------------------
人工智能代做,深度學(xué)習(xí)代做,深度強(qiáng)化學(xué)習(xí)代做,zynq智能系統(tǒng)FPGA開發(fā),
AI代做,卷積神經(jīng)網(wǎng)絡(luò),Alexnet,GoogleNet,CNN,TensorFlow,
caffe,pointnet,PPO,Qlearning,F(xiàn)asterRCNN,MTCNN,
SPPNet,word2vec,SARASA算法,梯度策略等等