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