自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

騰訊語(yǔ)音合成技術(shù):模型優(yōu)化與推理加速實(shí)踐

人工智能
隨著人工智能技術(shù)的不斷進(jìn)步,語(yǔ)音合成技術(shù)在游戲和娛樂(lè)領(lǐng)域扮演著越來(lái)越重要的角色。本次分享題目為“騰訊游戲知幾語(yǔ)音合成大模型推理加速實(shí)踐”,主要介紹騰訊在語(yǔ)音合成領(lǐng)域的產(chǎn)品展示、模型結(jié)構(gòu)分析、推理加速方案以及未來(lái)展望。

一、背景-產(chǎn)品展示

首先,讓我們來(lái)看一下騰訊自研的知音語(yǔ)音大模型在語(yǔ)音合成領(lǐng)域的應(yīng)用展示。該模型能夠提供更自然、韻律豐富且實(shí)時(shí)性更強(qiáng)的語(yǔ)音合成體驗(yàn)。其兩大顯著優(yōu)點(diǎn)如下:

  • 聲音復(fù)刻:僅需 10 秒音頻即可完成聲音復(fù)刻。
  • 實(shí)時(shí)性能:通過(guò)加速優(yōu)化,其實(shí)時(shí)率約為 0.085。

圖片

我們的產(chǎn)品主要分為三種形態(tài):

  • 文本問(wèn)答:
    輸入方式:玩家通過(guò)文本輸入問(wèn)題或指令。
    輸出方式:系統(tǒng)利用人工智能技術(shù)處理后,返回相應(yīng)的文本回答。
  • 語(yǔ)音交互:
    輸入方式:玩家通過(guò)語(yǔ)音與 AI 語(yǔ)音助手進(jìn)行交流。
    輸出方式:系統(tǒng)經(jīng)過(guò) AI 處理后,以語(yǔ)音形式回應(yīng)玩家。
  • 多模態(tài) NPC(非玩家角色):
    輸入方式:玩家可以通過(guò)文本或語(yǔ)音與 NPC 進(jìn)行互動(dòng)。
    輸出方式:系統(tǒng)經(jīng)過(guò) AI 處理后,NPC 可以返回文本、語(yǔ)音、肢體動(dòng)作、面部表情和口型動(dòng)作等多種形式的數(shù)據(jù),提供更加豐富和自然的交互體驗(yàn)。

這三種產(chǎn)品形態(tài)分別涵蓋了文本、語(yǔ)音以及多模態(tài)交互,旨在為用戶(hù)提供多樣化且高度沉浸式的互動(dòng)體驗(yàn)。

二、模型結(jié)構(gòu)選型與分析

接下來(lái),我將詳細(xì)講解我們語(yǔ)音合成模型的結(jié)構(gòu)選型和分析。傳統(tǒng)的語(yǔ)音合成方案通常包括以下步驟:

  • 輸入文本。
  • 通過(guò)聲學(xué)模型生成梅爾譜圖(Mel-spectrogram)。
  • 通過(guò)聲碼器(Vocoder)將梅爾譜圖轉(zhuǎn)換為語(yǔ)音。

然而,這種傳統(tǒng)方案存在一個(gè)顯著缺點(diǎn):需要大量的訓(xùn)練語(yǔ)料。在游戲場(chǎng)景中,例如 NPC(非玩家角色),往往難以獲取如此大量的訓(xùn)練數(shù)據(jù)。因此,我們的研究方向轉(zhuǎn)向了基于語(yǔ)言模型的解決方案。

1. 語(yǔ)音合成大模型結(jié)構(gòu)

新方案的主要流程如下:

  • 輸入文本:
    輸入一段文本。
  • Tokenization:
    對(duì)輸入文本和需要克隆的語(yǔ)音分別進(jìn)行 Token 化處理,生成文本 Token 和語(yǔ)音 Token。
  • 連接與編碼:
    將文本 Token 和語(yǔ)音 Token 連接在一起。
    通過(guò)旋轉(zhuǎn)位置編碼(Rotary Position Encoding)對(duì)文本和音頻分別進(jìn)行編碼,生成最終的嵌入向量(Embedding)。
  • 自回歸模型(AR Model):
    將嵌入向量輸入到 AR 模型中,逐步生成第一層音素 Token。
    AR 模型的結(jié)構(gòu)與傳統(tǒng)的自然語(yǔ)言處理大模型(如 GPT 類(lèi)模型)類(lèi)似,采用 Transformer 架構(gòu)。
  • 非自回歸模型(NAR Model):
    將 AR 模型生成的音素 Token 輸入到 NAR 模型中,生成所有語(yǔ)音 Token。
    Codec Decoder:
    最后,通過(guò) Codec Decoder 將語(yǔ)音 Token 轉(zhuǎn)換為最終的語(yǔ)音輸出。

