向 Avatar V 問好,史上最逼真的虛擬人物。立即免費建立您的專屬 Avatar

By 趙家軍、Pedram Haqiqi

只有當虛擬人物在一段時間內保持一致時,Avatar 影片才會讓人感到真實可信。當臉部位置偏移、牙齒外觀改變、對嘴出現誤差,或是片段之間的動作被重置時,觀眾會立刻察覺。這些問題對虛擬人物的影響比多數其他影片生成任務更大,因為觀眾往往會在較近的距離、持續很長一段時間,專注觀看同一個人在說話。

在當今的影片生成領域,時長仍然是最明顯的限制之一。許多模型和產品都只能生成固定長度的短片——幾秒鐘,而且很少有系統能生成超過幾分鐘的內容。對於 Avatar 產品來說,這項限制會直接影響客戶的工作流程。客戶希望能為訓練影片、銷售簡報、產品操作示範、教育教學、客服支援,以及需要持續說話直到任務完成的智慧型代理,製作更長且一致的場景/影片,同時也希望能有快速預覽,以便針對提示詞、動作和腳本快速反覆調整。

在 HeyGen,我們將這些需求具體化為三項明確的要求:

  1. 長場景一致性。Avatar 需要在不只是一小段短片,而是多個生成影片片段之間,持續維持身份、對嘴、表情與動作的連貫一致。
  2. 無固定時長上限一次生成可能是 10 秒、10 分鐘,或是開放式的即時長時間會話。
  3. 快速預覽、即時或快於即時的生成。系統應能迅速開始產生畫面,甚至在推論仍在進行時,就即時串流輸出已生成的畫面。

這篇文章將逐步介紹我們為滿足這些需求而打造的推論框架。

底層模型架構

這個框架是以 HeyGen 的 Avatar 影片生成模型為核心所打造,包括 Avatar IV 和 Avatar V 系列。從高層來看,模型會接收一張或一段參考影像、驅動用的音訊,以及可選的文字或場景條件,接著生成該虛擬人物在影片中說話的畫面,並精準呈現其身份特徵、表情與動作。

核心生成模型是一種使用 flow matching 訓練的 Diffusion Transformer(簡稱 DiT)。模型並非將人物壓縮成一個小小的身分嵌入向量,而是根據豐富的參考權杖進行條件設定,從而保留對虛擬人物至關重要的細節:臉型、牙齒、膚質、嘴部動作、手勢風格以及說話節奏。

實際推論流程分為三個主要階段:

  1. 音訊轉影片生成。基礎 DiT 會根據參考人物、音訊特徵與各種條件訊號,產生低解析度的影片潛在向量。此階段主要著重於動作、對嘴以及時間上的連貫性。
  2. 具身分識別的超高解析度重建。第二個模型會將這些潛在向量細緻化為高解析度輸出,並特別加強在人們對瑕疵最敏感的區域,尤其是臉部與嘴部。
  3. 串流式 VAE 解碼。VAE 解碼器會將高解析度潛變數逐區塊轉換成 RGB 影格,因此在整段影片尚未完全生成前,就能陸續輸出影格。

為了產生長影片,系統會將資料分成多個區塊來處理。第一個區塊完全依賴靜態參考,而後續區塊則使用前一段的邊界資料。這樣一來,虛擬人物就能自然持續說話,而不需要每次都從頭重置姿勢或身份。

串流架構與管線循環

為了支援以區塊為單位的執行方式,推論框架採用模組化的三層式架構,在局部的時間視窗中運作,並在每個區塊處理完成後立即釋放資源。

  • 模組:包覆特定模型及其檢查點的封裝元件(例如 A2V DiT、超高解析度 DiT、VAE 元件、文字/音訊編碼器)。
  • 階段:一個具類型的執行單元,用來協調一個或多個模組(例如情境生成、超高解析度處理)。
  • 管線:將各個階段串接在一起的執行圖,負責管理共用狀態,並協調串流或批次的執行模式。

初始化階段會在每次請求時,將參考身分編碼為潛在向量。接著,管線會在剩餘各階段之間持續循環執行,直到輸入的音訊串流耗盡為止:

Avatar 串流推論流程圖,展示如何透過編碼、情境生成與超高解析度等階段,分段處理影像/影片、音訊與文字輸入,最終產生輸出的生成檔案。
  • 情境生成:將輸入的音訊片段轉換為特徵,與文字或場景條件結合,並準備目標雜訊張量。
  • 音訊轉影片:執行多步驟的擴散運算,以產生低解析度的潛在表示。此階段會根據前一區塊的邊界影格來調整目前區塊,維持動作的連貫性。
  • 超高解析度:在單一步驟中將動態潛變量放大至完整解析度,並優先強化臉部的空間細節。
  • VAE 解碼與發佈:將高解析度潛變量解碼為 RGB 影格,並直接寫入輸出編碼器(H.264 / AAC),以便立即儲存或即時播放。

邊界連續性與片段一致性

將影片分成不同片段來生成,可能會在邊界處產生不連續的情況。此框架透過使用兩種不同的區塊分類方式來減輕這個問題:

  • N Chunks:用來生成 Avatar 主要時間軸的片段。
  • I Chunks(插值):用於平滑銜接連續 N Chunks 的片段。

執行順序結構如下:

N0 -> N1 -> I0 -> N2 -> I1 -> N3 -> I2 -> ...

