淘天 大模型开发一面

1. FLUX 的结构、它属于什么生成模型、优势是什么

FLUX 本质上还是一类文本到图像生成模型,但它和早期单纯依赖 U-Net 的扩散路线相比,更强调基于 Transformer 的统一建模能力。它通常会把图像 latent、文本条件以及时间步信息一起送进 Transformer 模块,让模型在更统一的 token 空间里做跨模态交互。这样做的一个直接好处是模型容量更容易扩展,文本理解和图像细节控制也更强。

从生成机制看,它依然属于连续生成模型,只不过在网络结构和训练目标上比传统 diffusion pipeline 更现代。它的优势主要有三个:第一,文本条件理解更强,复杂 prompt 下的语义对齐更好;第二,Transformer 结构更适合吃大数据和大参数量,扩展性更强;第三,在高分辨率和复杂构图场景下,整体生成质量和一致性通常更稳定。缺点也很明显,就是训练和推理成本都不低,对显存、数据和工程优化要求更高。

2. SD3 的架构和生成原理,Flow Matching 是什么

SD3 的一个核心变化是从传统噪声预测扩散框架,进一步转向更适合连续轨迹建模的 flow matching 思路。传统 diffusion 通常是在不同噪声步长上学习如何去噪,而 flow matching 更像是直接学习从一个简单分布到目标数据分布的连续变换速度场。你可以把它理解成模型不是只学“怎么去掉噪声”,而是在学“样本应该沿着什么路径从初始状态流动到真实样本”。

架构层面,SD3 通常会结合更强的文本编码器、更大的 Transformer 主干以及 latent 空间生成方式。它依然会先在 VAE latent 空间里生成,再通过解码器还原到图像空间。相比老版本扩散模型,flow matching 的好处是训练目标更统一,采样器设计空间更大,有时能用更少步数得到不错效果。它并不是完全否定 diffusion,而是在生成轨迹建模上更强调连续动力系统的视角。

3. VQ-VAE 使用的损失函数和训练过程

VQ-VAE 的核心是先用 encoder 把输入映射到连续 latent,再把 latent 量化到一个离散 codebook 中的最近向量,最后用 decoder 重建输入。它的关键不只是重建,而是把连续表示变成离散表示,这样后面可以更方便做生成建模。

它的损失一般包括三部分。第一部分是重建损失,衡量 decoder 还原出来的结果和原始输入差多少,图像里常用 L2 或感知损失。第二部分是 codebook loss,用来更新码本向量,让码本向 encoder 输出靠近。第三部分是 commitment loss,用来约束 encoder 输出不要来回漂移太大,而是稳定地贴近选中的离散码字。形式上常写成:

[L = L{rec} + |sg[z_e(x)] - e|2^2 + \beta |z_e(x) - sg[e]|_2^2]

其中 (z_e(x)) 是 encoder 输出,(e) 是选中的码本向量,(sg) 表示 stop-gradient。训练流程通常是输入先过 encoder,做最近邻量化,再过 decoder 重建,同时分别优化重建项、码本项和 commitment 项。

import torch
import torch.nn.functional as F

def vq_vae_loss(x, x_recon, z_e, z_q, beta=0.25):
    recon_loss = F.mse_loss(x_recon, x)
    codebook_loss = F.mse_loss(z_q, z_e.detach())
    commit_loss = F.mse_loss(z_e, z_q.detach())
    return recon_loss + codebook_loss + beta * commit_loss

4. 如果发现大模型输出你并不满意,应该如何调整

先不要一上来就改模型,通常先排查问题到底出在输入、检索、prompt、采样参数,还是模型本身。很多时候输出不好并不是模型能力不够,而是任务定义不清、上下文证据不足或者解码参数太激进。比如 temperature 太高容易发散,top_p 太大容易胡说,max_new_tokens 太短又容易答不完整。

如果是生成质量问题,第一层通常先调 prompt,把角色、任务边界、输出格式和约束条件写清楚;第二层调上下文,把无关内容删掉,把关键证据前置;第三层调 generate 参数,比如降低 temperature、限制重复、调整 top_p;第四层才考虑 SFT 或偏好对齐去改模型行为。如果是多轮任务,还要看中间状态是否被污染,很多回答不满意其实是上下文已经歪了。