圖片

2. 面臨的挑戰(zhàn)

高并發(fā)場(chǎng)景的挑戰(zhàn):在高并發(fā)環(huán)境下,模型需要高效處理大量請(qǐng)求。

實(shí)時(shí)率要求:特別是在游戲場(chǎng)景中,需要實(shí)時(shí)處理語(yǔ)音并觸達(dá)玩家,對(duì)實(shí)時(shí)率的要求非常高。

針對(duì)上述挑戰(zhàn),第三部分我們將詳細(xì)介紹模型推理的加速方案,以提高系統(tǒng)的并發(fā)處理能力和實(shí)時(shí)性能。

三、模型推理加速方案

在選擇加速方案時(shí),我們首先考慮借鑒自然語(yǔ)言處理(NLP)領(lǐng)域的一些成熟加速方法,并將其應(yīng)用到語(yǔ)音合成大模型上。在 NLP 領(lǐng)域的大模型中,已經(jīng)有許多成熟的推理加速方法,這些方法可以分為工程上的優(yōu)化(KV Cache,prefix KV Cache,flash attention,flash decode和page attention)和偏算法上的優(yōu)化(投機(jī)采樣,int4/int8 量化等)。這給我們帶來(lái)了非常多的啟發(fā)。

1. KV Cache

為了將 KV Cache 技術(shù)應(yīng)用于語(yǔ)音合成大模型,我們需要確保 Attention Mask 的設(shè)計(jì)滿(mǎn)足特定條件。這些條件使得 KV Cache 能夠有效地緩存之前的計(jì)算結(jié)果,從而減少冗余計(jì)算并提高推理速度。

(1)使用 KV Cache 的條件

  •  Attention 輸出的第 n 行只與第 n 個(gè) Query (Q)相關(guān):這意味著每個(gè) Token 的輸出只依賴(lài)于當(dāng)前 Token 的 Query 和之前所有 Token 的 Key (K) 和 Value (V)。
  • 第 1 到第 n 個(gè) Token 的 Attention 計(jì)算包含第 1 到第 n-1 個(gè) Token 的Attention 計(jì)算:這意味著每次計(jì)算新的 Token 時(shí),可以復(fù)用之前 Token 的 K 和 V 值,而不需要重新計(jì)算。
  • 每次 Attention 的計(jì)算都使用前面的 K 和 V:每次生成新的 Token 時(shí),只需計(jì)算新 Token 的 K 和 V 值,并結(jié)合之前緩存的 K 和 V 值進(jìn)行計(jì)算。


圖片

(2)語(yǔ)音 AR 模型中的 Attention Mask 設(shè)計(jì)

在語(yǔ)音自回歸(AR)模型中,Attention Mask 的設(shè)計(jì)通常滿(mǎn)足上述條件,因此可以有效地使用 KV Cache。注意力掩碼(attention_mask)和掩碼后的 QK 矩陣(Mask(QK))的變化過(guò)程:左側(cè)展示了一個(gè)注意力掩碼的例子,其中每個(gè)元素表示對(duì)應(yīng)位置的 token 是否參與注意力計(jì)算。中間展示了掩碼后的 Q*K 矩陣,其中非零元素表示有效的注意力權(quán)重。當(dāng)生成第 n 個(gè) token 時(shí),注意力掩碼會(huì)發(fā)生相應(yīng)的變化,新的 token 會(huì)被加入到掩碼中。右側(cè)展示了更新后的注意力掩碼和相應(yīng)的掩碼后的 Q*K 矩陣。

通過(guò)這種方式,每次生成新 token 時(shí),只需要計(jì)算新增的部分,而不需要重新計(jì)算整個(gè)序列的注意力權(quán)重,從而大大減少了計(jì)算量,提高了推理速度。

