NVIDIATensort和(hé)GPU软(ruǎn)件(jiàn)栈幫助騰訊AILAB創造生(shēng)动的(de)虛拟人(rén)。

 行業动态     |      2022-05-23 11:26:24    |      瀝拓

客戶介紹及(jí)應(yìng)用(yòng)背景。

騰訊AILAB致(zhì)力于(yú)打(dǎ)造集産業、大(dà)學(xué)、研究和(hé)應(yìng)用(yòng)于(yú)一(yī)體(tǐ)的(de)AI生(shēng)态。其(qí)主(zhǔ)要(yào)研究方(fāng)向(xiàng)包(bāo)括计算机视覺、語(yǔ)音(yīn)識别、自(zì)然語(yǔ)言處(chù)理(lǐ)和(hé)机器學(xué)習。結合騰訊的(de)场(chǎng)景和(hé)業務(wù)優勢,在(zài)社交AI、遊戲AI、內(nèi)容AI、平台(tái)AI等領域取(qǔ)得了(le)显著成(chéng)績。該技術(shù)已應(yìng)用(yòng)于(yú)數百(bǎi)个(gè)騰訊産品,如(rú)微信(xìn)、QQ、每日(rì)快(kuài)報和(hé)QQ音(yīn)乐(lè)。其(qí)中(zhōng),围棋AI絕技多(duō)次(cì)獲得世界人(rén)工智能(néng)围棋大(dà)賽冠軍。

騰訊AILAB創造的(de)虛拟人(rén)具有(yǒu)自(zì)然、生(shēng)动、情(qíng)感(gǎn)的(de)表(biǎo)达(dá)方(fāng)式,由(yóu)騰訊AILAB開(kāi)發(fà)的(de)一(yī)套(tào)複雜系(xì)統支持(chí)。首先(xiān),系(xì)統應(yìng)該從文(wén)本(běn)中(zhōng)提(tí)取(qǔ)不(bù)同(tóng)的(de)信(xìn)息,包(bāo)括表(biǎo)达(dá)、情(qíng)感(gǎn)、重(zhòng)音(yīn)位(wèi)置和(hé)興奮程度(dù);之(zhī)後(hòu),这(zhè)些(xiē)信(xìn)息被輸入(rù)到(dào)模型中(zhōng)生(shēng)成(chéng),然後(hòu)同(tóng)步生(shēng)成(chéng)語(yǔ)音(yīn)、口型和(hé)表(biǎo)达(dá)參數,最(zuì)後(hòu)虛拟人(rén)自(zì)然生(shēng)动地(dì)表(biǎo)达(dá)出(chū)来(lái)。

客戶挑战

根(gēn)據(jù)虛拟人(rén)物(wù)需要(yào)表(biǎo)达(dá)的(de)語(yǔ)言和(hé)情(qíng)感(gǎn),創造一(yī)个(gè)自(zì)然生(shēng)动的(de)人(rén)臉是(shì)創造虛拟人(rén)的(de)重(zhòng)要(yào)階(jiē)段(duàn)。首先(xiān)需要(yào)渲染人(rén)臉的(de)紋理(lǐ)图(tú)和(hé)渲染图(tú),然後(hòu)輸入(rù)到(dào)深度(dù)學(xué)習模型中(zhōng),最(zuì)後(hòu)生(shēng)成(chéng)一(yī)个(gè)自(zì)然生(shēng)动的(de)人(rén)臉。在(zài)这(zhè)个(gè)过(guò)程中(zhōng),需要(yào)使用(yòng)OpenGL、OpenCV、CUDA、Tensorflow等软(ruǎn)件(jiàn)技術(shù)。騰訊原有(yǒu)的(de)方(fāng)案(àn)有(yǒu)很多(duō)CPU和(hé)GPU的(de)數據(jù)交互,很多(duō)计算操作(zuò)都是(shì)通(tòng)过(guò)CPU實(shí)現(xiàn)的(de),效率很低(dī)。

OpenGL在(zài)GPU上(shàng)渲染图(tú)像並(bìng)繪制framebufer後(hòu),需要(yào)使用(yòng)glreadpixels将數據(jù)複制到(dào)CPU,然後(hòu)使用(yòng)cudamecpy将數據(jù)從CPU複制到(dào)GPU進(jìn)行深度(dù)學(xué)習模型的(de)推理(lǐ)。这(zhè)里(lǐ)有(yǒu)两(liǎng)个(gè)不(bù)必要(yào)的(de)CPU和(hé)GPU之(zhī)間(jiān)的(de)數據(jù)傳輸。CPU上(shàng)完成(chéng)了(le)色(sè)空(kōng)間(jiān)轉(zhuǎn)換、深度(dù)學(xué)習推理(lǐ)前(qián)後(hòu)處(chù)理(lǐ)等操作(zuò),效率很低(dī)。

應(yìng)用(yòng)方(fāng)案(àn)

NVIDIA技術(shù)渲染和(hé)推理(lǐ)階(jiē)段(duàn),NVIDIA技術(shù)提(tí)供了(le)強(qiáng)大(dà)的(de)支持(chí)。在(zài)渲染階(jiē)段(duàn),NVIDIA幫助提(tí)高(gāo)色(sè)空(kōng)間(jiān)轉(zhuǎn)換效率,减少(shǎo)整體(tǐ)延遲,主(zhǔ)要(yào)體(tǐ)現(xiàn)在(zài):

