商湯科技AIGC算法面試經歷:Diffusion Model+圖像生成+可控生成全考察

面試作者: 美歷團隊

2年AIGC經驗,詳細復盤商湯科技AIGC算法工程師三輪技術面試,涵蓋VAE/Diffusion理論基礎、ControlNet可控生成、視頻生成等核心考點

背景介紹

我入坑AIGC算是比較早的那批人。碩士期間做的是生成模型方向,畢業後在一家AI創業公司幹了兩年,從GAN到VAE再到Diffusion Model,生成式AI的演進我基本都經歷了。說實話,AIGC這個方向這兩年火得一塌糊塗,但我入行的時候還沒這麼熱鬧,純粹是因為覺得「讓機器學會創造」這件事太酷了。

商湯科技在AIGC領域的佈局非常積極,從底層基礎設施到上層應用都有涉及,特別是圖像生成和可控生成方面有很強的技術積累。看到他們招AIGC算法工程師就果斷投了。準備面試的時候,我重點復習了VAE和Diffusion Model的理論基礎、Stable Diffusion和ControlNet的架構設計、圖像生成的評估指標,以及視頻生成的最新進展。準備週期大概一個半月。

投遞後大概5天收到了HR電話,溝通後安排了技術一面。整個流程是三輪技術面+一輪HR面,下面詳細復盤。

面試流程復盤

一面:生成模型基礎+VAE/Diffusion(約65分鐘)

一面面試官是個做生成模型多年的研究員,問題從基礎理論到最新進展都覆蓋了,節奏很快。

問題1:VAE的原理是什麼?它和普通自編碼器有什麼區別?

我說VAE的核心思想是變分推斷——用神經網絡參數化的分佈q(z|x)去近似真實的後驗分佈p(z|x)。和普通自編碼器的區別:普通自編碼器學的是確定性映射,編碼器輸出是一個確定的隱向量;VAE學的是概率映射,編碼器輸出的是分佈的參數(均值和方差),然後從分佈中採樣得到隱向量。這帶來了兩個好處:一是生成的隱空間是連續的,可以在隱空間中做插值生成有意義的中間結果;二是通過KL散度約束隱空間接近標準正態分佈,使得隨機採樣也能生成合理的輸出。面試官追問了重參數化技巧,我說就是把採樣操作從z ~ N(μ, σ²)變成z = μ + σ * ε,其中ε ~ N(0, I),這樣梯度就能通過μ和σ反向傳播了。

問題2:Diffusion Model的前向過程和反向過程分別是什麼?

我說前向過程是逐步給數據加噪聲,直到變成純高斯噪聲。具體來說,x_t = √(1-β_t) * x_{t-1} + √(β_t) * ε_t,其中β_t是噪聲調度,ε_t是標準高斯噪聲。反向過程是學習如何從噪聲中逐步恢復數據,用一個神經網絡預測每一步的噪聲,然後逐步去噪。面試官追問了為什麼Diffusion Model比GAN訓練更穩定,我說因為Diffusion Model的優化目標是簡單的去噪損失(預測噪聲和真實噪聲的MSE),不像GAN有複雜的對抗訓練動態和模式崩潰問題。

問題3:DDPM和DDIM的區別是什麼?為什麼DDIM能加速採樣?

我說DDPM的採樣是隨機的馬爾可夫鏈過程,每一步都需要從噪聲分佈中採樣,所以需要很多步(通常1000步)才能生成高質量圖像。DDIM的核心發現是:反向過程不一定要是隨機的,可以用確定性的ODE來替代SDE做採樣。具體來說,DDIM把DDPM的隨機採樣過程改成了確定性的映射,這樣可以用更少的步數(20-50步)生成和DDPM質量相當的圖像。面試官追問了DDIM的數學推導,我講了從SDE到ODE的轉化過程,以及η參數控制隨機性的機制。

問題4:Stable Diffusion的架構是怎樣的?為什麼用Latent Diffusion而不是Pixel Diffusion?

我說Stable Diffusion的核心架構包括三個部分:VAE編碼器(把圖像壓縮到低維隱空間)、U-Net(在隱空間中做去噪)、CLIP文本編碼器(把文本條件注入U-Net)。用Latent Diffusion而不是Pixel Diffusion的原因:一是計算效率,在隱空間(如64x64)做擴散比在像素空間(如512x512)快得多;二是隱空間的語義更緊湊,去噪過程更容易學習;三是節省內存,隱空間的特徵圖小很多。面試官追問了VAE的壓縮比選擇,我說通常8倍下採樣(512→64),壓縮比太大会丟失細節,太小則計算量降不下來。

編程題:實現一個簡單的前向擴散過程,輸入原始圖像,輸出加噪後的圖像。

我實現了DDPM的前向過程:根據噪聲調度β_t,逐步加噪聲。利用重參數化技巧,可以直接從x_0採樣任意時刻的x_t,不需要逐步迭代。面試官讓我推導了q(x_t|x_0)的閉式解,我寫了x_t = √(ᾱ_t) * x_0 + √(1-ᾱ_t) * ε,其中ᾱ_t = ∏(1-β_s)。