圖片

2. GQA

在預(yù)填充(Prefill)階段,計(jì)算瓶頸是主要的限制因素。這一階段通常涉及大量的并行計(jì)算,特別是在處理初始輸入時(shí),模型需要對(duì)整個(gè)序列進(jìn)行編碼,生成所有 Token 的 Key (K) 和 Value (V) 值。這種大規(guī)模的計(jì)算需求使得計(jì)算資源成為主要瓶頸。

而在解碼(Decode)階段,內(nèi)存訪(fǎng)問(wèn)瓶頸則成為主導(dǎo)。在解碼過(guò)程中,模型逐步生成新的 Token,并且每次生成新 Token 時(shí)都需要訪(fǎng)問(wèn)之前生成的所有 Token 的 K 和 V 值。頻繁的內(nèi)存訪(fǎng)問(wèn)導(dǎo)致了較高的延遲,使得內(nèi)存帶寬成為主要的性能瓶頸。

圖片

相比于使用 KV Cache、INT8/FP8 量化等方法,選擇組量化注意力(Grouped Query Attention, GQA)可以提供更可控的壓縮率。GQA 通過(guò)將多個(gè)查詢(xún)頭(Query Heads)組合在一起,減少了模型中注意力頭的數(shù)量,從而降低了計(jì)算復(fù)雜度和內(nèi)存訪(fǎng)問(wèn)量。這種方法可以在保證模型效果的同時(shí),顯著提高推理效率。

具體來(lái)說(shuō),通過(guò)將注意力頭數(shù)量從 16 減少到 4,我們不僅減少了模型的計(jì)算復(fù)雜度,還降低了內(nèi)存訪(fǎng)問(wèn)的需求。實(shí)驗(yàn)結(jié)果顯示,這種優(yōu)化可以使推理耗時(shí)降低  20%。這表明,GQA 是一種有效的手段,能夠在保持模型性能的同時(shí),顯著提升推理速度。

圖片

3. BPE

在引入 KV Cache 機(jī)制后,AR 模型被劃分為兩個(gè)主要階段:預(yù)填充(Prefill)階段和解碼(Decode)階段。預(yù)填充階段負(fù)責(zé)初始化模型的狀態(tài),并為后續(xù)的解碼過(guò)程準(zhǔn)備必要的上下文信息;而解碼階段則基于這些上下文信息逐個(gè)生成音頻樣本或 token。對(duì)于生成一段時(shí)長(zhǎng)為 10 秒的高質(zhì)量音頻而言,采用傳統(tǒng)方法通常需要 AR 模型產(chǎn)生大約 500 個(gè) token。

圖片

NLP 領(lǐng)域中廣泛采用字節(jié)對(duì)編碼(Byte Pair Encoding, BPE)技術(shù)來(lái)解決 OOV 問(wèn)題。BPE 算法首先將輸入文本中的每個(gè)單詞拆分成單個(gè)字符序列,隨后通過(guò)統(tǒng)計(jì)分析找出出現(xiàn)頻率最高的字符對(duì),并用一個(gè)新的復(fù)合符號(hào)代替這對(duì)字符。這一替換步驟會(huì)重復(fù)進(jìn)行,直至達(dá)到預(yù)設(shè)的最大循環(huán)次數(shù)或滿(mǎn)足其他停止條件為止。這種方法有效地增加了詞典容量的同時(shí),保持了相對(duì)較小的詞匯表大小,有助于提高模型訓(xùn)練效率及泛化能力。

圖片

為了直接使用 NLP BPE,先將原始音頻數(shù)據(jù)轉(zhuǎn)換成一系列離散化的 audio token,然后將這些 token 與唯一的 Unicode 字符建立一一對(duì)應(yīng)關(guān)系。這樣一來(lái),每一個(gè)特定的 Unicode 字符實(shí)際上就編碼了一個(gè)或一組相關(guān)的音頻信號(hào)片段。這種做法不僅簡(jiǎn)化了模型結(jié)構(gòu),還極大地提升了處理效率。實(shí)驗(yàn)結(jié)果顯示,通過(guò)應(yīng)用上述優(yōu)化策略,合成相同長(zhǎng)度即 10 秒鐘音頻所需的 token 數(shù)量可由原來(lái)的約 500 個(gè)減少至約 170 個(gè)左右,顯著降低了計(jì)算復(fù)雜度并加速了整個(gè)生成流程。

