资讯动态

LLM 微调工程师 30 道高频题:从 LoRA 到 QLoRA 到 DPO(带答案与代码)

发布时间:2026/9/3 16:38:14 来源:尧图企业网站定制
30 题覆盖 80% LLM 微调面试考点——我面试 50 微调候选人后整理的比 LoRA 论文更实用。每题都附答案 代码最后给一份按LoRA / QLoRA / DPO分层的复习清单。题型分布模块题数难度占比微调基础Q1-Q88易-中27%LoRA / QLoRAQ9-Q168中-难27%数据 / 训练Q17-Q226中-难20%偏好对齐 DPO / RLHFQ23-Q264难13%工程化 / 部署Q27-Q304中-难13%模块 1微调基础Q1-Q8Q1什么是 LLM 微调为什么需要微调答微调是在预训练模型上用领域数据继续训练让模型适配特定任务。微调 vs Prompt 工程维度微调Prompt 工程改的是模型权重输入文本成本训练贵推理便宜训练零成本推理贵适用数据量足、长期使用快速验证、小数据效果上限高中Q2全参数微调 vs LoRA 的区别维度全参数LoRA可训练参数100%0.1-1%显存10-20x1x训练时间长短效果差距100%90-95%适用数据 100w数据 10wQ3数据量多少适合微调答任务数据量风格微调1k-10k领域适配10k-100k任务专精100k-1M全量重训 1M少于 1k 样本用 Prompt 工程比微调更划算。Q4微调用的优化器有哪些优化器适用AdamW全参数微调标配SGD极少用不稳定Lion新优化器2023 出现Adafactor显存敏感场景Q5学习率怎么选答全参数微调1e-5 ~ 5e-5LoRA1e-4 ~ 5e-4学习率 warmup前 10% 步数从 0 升到目标值cosine decay 调度# myaifast-1305-q05-lr.pyfromtransformersimportTrainingArguments argsTrainingArguments(learning_rate2e-4,# LoRA 推荐lr_scheduler_typecosine,warmup_ratio0.1,)Q6batch size 怎么选答显存推荐 batch size梯度累积24 GB4840 GB8480 GB162经验法则有效 batch size 32batch × grad_accum_steps。Q7训练多少 epoch答风格微调3-5 epoch领域适配1-3 epoch任务专精1-2 epoch超过 10 epoch 必过拟合Q8如何判断过拟合指标表现Train Loss持续下降Eval Loss先降后升间隔1-2 epoch 后 Eval Loss 不降 过拟合应对早停 / 加 dropout / 加正则 / 数据增强。模块 2LoRA / QLoRAQ9-Q16Q9LoRA 的核心原理答LoRALow-Rank Adaptation冻结原模型权重在旁路添加低秩矩阵BAW_new W_frozen BA 其中 B ∈ R^{d×r}, A ∈ R^{r×k}, r min(d, k)可训练参数从d×k降到r×(dk)。Q10LoRA rank 怎么选rank可训练参数适用4极少风格微调8少任务微调16中通用首选32多复杂任务64多接近全参数经验值rank16 是甜蜜点。Q11LoRA 作用在哪些层答主要作用在 attention 层的q_proj、v_proj性价比最高。可选k_proj、o_proj甚至 FFN 层。# myaifast-1305-q11-lora-target.pyfrompeftimportLoraConfig configLoraConfig(r16,lora_alpha32,# 通常 2*rtarget_modules[q_proj,v_proj],# 核心lora_dropout0.05,biasnone,task_typeCAUSAL_LM,)Q12QLoRA 和 LoRA 的区别维度LoRAQLoRA原模型FP164-bit NF4显存1x0.3x训练速度1x0.7x效果100%99%QLoRA 的核心把模型量化到 4-bit LoRA 微调显存降 70%。Q13QLoRA 的 NF4 量化是什么答NF44-bit NormalFloat是 QLoRA 论文提出的 4-bit 数据类型专门为正态分布权重优化。比 FP4 更准比 INT4 更适合 LLM 权重分布。# myaifast-1305-q13-qlora.pyfromtransformersimportBitsAndBytesConfigfrompeftimportLoraConfig,get_peft_model,prepare_model_for_kbit_trainingfromtransformersimportAutoModelForCausalLM# 1. 4-bit 量化配置bnb_configBitsAndBytesConfig(load_in_4bitTrue,bnb_4bit_quant_typenf4,bnb_4bit_compute_dtypetorch.float16,bnb_4bit_use_double_quantTrue,)# 2. 加载量化模型modelAutoModelForCausalLM.from_pretrained(deepseek-ai/deepseek-v3,quantization_configbnb_config,device_mapauto,)# 3. 准备 k-bit 训练modelprepare_model_for_kbit_training(model)# 4. 加 LoRAlora_configLoraConfig(r16,lora_alpha32,target_modules[q_proj,v_proj])modelget_peft_model(model,lora_config)Q14LoRA 推理怎么合并权重# myaifast-1305-q14-merge.pyfrompeftimportPeftModel# 加载原模型 LoRA 权重base_modelAutoModelForCausalLM.from_pretrained(base-model)peft_modelPeftModel.from_pretrained(base_model,lora-weights)# 合并 LoRA 到原模型merged_modelpeft_model.merge_and_unload()# 保存合并后的模型merged_model.save_pretrained(merged-model)推理延迟合并后推理延迟 原模型延迟无额外开销。Q15LoRA 和 Adapter 区别维度LoRAAdapter插入位置旁路线性相加串行前馈层推理延迟0可合并有不可合并显存低中LoRA 现在主流——可合并到原模型推理零开销。Q16完整 LoRA 微调代码# myaifast-1305-q16-lora-full.pyfromtransformersimportAutoModelForCausalLM,AutoTokenizer,TrainingArguments,TrainerfrompeftimportLoraConfig,get_peft_modelfromdatasetsimportload_dataset# 1. 加载模型和分词器model_namedeepseek-ai/deepseek-v3tokenizerAutoTokenizer.from_pretrained(model_name)modelAutoModelForCausalLM.from_pretrained(model_name)# 2. 配置 LoRAlora_configLoraConfig(r16,lora_alpha32,target_modules[q_proj,v_proj],lora_dropout0.05,biasnone,task_typeCAUSAL_LM,)modelget_peft_model(model,lora_config)model.print_trainable_parameters()# 显示可训练参数占比# 3. 准备数据datasetload_dataset(json,data_filestrain.jsonl,splittrain)defformat_example(example):textf### 问题{example[instruction]}\n### 回答{example[output]}returntokenizer(text,truncationTrue,max_length512)datasetdataset.map(format_example)# 4. 训练argsTrainingArguments(output_dir./lora-output,num_train_epochs3,per_device_train_batch_size4,gradient_accumulation_steps8,learning_rate2e-4,bf16True,logging_steps10,save_strategyepoch,)trainerTrainer(modelmodel,argsargs,train_datasetdataset)trainer.train()# 5. 保存 LoRAmodel.save_pretrained(./lora-weights)模块 3数据 / 训练Q17-Q22Q17微调数据怎么准备答5 个步骤清洗——去重、去噪、去敏感格式化——{instruction, input, output}三字段质量过滤——人工抽检 10%平衡——各类别样本数 ±20%划分——train/eval/test 8:1:1Q18数据增强怎么做方法适用同义改写通用回译中→英→中文本Prompt 模板变化多场景LLM 生成相似样本数据少时主动学习挑难样本分类Q19微调数据格式有哪些格式适用{instruction, output}指令微调{prompt, completion}OpenAI 风格{messages: [...]}多轮对话{input, output}任务微调Q20训练时怎么监控指标工具LossTensorBoard / WBGPU 利用率nvidia-smi显存nvidia-smi学习率TensorBoardEval Loss训练时同步反共识监控 Loss 不够要监控Eval Loss 人工评估。Loss 降但生成质量差是过拟合。Q21训练中断了怎么恢复# myaifast-1305-q21-resume.pyfromtransformersimportTrainingArguments argsTrainingArguments(output_dir./lora-output,resume_from_checkpointTrue,# 自动从最新 checkpoint 恢复save_strategysteps,save_steps500,)trainerTrainer(modelmodel,argsargs,train_datasetdataset)trainer.train(resume_from_checkpointTrue)建议每 500 步保存一次 checkpoint保留最近 3 个。Q22DeepSpeed / FSDP 怎么选维度DeepSpeedFSDP显存优化ZeRO-3全分片速度中快配置复杂度中低PyTorch 原生适用单机多卡 / 多机多机训练推荐单机多卡用 DeepSpeed多机训练用 FSDP。模块 4偏好对齐Q23-Q26Q23什么是 RLHF答RLHFReinforcement Learning from Human Feedback三步训练 Reward Model基于人类偏好用 PPO 强化学习优化 LLM平衡 KL 散度不让模型偏离太远Q24什么是 DPO和 RLHF 区别维度RLHFDPO训练步骤3 步RM PPO1 步直接训练实现复杂度高需要 RM低一行 loss数据效率中高稳定性不稳定PPO 抖动稳定效果⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐DPO 优先——2024 年后几乎所有偏好对齐都用 DPO。Q25DPO 完整代码# myaifast-1305-q25-dpo.pyfromtrlimportDPOTrainer,DPOConfigfromtransformersimportAutoModelForCausalLM,AutoTokenizerfromdatasetsimportload_dataset# 1. 加载模型modelAutoModelForCausalLM.from_pretrained(deepseek-ai/deepseek-v3)tokenizerAutoTokenizer.from_pretrained(deepseek-ai/deepseek-v3)# 2. 准备偏好数据chosen vs rejecteddatasetload_dataset(json,data_filespreference_data.jsonl,splittrain)# 数据格式{prompt: ..., chosen: ..., rejected: ...}# 3. DPO 配置configDPOConfig(output_dir./dpo-output,beta0.1,# KL 散度权重learning_rate5e-7,# 比 LoRA 低num_train_epochs1,per_device_train_batch_size2,gradient_accumulation_steps16,)# 4. 训练trainerDPOTrainer(modelmodel,ref_modelNone,# 自动用初始模型做参考argsconfig,train_datasetdataset,tokenizertokenizer,)trainer.train()Q26什么时候用 DPO 不用 LoRA场景选 DPO选 LoRA改模型输出风格✅✅改模型价值取向✅❌加新能力❌✅数据量 1k✅❌反共识DPO 不是 LoRA 的替代是补充。先 LoRA 学会能力再 DPO 调整偏好。模块 5工程化 / 部署Q27-Q30Q27微调后怎么部署部署方式适用合并权重 vLLM单 GPU 高并发LoRA 热加载多 LoRA 切换TensorRT-LLM生产极致性能llama.cppCPU / 边缘设备# myaifast-1305-q27-deploy.pyfromvllmimportLLM,SamplingParams# 合并 LoRA 后部署llmLLM(model./merged-model,tensor_parallel_size1)outputsllm.generate([麦芽AI 是什么],SamplingParams(max_tokens200))print(outputs[0].outputs[0].text)Q28LoRA 权重怎么管理答策略适用单 LoRA单一模型多 LoRA 热切换多业务线LoRA 合并部署性能优先LoRA base 分离灵活调试Q29微调效果怎么评测任务指标分类Accuracy / F1生成BLEU / ROUGE / BERTScore问答EM / F1对齐人类偏好胜率 / Alpaca Eval综合LLM-as-JudgeGPT-4 评分Q30微调工程师的核心能力答数据处理 LoRA/QLoRA 偏好对齐 部署——这 4 项覆盖 80% 工作场景。反共识克制一处很多面试题考 “PPO / RLHF 公式推导”——但80% 的微调工程师不需要从零实现 PPO需要的是用 TRL / DeepSpeed 跑通 DPO/PPO。我面试时反而会问训练数据怎么清洗、“LoRA rank 怎么选”、“DPO 数据格式是什么”这些是真正影响交付的能力。候选人答PPO 公式很溜但答不上beta 参数怎么调多半在生产里会卡壳。我面试 50 候选人后的 5 个观察跑了 50 候选人面试后我对 LLM 微调工程师招聘有 5 个深层观察观察 1候选人跑通教程≠ 能落地产线很多候选人简历写微调过 Llama面试时让他写 LoRA 配置r、alpha、target_modules都说不清。理论 90 分但实操一塌糊涂我直接淘汰。观察 2显存计算是基础能力50 候选人里能准确算出13B 模型 LoRA 微调需要多少显存的不到 30%。显存计算 模型参数 × 4FP32 × LoRA 比例 激活值 优化器状态。不会算显存 不会规划训练。观察 3数据处理经验稀缺100% 的微调项目 60% 时间花在数据上。候选人简历写做过微调但没提清洗了多少脏数据的多半没真干过。数据 模型。观察 4超参调试经验稀缺50 候选人能完整说出学习率 / batch size / warmup / scheduler四件套的不到 40 个。微调是经验科学不是理论科学——超参调不好效果差 50%。观察 5评估意识薄弱微调后怎么评估80% 候选人答看 Loss。Loss 降 ≠ 生成质量好。LLM-as-Judge、人类评估、Bad Case 分析才是真评估。30 题按面试官视角的优先级按面试官最想考察的能力排序优先级题目考察能力⭐⭐⭐⭐⭐Q9 LoRA 原理基础⭐⭐⭐⭐⭐Q12 QLoRA 显存实战⭐⭐⭐⭐⭐Q16 LoRA 代码编码⭐⭐⭐⭐⭐Q24 DPO vs RLHF取舍⭐⭐⭐⭐Q5 学习率经验⭐⭐⭐⭐Q11 LoRA target设计⭐⭐⭐⭐Q25 DPO 代码编码⭐⭐⭐⭐Q30 核心能力综合⭐⭐⭐Q17/Q22/Q27数据 / 分布式 / 部署核心建议先答好 ⭐⭐⭐⭐⭐ 的 4 题占面试通过率 80%再去练 ⭐⭐⭐⭐ 的次级题。面试常见 4 个翻车点跑 50 面试后我整理出候选人最常翻车的 4 个点翻车点 1把跑通 LoRA 教程当微调经验很多候选人简历写微调过 DeepSeek面试时问数据怎么清洗答按行读。微调的核心是数据 评估不是调包。翻车点 2把看过 LoRA 论文当原理LoRA 论文 14 页能讲清核心公式 loss 推导 适用场景的候选人不到 20%。理解原理 看过论文。翻车点 3把用过 PEFT 库当工程能力PEFT 调包谁都会但显存计算、DeepSpeed 配置、QLoRA NF4 量化、DPO 训练这些工程能力不到 30% 候选人能完整答出。翻车点 4把跑通 DPO当对齐经验DPO 训练跑通 ≠ 偏好对齐经验。偏好对齐的核心是数据质量——chosen vs rejected 标注是否合理、beta 参数怎么调、KL 散度怎么平衡。7 题必会清单时间不够就答好这 7 题Q9 LoRA 原理、Q12 QLoRA 显存、Q16 LoRA 代码、Q24 DPO vs RLHF、Q25 DPO 代码、Q26 DPO 何时用、Q30 核心能力。覆盖 80% 工作场景。30 题按主题复习清单模块重点题复习优先级基础Q1 / Q5 / Q7⭐⭐⭐⭐⭐LoRAQ9 / Q12 / Q16⭐⭐⭐⭐⭐数据Q17 / Q19 / Q22⭐⭐⭐⭐⭐对齐Q24 / Q25 / Q26⭐⭐⭐⭐工程Q27 / Q28 / Q29⭐⭐⭐⭐可复用下载包myaifast-1305文件内容myaifast-1305-lora-full.pyLoRA 微调完整代码myaifast-1305-qlora.pyQLoRA 4-bit 量化训练myaifast-1305-dpo.pyDPO 偏好对齐完整代码myaifast-1305-cheatsheet.md30 题一页速查表myaifast-1305-interview-guide.md面试官视角哪些题要深挖myaifast-1305-vram-calc.py显存计算工具13B/70B 模型下载https://www.myaifast.com 编号myaifast-1305。行动清单按模块刷题——基础 / LoRA / 数据 / 对齐 / 工程各 1 周每题跑代码——Q16 / Q25 必跑其他看代码读懂算显存——13B/70B 模型的 LoRA/QLoRA 显存拒绝死记硬背——80% 场景是用好框架不是实现算法每周 mock 一次——找朋友当面试官过 7 题算过关一句结论30 道题覆盖 80% LLM 微调考点但真正决定 offer 的是工程化能力——数据清洗、显存计算、超参调试、效果评估比LoRA 论文重要得多。本文工具实测环境为麦芽AImyaifast详见 https://www.myaifast.com

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价