使用(yòng)NVIDIACUDA/Openglinteroperabity来(lái)代(dài)替騰訊之(zhī)前(qián)使用(yòng)glreadPixels在(zài)CUDA和(hé)Opengl之(zhī)間(jiān)複制數據(jù)的(de)方(fāng)案(àn),大(dà)大(dà)降低(dī)了(le)CPU和(hé)GPU之(zhī)間(jiān)的(de)數據(jù)複制,從而(ér)降低(dī)了(le)整體(tǐ)的(de)延遲。利用(yòng)GPU的(de)並(bìng)行優勢,将原本(běn)在(zài)CPU上(shàng)進(jìn)行的(de)色(sè)空(kōng)間(jiān)轉(zhuǎn)換操作(zuò)遷移到(dào)NVIDIAT4GPU上(shàng),利用(yòng)GPU的(de)並(bìng)行優勢,大(dà)大(dà)提(tí)高(gāo)了(le)色(sè)空(kōng)間(jiān)轉(zhuǎn)換的(de)效率,進(jìn)一(yī)步降低(dī)了(le)整體(tǐ)的(de)延遲。将多(duō)幀mess形成(chéng)一(yī)个(gè)batch,以提(tí)高(gāo)整个(gè)framebufer的(de)利用(yòng)率。

在(zài)推理(lǐ)階(jiē)段(duàn),NVIDIA有(yǒu)助于(yú)提(tí)高(gāo)推理(lǐ)的(de)整體(tǐ)吞吐量(liàng),减少(shǎo)推理(lǐ)延遲,主(zhǔ)要(yào)體(tǐ)現(xiàn)在(zài)以下(xià)幾(jǐ)點(diǎn):用(yòng)NVIDIATensorrrt替換Tensorflow来(lái)加速模型推理(lǐ),在(zài)最(zuì)終(zhōng)视覺效果(guǒ)幾(jǐ)乎不(bù)變(biàn)的(de)情(qíng)況下(xià),使用(yòng)NVIDIATI4GPU上(shàng)的(de)FP16Tensorcore可(kě)以大(dà)大(dà)提(tí)高(gāo)矩阵(zhèn)乘法(fǎ)等操作(zuò)速度(dù)。

用(yòng)nvidiatensorrt替換tensorflow来(lái)加速模型推理(lǐ),使用(yòng)nvidia4gpu上(shàng)的(de)FP16tensorcore可(kě)以大(dà)大(dà)提(tí)高(gāo)矩阵(zhèn)乘法(fǎ)等操作(zuò)速度(dù)的(de)特(tè)性(xìng)特(tè)性(xìng)。在(zài)最(zuì)終(zhōng)视覺效果(guǒ)幾(jǐ)乎不(bù)變(biàn)的(de)情(qíng)況下(xià),進(jìn)一(yī)步提(tí)高(gāo)推理(lǐ)的(de)吞吐量(liàng),减少(shǎo)推理(lǐ)的(de)延遲。在(zài)nvidiat4gpu上(shàng),cudakernel使用(yòng)cudakernel替換原始(shǐ)流程,在(zài)CPU上(shàng)使用(yòng)OpenCV實(shí)現(xiàn)mat-tensor和(hé)tensor-to-mat等格式轉(zhuǎn)換操作(zuò),並(bìng)使用(yòng)Opencv-cudernel替換Opencu版本(běn)的(de)部(bù)分(fēn)操作(zuò)(如(rú)ressize等),充分(fēn)發(fà)挥GPU相对于(yú)CPU更(gèng)高(gāo)的(de)並(bìng)發(fà)優勢,减少(shǎo)GPU到(dào)CPU的(de)數據(jù)傳輸通(tòng)信(xìn)量(liàng),在(zài)加速这(zhè)些(xiē)操作(zuò)的(de)同(tóng)时(shí),减少(shǎo)GPU到(dào)CPU的(de)數據(jù)傳輸通(tòng)信(xìn)量(liàng),GPU和(hé)CPU上(shàng)的(de)操作(zuò)是(shì)通(tòng)过(guò)Pipeline進(jìn)行的(de),結合NVIDIA的(de)MPS技術(shù),在(zài)處(chù)理(lǐ)多(duō)个(gè)數據(jù)流的(de)同(tóng)时(shí),提(tí)高(gāo)單卡上(shàng)的(de)多(duō)个(gè)流程,提(tí)高(gāo)整體(tǐ)吞吐量(liàng)。

使用(yòng)效果(guǒ)及(jí)影響。

在(zài)虛拟人(rén)类项目中(zhōng),NVIDIACUDA技術(shù)大(dà)大(dà)提(tí)高(gāo)了(le)渲染速度(dù),NVIDIATensort方(fāng)便快(kuài)速加速深度(dù)學(xué)習模型的(de)推理(lǐ)。結合MPS技術(shù),實(shí)現(xiàn)了(le)單卡多(duō)路(lù)推流,使整體(tǐ)推理(lǐ)效率达(dá)到(dào)原来(lái)的(de)三(sān)倍!性(xìng)能(néng)的(de)显著提(tí)高(gāo)不(bù)僅提(tí)高(gāo)了(le)GPU的(de)利用(yòng)率,還(huán)降低(dī)了(le)AI技術(shù)的(de)使用(yòng)成(chéng)本(běn)。