圖片

4. 連續(xù)性批處理

LLM 中優(yōu)化吞吐主要有兩種方式:

樸素批處理:每個(gè)時(shí)間步(T1 到 T8)分別獨(dú)立地處理不同的句子(S1 到 S4),并且每個(gè)句子在達(dá)到結(jié)束標(biāo)記(END)之前都會(huì)被單獨(dú)處理。

連續(xù)性批處理:試圖在同一時(shí)間步內(nèi)同時(shí)處理多個(gè)句子,以實(shí)現(xiàn)更高的并行性和效率。例如,在第一個(gè)時(shí)間步(T1),四個(gè)句子(S1 到 S4)都被處理;隨后的時(shí)間步繼續(xù)處理這些句子直到它們各自完成。

這里可以直觀(guān)的看到兩種批處理方法的區(qū)別:

左上角圖表:顯示了樸素批處理的結(jié)果,每個(gè)時(shí)間步僅處理一個(gè)句子。

右上角圖表:顯示了樸素批處理的最終狀態(tài),每個(gè)句子都在各自的結(jié)束點(diǎn)停止。

左下角圖表:顯示了連續(xù)性批處理的開(kāi)始階段,所有句子在第一個(gè)時(shí)間步都被處理。

右下角圖表:顯示了連續(xù)性批處理的最終狀態(tài),不同句子在不同的時(shí)間步完成。

圖片

在大型語(yǔ)音合成模型中,可以采用兩種不同的批處理(batching)策略。下面分別介紹了這兩種方案及其優(yōu)缺點(diǎn):

  • 訓(xùn)練時(shí)采用的方案一

優(yōu)點(diǎn):當(dāng)需要對(duì)文本和音頻特征進(jìn)行類(lèi)似嵌入(embedding, emb)的操作時(shí),這種方案提供了更加簡(jiǎn)潔直接的方法。它允許模型分別處理文本和音頻數(shù)據(jù),從而簡(jiǎn)化了特征處理流程。

缺點(diǎn):在推理階段,尤其是在解碼過(guò)程中執(zhí)行注意力機(jī)制計(jì)算時(shí),必須為每次計(jì)算提供填充注意力掩碼(padding attention mask)。這增加了推理框架實(shí)現(xiàn)上的復(fù)雜性,因?yàn)樾枰~外處理這些掩碼以確保正確地忽略掉填充部分。

  • 推理時(shí)采用的方案二

優(yōu)點(diǎn):該方案簡(jiǎn)化了注意力機(jī)制在推理過(guò)程中的應(yīng)用,無(wú)需為每次計(jì)算單獨(dú)定義或傳遞填充注意力掩碼。因此,它可以無(wú)縫集成到現(xiàn)有的大規(guī)模語(yǔ)言模型(LLM)推理框架中,提高了易用性和效率。

缺點(diǎn):然而,在面對(duì)需要同時(shí)處理文本和音頻特征的情況時(shí),如進(jìn)行嵌入操作,這種方法可能導(dǎo)致處理流程變得更為復(fù)雜。由于不能像方案一那樣直接分離處理,因此可能需要設(shè)計(jì)額外的邏輯來(lái)協(xié)調(diào)不同模態(tài)之間的交互,增加了系統(tǒng)的整體復(fù)雜度。

圖片

這里我們介紹一下結(jié)合騰訊 Trpc 微服務(wù)框架,在語(yǔ)音合成大模型中實(shí)踐 continuous batching 推理的過(guò)程。該框架旨在提升模型推理性能,降低延遲并提高資源利用率。

左側(cè)的架構(gòu)圖介紹的是一個(gè)典型的分布式系統(tǒng)結(jié)構(gòu)。其中,“master”進(jìn)程作為主控節(jié)點(diǎn),負(fù)責(zé)任務(wù)調(diào)度和管理。從“master”分支出來(lái)的“Dispatcher”進(jìn)程用于接收用戶(hù)請(qǐng)求并將它們分配給各個(gè)工作進(jìn)程組。工作進(jìn)程組包含多個(gè)“Worker”進(jìn)程,它們運(yùn)行在 GPU 或 CPU 上,負(fù)責(zé)實(shí)際的模型推理任務(wù)。此外,還有一個(gè)“Task”進(jìn)程,其內(nèi)部有一個(gè)緩沖區(qū)(buffer),用于存儲(chǔ)待處理的任務(wù)。這些任務(wù)經(jīng)過(guò)前處理后,進(jìn)入模型推理階段,最后返回結(jié)果并進(jìn)行后處理。