只有在前後相鄰的 N 區塊都完成後,才會生成對應的 I 區塊。系統會使用前一個 N 區塊的最後一幀,以及當前 N 區塊的較早一幀作為錨點畫面,來計算過渡期間的運動變化。生成完成後,多餘的錨點預測會被丟棄,只保留平滑插值後的過渡片段。這個機制在維持時間一致性的同時,也限制了所需的上下文視窗範圍。

隨時間長度保持固定記憶體使用量

傳統的影片處理流程在執行期間會累積潛在向量、解碼後的畫面以及注意力上下文,導致 GPU 記憶體用量會隨著影片長度線性成長。

為了支援開放式的生成,本框架維持嚴格的滾動狀態。系統只保留靜態的參考條件,以及區塊轉換所需的最小錨點張量集合。所有中介資產——包含音訊特徵、雜訊張量、內部啟動值與原始 RGB 影格——在每個區塊解碼並寫入後,會立即從記憶體中清除。

因此,無論是產生短片還是長時間序列,GPU 的峰值記憶體使用狀況都能維持穩定;資源使用量會隨著所設定的區塊大小變化,而不是隨整個工作階段的總時長而改變。

在管線中載入與卸載的各個階段

每個請求都會在一個含有 8 個 GPU 的節點上執行。我們使用 FSDP 將大型模型的參數在多個 GPU 之間分片。每個 rank 只持有部分權重,在計算時收集所需的參數,完成後再釋放。這樣一來,多個大型模型——基礎 DiT、超高解析度 DiT、文字編碼器、音訊編碼器以及 VAE——就都能放在同一個節點上。

這當中存在取捨。由於在推論過程中需要在前向傳遞時收集參數,FSDP 會帶來通訊額外開銷。我們運用多種技術手段來隱藏這些開銷,並在模型未使用時,讓同一節點上的其他模型不佔用 GPU:

  • 前向預取。下一個區塊參數的 AllGather 會提前發出,並與當前區塊的運算重疊執行,從而在關鍵路徑上隱藏參數收集的延遲。
  • 從 CPU 進行延遲、逐區塊的解除分片。當模型從釘選的 CPU 記憶體載回時,我們不會預先把所有權重一次載入。每個 transformer 區塊會在其前向傳遞之前才解除分片(主機到裝置的複製+AllGather),因此第 n+1 個區塊的 H2D 傳輸可以與第 n 個區塊的運算重疊進行。
  • 在各階段之間使用固定 CPU 記憶體進行卸載。未在執行中的模型參數會保存在固定的 CPU 記憶體中,因此同一台機器上的多個模型(base DiT、super-resolution DiT、text encoder、audio encoder、VAE)不需要同時在 GPU 上保留各自的權重。固定記憶體讓 H2D 複製速度足夠快,能與運算重疊進行。
  • 具 NUMA 感知的程序配置。每個程序都會固定在與其指定 GPU 相同的 NUMA 節點上,讓 CPU↔GPU 傳輸在不跨越處理器插槽之間互連的情況下,以完整的 PCIe/NVLink 頻寬運行。

階段之間低於 10 毫秒的模型切換

上述技術帶來的實際效益在於,將 GPU 從一個階段的模型切換到下一個階段的模型(例如從 A2V DiT → Super-Resolution DiT,或從 SR DiT → VAE decoder)在效能成本上幾乎可以視為零。由於要卸載的模型會以非同步方式移出,而要載入的模型其第一個 block 則會在恰當時機即時取消分片,因此 H2D 複製與 AllGather 這兩個動作都被隱藏在已經執行中的運算後面。從端到端來看,每次切換實際可觀察到的額外延遲低於 10ms——遠低於我們目標影格率下一個影格的時間預算。具體來說,正是這一點讓串流管線迴圈(Context Gen → A2V → SR → VAE Decode-and-Publish)能在每個 chunk 中輪流跑過多個大型模型,而不會讓模型切換本身成為效能瓶頸。

即時串流發佈

為了讓模型能夠以足夠的速度進行即時串流,我們進行了大量推論效能最佳化,詳情請參考https://www.heygen.com/research/avatar-v-inference以瞭解此部分的更多資訊。

一旦管線能夠在即時狀態下逐段輸出影片,串流傳輸就會成為推論流程的自然延伸,而不再是額外的後處理步驟。

在廣播式即時路徑中,我們會將產生出的畫面發布到 Amazon Kinesis Video Streams(KVS)。KVS 通常是在攝影機、IoT 裝置以及上傳媒體的情境下被討論。在我們的情況中,「攝影機」其實就是推論管線本身:畫面由模型產生後立即編碼,並以即時串流的形式推送到 KVS。

輸出寫入器會從串流 VAE 接收解碼後的 RGB 畫面,並將其送入 GStreamer 管線中。影片會被編碼為 H.264,音訊則編碼為 AAC,接著這兩個軌道都會推送到 kvssink,也就是 KVS 的 producer sink。之後,觀眾就能在內容仍在產生的同時,以直播形式回放這個工作階段。

成果與收穫

這套框架將 Avatar IV 和 Avatar V 的生成方式,從固定場景的渲染轉變為開放式的串流生成。最重要的成果其實很簡單:我們移除了 Avatar IV 和 Avatar V 的場景時長限制。對於即時 Avatar IV 生成,我們已經達成首幀時間小於 5 秒,並以每秒超過 27 幀的速度生成 720p Avatar IV 影片——比即時播放還要快。