作為人工智能的核心基礎技術,深度學習具有很強的通用性,推動人工智能進入工業(yè)大生產階段。作為中國首個自主研發(fā)、開源開放的產業(yè)級深度學習框架和平臺,截至2023年8月,飛槳匯聚了800萬開發(fā)者,服務22萬家企事業(yè)單位。產業(yè)級深度學習框架和平臺該如何建設?百度飛槳團隊帶來了他們的實踐和思考。
作者 | 胡曉光,于佃海,馬艷軍
出品 | 《新程序員》編輯部
以深度學習框架為核心的深度學習平臺是人工智能時代技術研發(fā)必不可少的基礎軟件,可類比智能時代的操作系統(tǒng)。深度學習框架向下通過基礎操作的抽象以隔離不同芯片的差異,向上通過提供簡單易用的接口以支持深度學習模型的開發(fā)、訓練和部署,可極大地加速深度學習技術的創(chuàng)新與應用。
作為人工智能重大共性關鍵技術,國家“十四五”規(guī)劃綱要將深度學習框架列入前沿領域“新一代人工智能”的重點科技攻關任務。放眼全球,人工智能領域知名研究機構和相關高科技公司也都對深度學習框架給予了極大關注。谷歌公司推出的 TensorFlow 和 Meta 公司(原 Facebook)推出了 PyTorch (現已轉入 Linux 基金會)是其中代表性產品。
2016 年,百度開源了深度學習框架 PaddlePaddle,并于 2019 年發(fā)布中文名“飛槳”。時間回到 2012 年,深度學習技術潛力初露端倪,百度就開始在語音識別、語義表示和 OCR 文字識別等領域切入展開深度學習技術研發(fā)和應用,其深度學習框架研發(fā)始于 2013 年。百度在深度學習領域領先布局,驅動力在于它看到了共性技術需求 以深層神經網絡為主體的深度學習技術,在編程和計算上可以很好地進行通用技術抽象,使建設一個通用開發(fā)框架具備可行性。
接下來將從深度學習框架和平臺核心的技術、生態(tài)建設、平臺建設的三個關鍵點,以及趨勢和展望四個部分,詳盡介紹百度是如何進行深度學習底層框架架構和建設的。
深度學習框架和平臺核心技術
深度學習平臺適配對接底層硬件,為各類深度學習模型的開發(fā)、訓練和推理部署提供全流程支撐,通用性是深度學習平臺的基礎要求。從面向算法研究和一般開發(fā)來講,需要有很好的靈活性。從面向產業(yè)應用來講, 高性能非常關鍵, 同時需要考慮實際應用的各種復雜環(huán)境、嚴苛要求,并進一步降低門檻。以下重點介紹產業(yè)級深度學習平臺所需的四個方面的核心技術,并結合國內外主流平臺剖析其中的挑戰(zhàn)和業(yè)界實踐。
動靜統(tǒng)一的開發(fā)范式
如何對深度學習計算進行抽象表達,并提供對應的編程開發(fā)模式和運行機制,是深度學習框架的關鍵且基礎的功能。這也被表述為深度學習框架的開發(fā)范式,會同時影響開發(fā)體驗和執(zhí)行效率。
根據神經網絡計算圖創(chuàng)建方式和執(zhí)行機制的不同,深度學習框架開發(fā)范式有兩大類。一類是以 TensorFlow 1.0 版本為代表的靜態(tài)圖開發(fā)范式,需要把神經網絡模型提前定義為完整的計算圖,用不同批次的數據進行訓練時,計算圖會被反復執(zhí)行,但不再發(fā)生變化。另一類是以 PyTorch 為代表的動態(tài)圖開發(fā)范式,用不同批次的數據進行訓練時,計算圖被即時創(chuàng)建和執(zhí)行,每個批次數據所使用的計算圖可以動態(tài)變化。
動態(tài)圖模式具有更友好的開發(fā)調試的編程體驗,已經成為業(yè)內默認的主流開發(fā)范式。但也存在一些局限性,如由于缺乏靜態(tài)全圖表示導致難以序列化保存模型,從而難以脫離訓練環(huán)境部署,并且難以進行全局性能優(yōu)化等,而這些在靜態(tài)圖模式下是非常容易實現的。因此,理想的方式是兼顧動態(tài)圖和靜態(tài)圖的優(yōu)勢。
百度團隊于 2019 年提出了“動靜統(tǒng)一”的方案并沿著這一技術路線進行研發(fā)。“動靜統(tǒng)一”體現為以下幾方面:動態(tài)圖和靜態(tài)圖統(tǒng)一的開發(fā)接口設計、底層算子實現和高階自動微分能力、動態(tài)圖到靜態(tài)圖執(zhí)行模式的低成本轉換、動轉靜訓練加速,以及靜態(tài)圖模式的靈活部署。這一方案兼顧了動態(tài)圖的靈活性和靜態(tài)圖的高效性。
然而,如何支持靈活的 Python 語法是動轉靜的一大挑戰(zhàn)。由于缺少靜態(tài)圖的執(zhí)行模式,PyTorch 的 TorchScript 的轉換技術,需要將 Python 代碼轉換為自定義的 IR 表 示,由于它所支持的 Python 語法低于 40%,許多模型無法轉換部署。而得益于完整的動態(tài)圖和靜態(tài)圖實現,飛槳的動轉靜技術自動將動態(tài)圖的 Python 代碼轉換為靜態(tài)圖的 Python 代碼,然后由 Python 解釋器執(zhí)行并生成靜態(tài)圖,可支持 90% 以上的 Python 語法,新模型的動轉靜直接成功率達 92%。
AI for Science 場景的高階微分方程求解需求,對應著框架的高階微分能力,對動靜統(tǒng)一提出了進一步的挑戰(zhàn)。國內外主流框架均在這一能力上進行了布局和探索。以飛槳為例,通過基礎算子體系定義的算子拆分規(guī)則將復雜算子拆分成基礎算子,通過基礎算子的變換規(guī)則,進行前向自動微分和反向自動微分兩種程序變換,實現高效計算高階導數,具備通用性和可擴展性。拆分后的基礎算子組成的靜態(tài)計算圖,通過神經網絡編譯器技術,實現 Pass 優(yōu)化、算子融合和自動代碼生成。以流體力學領域常用的 Laplace 方程求解任務為例,基于神經網絡編譯器優(yōu)化技術性能可提升 3 倍。
超大規(guī)模訓練技術
深度學習的效果通常隨著訓練數據規(guī)模和模型參數規(guī)模的增加而提升。在實際產業(yè)應用中,大數據+大模型如何高效訓練,是深度學習框架需要考量的重要問題。而預訓練大模型的興起,使得訓練的挑戰(zhàn)進一步加大。比如 2020 年發(fā)布的 GPT-3 模型參數量就已高達 1,750 億,單機已經無法訓練。
大規(guī)模訓練能力已經成為產業(yè)級深度學習平臺競相發(fā)力的關鍵方向,而這一能力的建設和成熟非常依賴真實的產業(yè)環(huán)境應用打磨。以飛槳為例,已具備完備可靠的分布式訓練能力,建設了端到端自適應分布式訓練架構,以及通用異構參數服務器和超大規(guī)模圖學習訓練等特色技術。
端到端自適應分布式訓練架構
在深度學習模型參數規(guī)模日益增大的同時,模型特性和硬件環(huán)境也復雜多樣,這使得大規(guī)模訓練的技術實現和性能效果的遷移成本很高。飛槳統(tǒng)籌考慮硬件和算法,提出了端到端自適應分布式訓練架構(見圖1)。該架構可以針對不同的深度學習算法抽象成統(tǒng)一的計算視圖,自動感知硬件環(huán)境并抽象成統(tǒng)一的異構資源視圖。采用代價模型對兩者進行聯合建模, 自動選擇最優(yōu)的模型切分和硬件組合方案,構建流水線進行異步高效執(zhí)行。
圖1端到端自適應分布式訓練架構
通用異構參數服務器技術
有一類特殊的深度學習大規(guī)模訓練任務,廣泛應用于互聯網領域的搜索、推薦等場景,不但數據量大,特征維度極高且稀疏。這類任務的分布式訓練一般采用參數服務器技術來解決超大規(guī)模稀疏參數的分布式存儲和更新問題。但如果想對千億、萬億規(guī)模參數的模型實現高效支持,需要在參數服務器架構設計和計算通信策略上全面創(chuàng)新突破。
為此,飛槳在支持萬億規(guī)模的 CPU 參數服務器和 GPU 參數服務器的基礎上,于 2020 年推出支持 AI 硬件混布調度的異構參數服務。由不同類型的計算單元負責不同性質的任務單元,可以綜合利用不用硬件的優(yōu)勢,使整體計算成本降至最低?紤]到擴展性問題,進一步將其中的基礎模塊通用化,提升二次開發(fā)體驗,便于產業(yè)應用中廣泛定制開發(fā)。以新增支持昆侖芯 XPU 的參數服務器為例,在復用通用模塊的基礎上,只需增加三個硬件相關的定制模塊,就能使開發(fā)量從原來的萬行減少至千行。
超大規(guī)模圖學習訓練技術
除傳統(tǒng)深度學習任務之外,大規(guī)模圖學習正日益受到更多關注,F實世界中很多實體及關系可以通過節(jié)點和邊構成的圖來描述,如網頁和網頁鏈接組成的網絡、路口和道路組成的交通路網等。由數百億節(jié)點和數百億邊構成的龐大圖,對算法和算力都提出了巨大挑戰(zhàn)。結合圖學習特性和計算硬件特點而推出的基于 GPU 的超大規(guī)模圖學習訓練技術 PGLBox,通過顯存、內存、 SSD 三級存儲技術和訓練框架的性能優(yōu)化技術,單機可支持百億節(jié)點、數百億邊的圖采樣和訓練,并可通過多機擴展支持更大規(guī)模。
多端多平臺高性能推理引擎
推理部署是 AI 模型產業(yè)應用的關鍵環(huán)節(jié),被視為 AI 落地的最后一公里,面臨“部署場景多、芯片種類多、性能要求高”三方面的挑戰(zhàn)。部署場景涉及服務器端、邊緣端、移動端和網頁前端,部署環(huán)境和性能要求差異巨大。芯片種類方面,既有X86/ARM不同架構的CPU芯片和通用的GPU芯片,也包括大量的AI專用XPU芯片和 FPGA芯片。性能方面,因為推理直接面向應用,對服務響應時間、吞吐、功耗等都有很高的要求, 因此建設一整套完整的推理部署工具鏈至關重要。以下以飛槳的訓推一體化工具鏈為例(見圖2) ,分析如何解決推理部署的系列難題。
圖2 飛槳訓推一體化工具鏈
針對部署場景多的問題,我們提供原生推理庫及服務化部署框架、輕量化推理引擎、前端推理引擎, 旨在全面解決云、邊、端不同場景的部署問題。為了進一步提升推理速度,我們通過模型壓縮工具PaddleSlim支持量化、稀疏化、知識蒸餾和結構搜索等模型壓縮策略,并提供自動化壓縮功能。通過解耦訓練代碼、離線量化超參搜索、算法自動組合和硬件感知,實現一鍵模型自動壓縮,大大降低了模型壓縮的使用門檻。
針對芯片種類多的問題,我們設計了統(tǒng)一硬件接入方案 NNAdapter 和訓推一體基礎架構,可支持一次訓練、隨處部署,滿足基于廣泛推理硬件的部署需求。NNAdapter 支持將不同硬件的特性差異統(tǒng)一到一套標準化開發(fā) API 上, 可以實現將模型部署到已適配飛槳的所有推理硬件上。此外, 支持完善的模型轉換工具X2Paddle 和 Paddle2ONNX,以兼容生態(tài)中不同后端和不同平臺的模型表示。
針對性能要求高的問題,分別從硬件特性、算子融合、圖優(yōu)化、低精度和執(zhí)行調度等五個角度對不同場景進行全面優(yōu)化。對于文心千億大模型服務器端推理,得益于算子多層融合、模型并行、流水線并行、大模型量化和稀疏化壓縮等多種策略。在智能手機移動端 ARM CPU 推理場景上,通過 Cortex-A 系列處理器的硬件特性優(yōu)化、計算圖優(yōu)化和模型全量化等多種技術,滿足多樣化的應用場景對性能的苛刻要求。
由于推理部署所涉及的工具較多,用一個統(tǒng)一工具解決以上問題可進一步提升開發(fā)效率。FastDeploy AI 部署工具,通過一站式工具可進一步簡化整個推理部署過程,加速 AI 應用落地。
產業(yè)級模型庫
雖然產業(yè)級深度學習平臺提供了從開發(fā)訓練到推理部 署全流程的能力支持,但我們同時注意到,在實際的 AI 產業(yè)應用中,很多用戶往往基于已有模型復用或二次開發(fā)。伴隨技術的快速發(fā)展,學術界涌現了大量的算法,但開發(fā)者依然面臨匹配場景需求的模型難找、模型精度和速度難平衡、推理部署應用難等共性挑戰(zhàn);诖,飛槳研制了產業(yè)級模型庫。
目前,模型庫支持算法總數超過 600 個。包含覆蓋自然語言處理、計算機視覺、語音、推薦、時序建模、科學計算、生物計算、量子計算等領域。以計算機視覺為例,針對圖像分類、檢測、分割、字符識別等不同任務,發(fā)布PaddleClas、PaddleDetection、PaddleSeg、PaddleOCR 等端到端開發(fā)套件。其中,特別包含 42 個深度優(yōu)化、精度與性能平衡的 PP 系列模型,以及文心系列大模型。
深度學習框架和平臺生態(tài)的建設
深度學習平臺下接芯片,上承應用,在人工智能技術體系中處于貫通上下的腰部核心位置。也正因如此,深度學習平臺必須在生態(tài)建設過程中持續(xù)迭代演進,與上下游協同構建完整的人工智能生態(tài)體系。生態(tài)建設的成效很大程度上依賴深度學習框架和平臺的核心技術和功能體驗。同時,生態(tài)建設本身也能加速框架和平臺功能體驗的優(yōu)化和核心技術的創(chuàng)新。因此,準確把握二者關系,選擇合適的時機和運營方式來建設生態(tài)至關重要。
首先,深度學習平臺需要廣泛地跟硬件芯片適配和融合優(yōu)化,作為基礎設施共同支撐廣泛的AI應用,因此構建基礎軟硬件生態(tài)是首要。企業(yè)作為人工智能應用的主體,在整個生態(tài)體系中發(fā)揮著重要作用。深度學習平臺要成為企業(yè)智能化升級中的共享底座,才能更高效推動人工智能更廣泛的應用落地。產業(yè)智能化升級需要大量新技術的AI人才,亟須企業(yè)與高校合作開展產教融合的人才 培養(yǎng)。因此, 圍繞高校等建設的教育生態(tài)也至關重要。同時,深度學習平臺的發(fā)展離不開開源社區(qū)所搭建的環(huán)境,在與社區(qū)共創(chuàng)、共享中才能加速發(fā)展。
結語:趨勢和展望
當下,人工智能呈現出顯著的融合創(chuàng)新和降低門檻的特點。知識與深度學習的融合、跨模態(tài)融合、軟硬一體融合、 AI+X 融合將會更加深入,深度學習平臺將為人工智能的融合創(chuàng)新提供基礎支撐。同時,生成式AI和大語言模型技術的快速發(fā)展,人工智能的應用門檻再度降低,將極大加速人工智能的產業(yè)落地,助力實體經濟的發(fā)展,深度學習平臺+大模型將在其中發(fā)揮關鍵作用。
隨著大模型和 AI for Science 等技術的發(fā)展,人工智能的潛力會更大釋放。通過持續(xù)技術創(chuàng)新突破和產品能力提升,建設更加繁榮的 AI 生態(tài),產業(yè)級深度學習平臺和大模型協同優(yōu)化,將更好地支撐人工智能技術創(chuàng)新與應用,推動產業(yè)加速實現智能化升級,讓 AI 惠及千行百業(yè)。
作者簡介
馬艷軍,百度AI技術生態(tài)總經理,總體負責深度學習平臺飛槳(PaddlePaddle)的產品和技術研發(fā)及生態(tài)建設,主要研究方向包括自然語言處理、深度學習等,相關成果在百度產品中廣泛應用。在ACL等權威會議、期刊發(fā)表論文 20余篇 , 多次擔任頂級國際會議的Area Chair等 ,并曾獲 2015年度國家科技進步二等獎。2018年被評為“北京青年榜樣 時代楷模”。
胡曉光,百度深度學習技術平臺部杰出研發(fā)架構師, 有10多年 的深度學習算法和框架工程研發(fā)實踐經驗,F負責飛槳核心框架的技術研發(fā),設計了飛槳框架2.0全新的API 體系,形成了飛槳API動靜統(tǒng)一、高低融合的特色;牽頭研制飛槳產業(yè)級開源模型庫,并實現大規(guī)模產業(yè)應用;研發(fā)飛槳高階自動微分機制,并結合編譯器和分布式訓練技術更高效地支持科學研究和產業(yè)應用。
于佃海,百度飛槳深度學習平臺總架構師, 百度集團機器學習平臺TOC主席,中國計算機學會 (CCF)高級會員。構建了百度首個大規(guī)模分布式機器學習訓練系統(tǒng) ,最早將機器學習技術引入百度搜索排序,建設了百度最早的機器學習基礎算法庫和實驗平臺。曾獲中國電子學會科技進步一等獎、北京市科學技術進步獎一等獎、 CCF杰出工程師獎。
本文節(jié)選自《新程序員006:人工智能新十年》,特邀數十位 AI 產業(yè)界資深技術專家,梳理 AI 技術領域的前沿觀點、理論研究、實踐案例,以及技術選型等內容,通過人物訪談、理論思考以及案例解讀等多媒體內容形式呈現,讓你快人一步擁抱智能新紀元。