右側(cè)的流程圖詳細(xì)描述了具體的持續(xù)批量推理過(guò)程。首先,通過(guò) rpc 框架請(qǐng)求隊(duì)列收集用戶(hù)請(qǐng)求,然后進(jìn)行二次批量處理和優(yōu)先級(jí)調(diào)整。接著,這些請(qǐng)求被送入 AR 模型進(jìn)行連續(xù)性的推理。完成推理后,異步式地返回結(jié)果,并將其放入 NAR 隊(duì)列中等待進(jìn)一步處理。最后,將處理好的結(jié)果發(fā)送回用戶(hù)端。

圖片

5. 推理加速效果

實(shí)時(shí)率從 2.09 優(yōu)化到 0.085,吞吐可達(dá)到 1 秒 2500tokens。

圖片

四、未來(lái)展望

在未來(lái)的研究與開(kāi)發(fā)中,我們計(jì)劃實(shí)施以下幾項(xiàng)關(guān)鍵舉措以進(jìn)一步優(yōu)化語(yǔ)音合成技術(shù)。

  • 引入投機(jī)采樣技術(shù):我們將探索將投機(jī)采樣方法應(yīng)用于大型語(yǔ)音合成模型的可能性。通過(guò)這種技術(shù),可以在生成過(guò)程中提前預(yù)測(cè)并選擇最有可能的輸出路徑,從而加速音頻合成過(guò)程,并可能提高最終合成音頻的質(zhì)量。
  • 改造非自回歸(NAR)模型為流式輸出架構(gòu):為了實(shí)現(xiàn)更低延遲和更高效的音頻生成,我們打算對(duì)現(xiàn)有的 NAR 模型進(jìn)行調(diào)整,使其支持流式輸出模式。這樣,模型能夠一邊生成音頻數(shù)據(jù)一邊實(shí)時(shí)輸出,極大地提升了用戶(hù)體驗(yàn),特別是在需要即時(shí)響應(yīng)的應(yīng)用場(chǎng)景中。
  • 研究更多非 Transformer 網(wǎng)絡(luò)架構(gòu):雖然 Transformer 架構(gòu)在許多方面表現(xiàn)優(yōu)異,但我們認(rèn)為探索其他類(lèi)型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)同樣重要。這包括但不限于卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)及其變體等。我們的目標(biāo)是發(fā)現(xiàn)那些在特定任務(wù)上具有優(yōu)勢(shì)且能提供更高效率或更好性能的新架構(gòu)。
責(zé)任編輯:姜華 來(lái)源: DataFunTalk
相關(guān)推薦

2009-08-21 15:28:23

C#英文

2020-09-03 11:22:35

音頻騰訊云AI

2023-11-19 23:36:50

2022-12-05 07:17:14

人工智能語(yǔ)音合成

2023-01-05 09:33:37

視覺(jué)模型訓(xùn)練

2022-12-09 09:52:47

AI深度學(xué)習(xí)

2023-02-20 13:50:39

AI 領(lǐng)域建模大數(shù)據(jù)

2023-01-06 11:05:36

人工智能作業(yè)幫語(yǔ)音技術(shù)

2022-05-22 22:26:54

模型編譯

2023-01-31 15:27:13

數(shù)據(jù)治理數(shù)據(jù)管理

2022-11-29 08:00:00

Soul智能語(yǔ)音人工智能

2023-02-20 13:45:31

數(shù)據(jù)分析騰訊 Alluxio

2024-09-09 08:31:15

2024-08-27 09:35:47

2023-10-10 09:45:35

自動(dòng)駕駛技術(shù)

2024-10-21 16:41:17

2023-07-27 16:51:05

微軟語(yǔ)音模型人工智能

2016-09-29 17:56:51

騰訊云微信智能語(yǔ)音
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)