1、在攜程基于GPU的機器翻譯推理性能優化馮帥袁秋龍度假研發部#page#飛攜程攜程機器翻譯介紹機器翻譯性能分析目錄機器翻譯GPU優化3CONTENTS機器翻譯模型壓縮4總結與展望#page#飛攜程攜程機器翻譯介紹機器翻譯性能分析2目錄3機器翻譯GPU優化CONTENTS4機器翻譯模型壓縮5總結與展望#page#飛攜程攜程-機器翻譯內部交流辦公交流企業IM、運營系統等文檔系統工具員工人事系統、企業IM、企業郵箱內部WIKI、CONF等企業幫助中心、運營平臺等微運營客戶信息項目供應商產品文案、報告行業資料介紹、政策、條款機場等解決國際化快速冷啟動問題行中可作為多語言溝通的輔助工具#page#在攜程攜
2、程-機器翻譯40種語言互譯羅馬尼亞語芬蘭語繁體菲律賓語法語波據遇中文+10%西班牙語印地語180種語言自動檢測香港繁體丹麥語馬來語葡萄牙語泰語意大利語韓語英語150+場景入口使用俄語日語波蘭語愛爾蘭語荷蘭語阿拉伯語行業攜程印尼語老過語平均翻譯德語瑞典語5億單日字符翻譯希臘語士耳其語冰島語旅游垂直領域翻譯質量烏克蘭語法語愛沙尼亞語粵語創牙利語捷克語越南語臺灣繁體100ms平均響應時延烏爾都語緬甸語孟加拉拉語#page#飛攜程攜程機器翻譯介紹機器翻譯性能分析目錄3機器翻譯GPU優化CONTENTS4機器翻譯模型壓縮5總結與展望#page#飛攜程基礎架構LayernormlamMulti-head
3、AttentionTransformerLayer normAdd & Norm訓練并行化Multi-head AttentionEncdec AttentionMulti-Head Attentionscaled Dot-productAdd & NormAdd & NormAttentionFeed forwardFeed forwardNlayersAddAdd & NormNlayersinea0.1.0.3oftencodedecode#page#心攜程問題一0.2-0.1-0.1-0.20.2-0.20.3-0.1-0.30.3-01-0.3-0.10.2-0.20.3-0.10.
4、2個個個公O+2+22相對位置編碼Token1Token2Token3Token4Token5Token6相對于絕對位置編碼,提高了模型準確度Attention模塊中計算復雜武度增加一倍MatMulSoftMaxMask(opt)ScaleMatMulQK#page#倉攜程問題二82S225.136m19.230mOP爆炸18.70817.847年17.431m14.549m各種小op多且雜,來14.075m14.056m回切換耗費時間13.012m12.336m內存處理op占用35%左11.766ms10.375ms右的運行時間6.478m5.362m5.272ms4.510m4.498m3
5、.657m3.590m2.543m2.348m1.228m1.114m0.664m0.642m0.584m0.456msTransformer局部圖(Netron)時間占比(tensorflowtimeline)#page#飛攜程攜程機器翻譯介紹2機器翻譯性能分析目錄3機器翻譯GPU優化CONTENTS4機器翻譯模型壓縮5總結與展望#page#飛攜程優化一:算子融合add對于一些線性操作,FuseTensorAddNormSoftmax*pos+softmax*v直接融合為單一layernormSoftmaxrpositionkernelSoftmax*對于部分矩陣乘法,softmax采用cu
6、blas中的addQ*pos+Q*Kbatchgemm接口,FusedBiasAddReluQrPosition通過指針操作完成reluO*KQ gemmattentiontensorK gemmFusedBatchGemmV_gemm#page#心攜程優化一:算子融合Op比例比例Opfromtafrimportsperdauerdcode10.4%Gatherv269Encodecutput=super decoddecodag.9.56BatchMarMulV294%utptsedondaDecodeAdd7.3%GPU使用方式MatMul7.166.76StrideSlice比例Kern
7、el整個模型中所有涉及內存搬665Pack移相關操作去除率100%25.2%5.56ReshapeSgemm_64x64_tn9個Kernel執行時間占90%以23.3%Mul5.36gemv2N kernelval上49613.3%ProdSgemm_64x32 sliced1x4 nn4.6613.0%10.2MeanCross attention kernelCuda4.467.8%ConstMasked _attention_kernelModelTransformer(6 layers)Shape3.9K4.8%Sgemm_32x32_sliced1x4nnbatch=2,len=9
8、InputConcatv22.581.6%Sgemm_128x64_tnT4Device2.061.5%TransposeAdd_norm_kernelToolnvprof其他18%1.56Greedy search原始改進#page#倉攜程優化二:簡化計算FFNgreedy/beam searchQLayernormsoftmaxSelf Attention谷1.計算量減少50%Dense2.減少訪存訪問linear3.根據推理實際需Softmaxposition合要簡化無效計算Softmax*decoder4.減少kernelsoftmaxlaunch的次數QpOS+OAKa(W+a)Qx
9、PositionOiKexpejC訂-iexpeQ.K,VDenseWo(Wx+a)LayernormV4.Embedding#page#在攜程優化三:重構內存Attention Cachestudent內存復用,減少顯存pooDperson開銷4,H,=Qm,Kci,V預先根據峰值條件分A=(A1,(k)配相應的內存,避免每次step時候分配內decodedecode存接收請求V申請顯存中TensorflowamamKernel計算顯存管理機制1記木SSpoop釋放顯存Step 1Step 2#page#在攜程優化四:高效計算降低顯存用量極大減少了一些無效矩壓縮陣運行時間對于batch中長度
10、分布差異大的數據效果更好0.10.30.50.70.20.80.91.310.10.30.50.70.20.80.90.000000.00.00000000.00.20.10.30.70.20.8092330.20.10307020.80.92.33.10.1080.5060.7080.92.1620.00.00.00.00.00.0000.00.0104070.50607030942820.1080.50.60.70.80.92.16.20.30.80.50.60.70.80.92.16.20.00000000.00000000.00.20.10.70.60.70.40.91.15.2解壓#
11、page#在攜程優化五:FP16量化Sign Exponent5bit fraction(1obit)sign Exponentbit fraction(23bit)Tensor coreNVIDIA TuringNVIDIAA100NVIDIA VoltaFP64.TF32.FP16.INT8.INT4Supported TensoFP16BF16.FP16,Core PracisionsINT1INTB.INT4NT1存儲空間和帶寬減半最大值:65504FP64.FP32.FP16FP64.FP32.FP16Supported CUDAFP64.FP32.FP16最小值:6x10e-5翻譯
12、精度無損Core PrecisionsINT8.BF16INT8INT8#page#倉攜程結果展示延退加速比(length=64,T4)吞吐提升比t4口10010854681012141618202428326496128256batch_sizebatch_size備注:以上實驗模型為均6層transformer,精度為FP16,對比原始模型為tensorflow的FP32版本,在吞吐測試中當batchsize=32時,v100雖然吞吐提升比的效果低于T4,但是吞吐量遠大于T4。T4實驗設備CUDAV100Intel(R) Xeon(R) Silver 4210 CPU 2.20GHz1卡1
13、卡8核詳情10.2#page#攜程機器翻譯介紹2機器翻譯性能分析目錄機器翻譯GPU優化3CONTENTS機器翻譯模型壓縮5總結與與展望#page#倉攜程知識蒸教師網絡學生網絡8復雜簡單淺深寬窄超參數:LayersNum、HiddenNum和Ops等#page#倉攜程模型分析深寬影響對比編解碼器影響對比200200150()HHL兒推理時間推理時間1001005050三分二二分一三分三分二二分一三分壓縮比壓縮比原始深度寬度深寬原始解碼器編碼器編解碼器#page#在攜程蒸榴模型m總損失函數構成:LoSSal = aLnard + (1-a)Lsoft + BLAT-FMT其中a和B分別表示相應的損
14、失值權重系數,aE(0,1,BERLsoft-Teacher網絡的輸出與Student網絡模型輸出的損失值Lharg-訓練數據語料真實標簽與Student網絡模型輸出的損失值LAT-FMT-Teacher和Student網絡模型的Decoder的中間輸出內容損失值教師模型N層次的學生模型知識蒸端#page#在攜程蒸餾方法EN-ZH效果基于蒸餡訓練的優化一一基準個然罐t333232.281.89基準:經典蒸,Encoder和Decoder(3:1);8參照TinyBERTI和Patient策略,輔助loss改進;30EU值采用逐級分層蒸l(2:13:1);2928參數復用,學習率異步;27多語種互譯;262524基礎策略1策略2策略3策略4策略5策略6策略7訓練策略JiaoxYinYShangLetal.TinybertDistiingbert fornaturallanguageunderstandingDlarxivpreprintarxiv:190910351,201921SunChengYGanZetalPatientknowledgedistilationforbertmodelcompressionDlarxivpreprintarxiv1908.093552019https:/on- https:/