AI的“高度近視”有何破解之法?深度學習加速技術讓“人工智障”戴上眼鏡
有什么比禿頭更心酸的嗎?
有,比如智能機器人將禿了的后腦勺識別成未戴口罩的臉,跟隨一路提醒佩戴口罩。
如今AI應用已非常普遍,這過程中也收獲了不少“人工智障”的笑話,上述只是其中一個,除了離譜的圖像自動識別,還有答非所問的智能對話。
自迎來以深度學習為代表的第三次發展浪潮,人工智能技術已被廣泛應用在目標檢測、圖像識別、自然語言處理(NLP)等場景,從語音識別、自動送餐機器人到生產線影像監控,AI的身影無處不在。
客戶的業務需求與創新應用對AI推理和訓練的效率和質量都提出了更為嚴格的要求,推動人工智能發展從三個方面——數據、算力、算法都需要進一步調優和高效。
兩全其美之事已是世間難得,倘若想要在一件事上達到“三全”,著實有些困難且“貪心”。
但踏平“人工智障”,真的需要“貪心”一些。
數據、算力和算法之間存在一些原生矛盾。
通常來說,數據類型的寬度越大,能表達的動態范圍和精度也就越高。
更大的動態范圍和更高的精度意味著更多的存儲空間,譬如FP32就需要FP16兩倍的內存占用,并給內存帶寬帶來成倍的壓力,對算力帶來挑戰。
同時算法層面,盡管深度學習是人工智能(AI)近幾年重新走紅的功臣,也是吞噬算力的巨大 “黑洞”。
這三者平衡起來依然也會存在困難,從數據類型的層面,要節省存儲空間就需要做出一定的讓步或犧牲,例如,Google為加速AI深度學習而引入的BFloat16(BF16)數據類型,用FP16的數據寬度實現了與FP32相當的動態范圍,其代價是精度有所降低。
這只是解決了一方面,但如果實現“既準,又省,還快”三重快樂AI,三大要素必須共同發力:簡化數據,強化算力,優化算法。
算法上的革新是重中之重。
如同上述所說,大多數深度學習應用在其訓練和推理工作負載中多采用 32 位浮點精度(FP32),盡管精度高但占用更大內存,進而影響計算效率。
當數據格式由 FP32 轉為 8 位整數(INT8)或 16 位浮點數(BF16)時,內存可以移動更多的數據量,進而更大化地利用計算資源。
圖說:不同數據格式對內存利用率的影響
這種精度的降低會對數據處理的準確率造成影響嗎?
答案是:并不會,或者說影響微乎其微。
近年來已有眾多研究和實踐表明,以較低精度的數據格式進行深度學習訓練和推理,并不會對結果的準確性帶來太多影響,譬如BF16用于訓練,INT8用于推理,能夠將準確率的損失降至最低,甚至完全沒有損失。
而低精度數據格式帶來的優勢,也不僅在于提升內存利用效率,在深度學習常見的乘法運算上,它也能減少處理器資源消耗并實現更高的操作速度(OPS)。
算法的升級助力了“準”和“省”的達標,但“快”的層面還略有些差強人意。
為了保證推理過程中的精度,在CPU的向量處理單元中進行矩陣運算的時候,先將8位值相乘再累加到32位,需要3條指令來完成,代價是3倍的指令數,這也導致峰值運算性能只提高了33%。
那么“提速”任務就交給了算力單元。
英特爾® 深度學習加速(英特爾®Deep Learning Boost,簡稱DL Boost)技術的精髓,就是把對低精度數據格式的操作指令融入到了 AVX-512 指令集中,即 AVX-512_VNNI (Vector Neural Network Instruction,矢量神經網絡指令) 和 AVX-512_BF16(bfloat16),分別提供了對 INT8(主打推理)和 BF16(兼顧推理和訓練)的支持。
英特爾® 深度學習加速技術帶來訓練和推理效率提升
至此,英特爾® DL Boost技術可以讓人工智能達到三全,即:
-
省:簡化數據,提高內存容量和帶寬的利用率,緩解內存壓力;
-
準:優化算法,模型量化使用較低的數值精度也能保證結果的準確性,特別是推理應用;
-
快:強化算力,避免增加額外操作,保證性能與內存利用率同步提升。
如同一條道路上,通過車輛的體型變小(簡化后的數據),通過的車輛數量自然就上來了。
兩種新的、針對 AI 應用的 AVX-512 指令集使道路(寄存器)上通過了更多的 車輛(數據量),新的指令集無疑能使計算效率獲得大幅提升。
點擊此處回顧英特爾AVX指令集的前世今生《這項15年前的「超前」技術設計,讓CPU在AI推理時代大放光彩》
這兩種不同指令集的優勢也有所不同。
從代號Cascade Lake的英特爾第二代至強可擴展處理器開始,AVX-512指令集就增加了VNNI,用一條FMA指令就可以完成8位乘法再累加到32位的操作。
2020 年問世的第三代英特爾® 至強® 可擴展處理器已集成了英特爾® 深度學習加速技術這兩種 AI 加速指令集,并被廣泛運用于商業深度學習應用的訓練和推理過程。
在指令集的支持下,簡化數據的同時避免了額外的開銷,讓性能可以獲得與內存利用率一致的提升。AVX-512_VNNI 使用INT8做推理,對比使用FP32,理論上可以獲得4倍的性能,而將內存要求降至 ¼。
內存的減少和頻率的提高加快了低數值精度運算的速度,最終加速 AI 和深度學習推理,適合圖像分類、語音識別、語音翻譯、對象檢測等眾多方面。
而AVX-512_BF16 的優勢是既可以用于推理,也可以用于訓練,能幫助訓練性能提升達 1.93 倍。代號Cooper Lake的英特爾第三代至強可擴展處理器就集成了bfloat16加速功能,在與FP32相似的精度下,提升性能和內存利用率。
算力、算法、數據如今都有各自標準以及解決辦法,當三者形成完整閉環時,如何讓整個流程的效率更上一層?
依然還有可以繼續進步的地方,那就是:AI 應用原生的數據格式并不統一的情況下,如何高效的把大量采用傳統FP32數據格式的AI模型轉換成BF16或INT8格式使用。
由英特爾推出的 OpenVINO™ 工具套件提供了模型量化功能,為上述問題提供了應對良方。
它能讓基于不同 AI 框架,如 TensorFlow、MXNet、PyTorch 等構建的 FP32 數據格式 AI 模型,在損失很少精度的情況下轉化為 INT8 和 BF16 數據格式。
除模型量化功能外,針對一系列 AI 應用場景,如視覺模擬、自動語音識別、自然語言處理及推薦系統等,OpenVINO™ 工具套件還提供了能提升它們開發和部署效率的組件,例如 OpenVINO™ Model Server 和 OpenVINO™ Model Zoo 等組件可對基于 TensorFlow、PyTorch、MxNet、Keras 等不同框架構建的訓練模型實施更為高效的優化,并簡化這些模型部署的流程及耗時。
AI應用場景頗多,那何種場景更能突顯AVX-512_BF16等深度學習加速技術的優勢?
例如在醫療影像此類重視準確性多過于實時性的場景中,匯醫慧影在乳腺癌影像分析場景中引入了集成有英特爾® 深度學習加速技術的第二代英特爾® 至強® 可擴展處理器,配合 OpenVINO™ 工具套件,在對檢測模型進行了 INT8 轉換和優化后,推理速度較原始方案提升高達 8.24 倍,且精確度損失不到 0.17%。
企業啟動構建AI應用,改弦更張并非性價比之選,可以充分評估既有的數據存儲、處理和分析平臺,如此一來,基于又準又快又省的CPU,或借助它構建和部署符合自身需求的AI應用。
更何況,CPU自身的AI能力也在不斷進化中,即將發布的代號為Sapphire Rapids的英特爾第四代至強可擴展處理器,就加入了簡稱AMX的高級矩陣擴展(Advanced Matrix Extensions)技術。
AMX是新的x86擴展,具有自己的存儲和操作,主要針對AI領域非常重要的平鋪矩陣乘法,比前兩種DL Boost的實現更為復雜,那效果呢?我們(帶上顯微鏡)拭目以待吧~
本文來自微信公眾號“智能相對論”(ID:aixdlun),作者:木青,36氪經授權發布。