5. 你在 Prompt 工程和上下文优化上有什么经验

Prompt 工程真正有用的地方不是“写得花”,而是把任务条件约束得足够明确。比较稳定的方法一般包括角色定义、任务目标、输入结构、输出 schema、限制条件和失败策略。尤其在复杂任务里,要求模型“如果信息不足就明确说不足”“如果有多个候选就按固定格式输出”,往往比单纯让它“认真思考”有效得多。

上下文优化比 prompt 本身更重要。因为模型在长上下文里不是简单全都看懂,而是会被噪声分散注意力。实践里通常会做三件事:先把最相关的信息放前面,再把无关内容删掉,然后把结构化证据显式标注来源和字段名。对于多轮对话,最好不要把所有历史原样拼接,而是保留关键状态和压缩摘要。真正好的上下文不是越多越好,而是信息密度高、层次清楚、和任务强相关。

6. BLIP 的三个损失函数分别是什么,数据是怎样清洗的

BLIP 里比较经典的是三类目标。第一类是图文对比学习损失,也就是 image-text contrastive loss,用来拉近匹配图文对、拉远不匹配样本,学跨模态对齐。第二类是 image-text matching loss,相当于一个二分类任务,判断图文是否匹配,它比单纯对比学习更关注

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论

相关推荐

点赞 评论 收藏
分享
一、自我介绍二、实习相关八股1. 实习业务场景负责大模型对话对齐、指令微调、强化学习优化,提升模型生成准确性、合规性与指令遵循度,落地垂类对话/问答业务。2. SFT数据筛选、采样及处理3. 选择GRPO的原因、优化目标及数学原理- 选型原因:相比PPO显存占用低、无需价值网络、训练更稳定,对齐效率高- 优化目标:最大化模型生成优势,约束KL散度防止策略突变- 原理:分组优势归一化、截断策略比率、近端约束,降低训练方差4. 奖励函数设计(重点)围绕有用性、准确性、合规性、流畅性设计,分维度打分;加入KL惩罚,避免单一奖励过拟合,区分正负奖励权重。5. 判断RL训练质量达标方法- 奖励值收敛、KL散度稳定;- 离线评测:指令遵循率、幻觉率达标;- 人工抽检生成内容,无退化、无套路化输出6. 是否遇到Reward Hacking遇到过,模型生成空洞话术、固定模板刻意刷高奖励值。7. 其他奖励作弊类型刻意迎合奖励规则、答非所问、重复安全话术、回避核心问题、策略坍缩同质化输出。8. PPO和DPO了解- PPO:在线强化学习,近端策略优化,带价值网络,训练复杂度高- DPO:离线偏好优化,基于成对偏好数据,无需交互采样,训练简单稳定三、基础八股1. Attention计算时间复杂度标准自注意力:O(n²d)(n为序列长度,d为特征维度)2. KV Cache原理推理时缓存历史token的KV矩阵,避免重复计算,降低算力开销,提升推理速度。3. GQA、MLA原理- GQA:分组查询注意力,Q分组共享KV,平衡推理速度与效果- MLA:融合局部+全局注意力,适配长上下文,降低显存占用4. vLLM原理基于PagedAttention分页管理KV Cache,提升显存利用率,支持高并发推理。5. Flash Attention原理分块计算注意力,优化显存IO,减少HBM访问,提速同时降低显存开销。6. 稀疏注意力原理仅计算局部/关联token注意力,舍弃全局无关token,将复杂度降至O(n),适配长文本。7. 模型推理慢排查思路检查序列长度、batch大小;确认KV Cache、量化、FlashAttention开启;排查GPU显存、算子优化问题。四、编程题1. rand7()实现rand10()拒绝采样:rand7()*rand7()生成1-49数,保留1-40,映射为1-10,超出则重新生成。2. 浮点数组取整最小变化和贪心思路:每个数选上/下取整中差值更小的,累加最小总误差。3. 最长无重复子串
查看19道真题和解析
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务