Lora微调LLM报错合集

文章讲述了在使用peft微调Transformer模型时遇到的四个问题:adapter_model.bin未保存、loss不下降、预测时的IndexError以及环境依赖问题。给出了相应的解决方案,如设置保存策略、调整模型参数和处理CUDA设备映射等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Transformers.Trainer + peft 微调LLM

1. 没有保存adapter_model.bin

 导致预测的时候, 报错 Please check that the file adapter_model.bin is present at Peft...

解决办法:

# 1. Trainer保存时没保存.bin, 在构造TrainingArguments参数时控制
args = TrainingArguments(
    output_dir=OUTPUT_DIR, # checkpoint的存储目录
    per_device_train_batch_size=BATCH_SIZE, # 单设备上的batch size
    gradient_accumulation_steps=GRADIENT_ACCUMULATION_STEPS, # 梯度累加的step数
    warmup_steps=100,
    num_train_epochs=EPOCHS,
    learning_rate=LEARNING_RATE,
    fp16=True, # 使用混合精度训练
    logging_steps=1,
    evaluation_strategy="no", # 不进行评估
    save_strategy="steps",
    save_steps=1000, # 保存checkpoint的step数, 这个保存很耗时间
    save_total_limit=5, # 最多保存5个checkpoint
    deepspeed=DS_CONFIG,
    remove_unused_columns=False,
    save_safetensors=False # 这个参数控制保存格式&#
<think>好的,我现在需要处理用户关于研究生复试中计算机能力相关面试题的问题。用户提到的技术包括Python、MATLAB、PyTorch、Linux、Git、Hugging Face Transformers、BERT、GPT、RAG、Agent、MetaGPT、LangChain、MOE、LLaMA、LoRA等。我需要先针对每个技术点,思考可能的面试问题,并组织合理的答案。同时,要确保回答结构清晰,符合用户的要求,比如使用正确的中文和LaTeX格式,以及生成相关问题。 首先,Python方面,常见的问题可能涉及基础语法、数据结构、装饰器、GIL等。比如解释列表和元组的区别,或者装饰器的作用。需要简明扼要地给出答案,并举例代码。 接下来是MATLAB,问题可能集中在矩阵操作、仿真应用、与其他语言的区别。例如,如何读取Excel数据,或者MATLAB在信号处理中的应用。 PyTorch方面,可能会问动态计算图、张量操作、自动求导等。比如解释动态计算图和静态计算图的区别,或者如何自定义损失函数。 Linux的常见问题包括基本命令、权限管理、进程查看等。例如,如何查找文件,或者如何解压.tar.gz文件。 Git的问题可能涉及基本命令、分支管理、冲突解决。比如解释git fetch和git pull的区别,或者如何撤销提交。 Hugging Face Transformers库的问题可能涉及预训练模型的使用、微调方法。例如,如何用BERT做文本分类,或者迁移学习的优势。 BERT和GPT的区别通常是重点,比如架构(编码器vs解码器)、预训练任务的不同。 RAG(检索增强生成)可能涉及工作原理和应用场景,比如结合检索和生成的优势。 Agent和MetaGPT可能涉及概念、多智能体协作的实现。需要解释其基本思想和工作流程。 LangChain的问题可能围绕其用途,比如如何集成不同模块构建应用。 MOE(混合专家模型)需要解释其结构,比如如何分配输入到不同专家。 LLaMA和LoRA方面,可能问模型特点及参数高效微调方法,比如LoRA如何减少训练参数。 需要确保每个答案准确,并引用相关文献或资料。同时,生成的相关问题要覆盖各个技术点,帮助用户全面准备。 现在,检查是否有遗漏的技术点,如Hugging Face中的Transformer库、Git的高级操作、PyTorch的动态图细节等。确保每个问题都有对应的答案,并且答案结构清晰,使用正确的格式,如代码块用反引号,数学公式用$...$或$$...$$。最后,生成的相关问题要自然,覆盖可能的考察方向。</think>### 研究生复试常见计算机能力面试题与参考答案 --- #### **Python** **问题1:解释Python中列表与元组的区别** 列表可变(支持增删改),内存分配动态;元组不可变,哈希化后可作字典键。例如: ```python a = [1,2] # 列表 a.append(3) # 合法 b = (1,2) b[0] = 3 # 报错 ``` **问题2:装饰器的作用是什么?写一个计时装饰器** 装饰器用于扩展函数行为(如日志、计时)。示例: ```python import time def timer(func): def wrapper(*args): start = time.time() result = func(*args) print(f"耗时: {time.time()-start:.2f}s") return result return wrapper @timer def my_func(): time.sleep(1) ``` --- #### **PyTorch** **问题1:动态计算图与静态计算图的区别** 动态图(如PyTorch)每次前向传播即时构建图,灵活性高;静态图(如TensorFlow)需预先定义,适合优化部署[^1]。 **问题2:如何自定义损失函数?** 继承`torch.nn.Module`并实现`forward`方法: ```python class CustomLoss(nn.Module): def forward(self, pred, target): return torch.mean((pred - target)**2 + 0.1 * torch.abs(pred)) ``` --- #### **Git** **问题1:`git merge`与`git rebase`的区别** - `merge`保留分支历史,生成合并提交 - `rebase`将当前分支提交“移植”到目标分支,历史线性更清晰[^2] **问题2:如何撤销最后一次提交?** ```bash git reset --soft HEAD~1 # 保留修改 git reset --hard HEAD~1 # 彻底删除 ``` --- #### **Hugging Face Transformers** **问题1:如何用BERT做文本分类?** 加载预训练模型并添加分类头: ```python from transformers import BertTokenizer, BertForSequenceClassification model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2) tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') ``` --- #### **RAG(检索增强生成)** **问题:解释RAG的工作原理** RAG结合检索器(从外部知识库获取文档)与生成器(如GPT),生成答案时引用检索结果,提升事实准确性[^3]。 --- #### **LoRA** **问题:LoRA如何实现参数高效微调?** 通过低秩分解,在原始权重矩阵旁添加适配器层,仅训练秩分解矩阵$W=W_0 + BA$,其中$B \in \mathbb{R}^{d \times r}$, $A \in \mathbb{R}^{r \times k}$,参数量远小于全参数微调[^4]。 --- #### **LangChain** **问题:LangChain的核心功能是什么?** 提供模块化组件(文档加载、链式调用、记忆管理)和预定义链(如QA链),支持快速搭建基于LLM的应用。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值