二面:圖像生成+可控生成(約75分鐘)

二面面試官是AIGC方向的資深研究員,問題非常前沿,涉及很多最新的研究成果。

問題1:Classifier-Free Guidance(CFG)的原理是什麼?它為什麼能提升生成質量?

我說CFG的核心思想是在推理時同時使用條件生成和無條件生成的結果來增強條件信號。具體來說,訓練時以一定概率丟棄條件信息(比如10%的概率不輸入文本),讓模型同時學習條件生成和無條件生成。推理時,最終輸出 = 無條件輸出 + w * (條件輸出 - 無條件輸出),其中w是引導強度。w越大,生成結果越符合條件但多樣性越低。CFG能提升質量的原因是它放大了條件信號的影響,讓模型更「專注」於滿足給定的條件。面試官追問了w的典型取值範圍,我說通常7-15,太低條件不夠強,太高會出現過飽和和偽影。

問題2:ControlNet的架構是怎樣的?它為什麼能做到精確的空間控制?

我說ControlNet的核心思路是「鎖定預訓練權重+添加可訓練副本」。具體來說,把Stable Diffusion的U-Net的編碼器部分複製一份,用零卷積連接到原始U-Net。訓練時只更新複製的部分和零卷積,原始權重保持不變。控制信號(如邊緣圖、深度圖、姿態圖)輸入到複製的編碼器中,通過零卷積注入原始U-Net。零卷積的作用是:訓練初期輸出為零,不影響預訓練模型的生成能力;隨著訓練進行,逐漸學習如何將控制信號注入。面試官追問了為什麼用零卷積而不是普通卷積,我說零卷積保證了訓練開始時ControlNet不破壞預訓練模型的能力,如果用普通卷積初始化,隨機權重會立即破壞預訓練模型的輸出。

問題3:除了ControlNet,還有哪些可控生成的方法?各有什麼優缺點?

我說了以下幾種:一,T2I-Adapter,和ControlNet類似但更輕量,只在U-Net的特定層注入控制信號;二,Prompt Engineering,通過精心設計文本提示來引導生成,靈活但不夠精確;三,Inpainting,在指定區域重新生成,適合局部編輯;四,IP-Adapter,用參考圖像作為條件,實現圖像風格的遷移;五,DragGAN/DragDiffusion,通過拖拽交互點來控制生成,直觀但只能做形變控制。面試官對IP-Adapter很感興趣,追問了它的實現,我說IP-Adapter用解耦的交叉注意力機制,把圖像特徵和文本特徵分別通過不同的交叉注意力層注入U-Net,實現了圖像和文本條件的靈活組合。

問題4:圖像生成的評估指標有哪些?FID和IS各有什麼局限性?

我說IS衡量生成圖像的類別明確性和多樣性,值越大越好。FID衡量生成圖像分佈和真實圖像分佈的距離,值越小越好。兩者的局限性:IS只關注類別層面,不關注圖像質量細節;FID需要大量樣本才能可靠估計,而且對Inception網絡的選擇敏感;兩者都無法評估生成圖像和給定條件的一致性。所以現在還會用CLIP Score來評估文本-圖像的一致性。面試官追問了有沒有更好的評估方法,我說目前沒有完美的自動評估指標,人工評估仍然是最可靠的,但成本太高。

編程題:實現一個簡單的CFG推理流程,給定條件模型輸出和無條件模型輸出,計算CFG引導後的結果。

這道題比較簡單,我實現了CFG的核心公式:output = uncond_output + guidance_scale * (cond_output - uncond_output)。面試官讓我分析了guidance_scale對生成效果的影響,我說scale太低條件不夠強,太高會導致過飽和、對比度過高和細節偽影。

三面:項目深挖+視頻生成(約90分鐘)

三面是部門技術負責人面的,風格更加開放,側重於項目經驗和前沿方向的理解。

問題1:你在AIGC項目中做過的最有挑戰性的工作是什麼?

我講了一個電商商品圖生成的項目:給定一張商品的白底圖,生成各種場景下的商品效果圖。挑戰在於:一是要保證商品外觀(顏色、紋理、logo)完全一致,不能有任何變形;二是生成的場景要自然、光照合理;三是生成速度要快,商家等不了太久。我的方案:用Stable Diffusion + ControlNet(Canny邊緣控制+深度圖控制)保證商品輪廓不變,用IP-Adapter注入商品外觀特徵保證顏色和紋理一致,用Inpainting只在背景區域生成場景。最難的點是外觀一致性——純靠IP-Adapter的參考圖像注入,商品logo和文字還是會變形。後來我加了一個後處理模組:用原圖的logo區域做mask,把原始logo貼回去,邊緣用泊松融合平滑過渡。最終效果:外觀一致性從78%提升到95%,單張生成時間約3秒。

