如何使用PEFT库中LoRA?来自:AiGC面试宝典宁静致远2024年01月28日10:12一、前言本文章主要介绍使用LoRA对大模型进行高效参数微调,涉及内容:涉及框架•如何使用PEFT库中LoRA?•一、前言•二、如何配置LoraConfig?•三、模型加入PEFT策略•3.1模型加载策略有哪些?•3.2模型显存占用的部分有哪些?•3.3模型显存占用优化策略?•3.3.18bit量化优化策略?•3.3.2梯度检查优化策略?•3.4如何向模型加入PEFT策略?•四、PEFT库中LoRA模块代码介绍•4.1PEFT库中LoRA模块整体实现思路•4.2PEFT库中LoRA模块_find_and_replace()实现思路•4.3PEFT库中Lora层的实现思路•4.3.1基类LoraLayer实现•4.3.2Linear实现•五、使用LoRA对大模型进行高效参数微调,如何进行存储?•六、使用LoRA对大模型进行推理,如何进行加载?•七、huggingface大模型如何加载多个LoRA并随时切换?•参考1.PEFT库中LoRA模块使用;2.PEFT库中LoRA模块代码介绍;3.在推理时如何先进行weight的合并在加载模型进行推理;#以下配置可能会随时间变化,出了问题就去issue里面刨吧#要相信你不是唯一一个大冤种!accelerateappdirsloralibbitsandbytesblackblack[jupyter]datasetsfiretransformers>=4.28.0扫码加查看更多二、如何配置LoraConfig?注意:target_modules中的作用目标名在不同模型中的名字是不一样的。query_key_value是在ChatGLM中的名字三、模型加入PEFT策略3.1模型加载策略有哪些?模型加载虽然很简单,这里涉及到2个时间换空间的大模型显存压缩技巧,主要说下load_in_8bit和prepare_model_for_int8_training。git+https://github.com/huggingface/peft.gitsentencepiecegradiowandbcpm-kernel#设置超参数及配置LORA_R=8LORA_ALPHA=16LORA_DROPOUT=0.05TARGET_MODULES=["q_proj","v_proj",]config=LoraConfig(r=LORA_R,lora_alpha=LORA_ALPHA,target_modules=TARGET_MODULES,lora_dropout=LORA_DROPOUT,bias="none",task_type="CAUSAL_LM",)•参数介绍:•r:lora的秩,矩阵A和矩阵B相连接的宽度,r<
发表评论取消回复