商汤科技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散度约束隐空间接近标准正态分布,使得随机采样也能生成合理的输出。面试官追问了重参数化技巧(Reparameterization Trick),我说就是把采样操作从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的编码器部分复制一份,用零卷积(zero convolution)连接到原始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(Inception Score)衡量生成图像的类别明确性和多样性,值越大越好。FID(Fréchet Inception Distance)衡量生成图像分布和真实图像分布的距离,值越小越好。两者的局限性: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上的布局很全面,从底层的大模型基础设施(SenseCore算力中心)到中间层的生成模型(日日新大模型),再到上层的应用(商量、秒画等),形成了完整的闭环。我觉得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#图像生成#可控生成#面试经历