問題2:視頻生成和圖像生成的主要區別是什麼?有哪些額外的挑戰?

我說視頻生成比圖像生成多了時間維度,主要挑戰有:一是時序一致性,相鄰幀之間要平滑過渡,不能閃爍;二是運動合理性,生成的運動要符合物理規律;三是計算量,視頻的數據量比圖像大得多,訓練和推理都很昂貴。目前的視頻生成方案主要有:基於圖像模型擴展(如SVD,在Stable Diffusion基礎上加時間注意力層)、基於3D擴散(直接在時空維度做擴散)、基於自回歸(逐幀生成,前面幀作為條件)。面試官追問了時序一致性怎麼保證,我說SVD用了時間注意力層讓相鄰幀交互,訓練時用視頻數據而不是單幀圖像,推理時用幀間噪聲關聯來保證一致性。

問題3:LoRA和全量微調各有什麼優缺點?在什麼場景下用哪種?

我說LoRA的核心是在原始權重矩陣旁邊加一個低秩分解矩陣(A*B),只訓練A和B而凍結原始權重。優點是參數量小(通常只有原模型的0.1-1%)、訓練快、可以隨時切換不同LoRA;缺點是表達能力有限,對於和預訓練數據差異大的任務效果不如全量微調。全量微調的優點是表達能力強,能學到更複雜的模式;缺點是參數量大、訓練慢、容易過擬合、不方便多任務切換。在實際應用中,如果只是做風格遷移或小範圍適配,LoRA就夠了;如果要大幅改變模型的行為(如從文生圖變成文生視頻),需要全量微調。

問題4:你對商湯AIGC的技術方向有什麼了解?你覺得AIGC的未來在哪裡?

我說商湯在AIGC上的佈局很全面,從底層的大模型基礎設施到中間層的生成模型,再到上層的應用,形成了完整的閉環。我覺得AIGC的未來有三個方向:一是統一生成模型,一個模型同時支持文生圖、圖生圖、文生視頻、圖生3D等多種任務;二是極致可控性,用戶可以像導演一樣精確控制生成的每個細節;三是AIGC+3D,從2D生成走向3D生成,為元宇宙和數字孿生提供內容。面試官對3D生成很感興趣,說商湯也在做相關研究。

真題匯總

1. VAE原理及與普通自編碼器的區別

2. Diffusion Model前向與反向過程

3. DDPM與DDIM的區別及加速原理

4. Stable Diffusion架構與Latent Diffusion優勢

5. 前向擴散過程實現

6. Classifier-Free Guidance原理與作用

7. ControlNet架構與空間控制機制

8. 可控生成方法對比

9. 圖像生成評估指標及局限性

10. CFG推理流程實現

11. 視頻生成與圖像生成的區別

12. LoRA與全量微調對比

心得建議

商湯的AIGC面試非常前沿,面試官對最新技術的了解很深,問題都很有深度。幾點建議:

1. Diffusion Model的數學基礎要扎實:不是只記住流程就行,前向過程的閉式解、反向過程的推導、CFG的數學原理這些都要能推導。建議把DDPM和DDIM的論文精讀一遍,公式自己推一遍。

2. 跟蹤最新進展:AIGC這個領域發展太快了,面試官會問很多最新的工作。ControlNet、IP-Adapter、SVD這些都要了解。建議關注CVPR、ICCV、NeurIPS的最新論文,以及Stability AI、Runway等公司的技術博客。

3. 實踐經驗很重要:商湯很看重你有沒有實際做過AIGC項目。如果你能講出自己微調Stable Diffusion、訓練ControlNet或者做圖像生成的工程經驗,會非常加分。建議自己動手做一兩個項目。

4. 準備開放性問題:三面會問你「怎麼看」「覺得未來在哪裡」這類問題,需要有自己的思考。建議多關注AIGC的行業動態,形成自己的判斷。

FAQ

Q:商湯AIGC算法工程師的工作內容是什麼?

A:主要負責圖像/視頻生成模型的研發和優化,涉及模型架構設計、訓練策略優化、可控生成方法研究等。需要同時具備算法研究和工程落地能力。

Q:面試對數學要求高嗎?

A:較高,Diffusion Model的數學推導是必考項。建議把概率論、隨機過程和變分推斷的基礎知識復習一遍。

Q:沒有AIGC經驗可以投嗎?

A:如果有深度學習生成模型(GAN、VAE等)的經驗,轉AIGC是可以的。建議先跑通一個Stable Diffusion的微調demo,了解基本的訓練流程。

Q:商湯AIGC的技術棧是什麼?

A:訓練框架用PyTorch,基礎模型用Stable Diffusion系列,可控生成用ControlNet/IP-Adapter,部署用TensorRT和自研推理引擎,數據管線用Python。

Q:面試結果多久出來?

A:我是一面後4天約二面,二面後3天約三面,三面後一週出結果,整個流程大概兩週。

#商湯科技#AIGC#Diffusion Model#图像生成#可控生成#面試經歷