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