环境:conda python=3.10 下载数据 使用 modelscope ,Hugging Face 需要科学上网。
大模型微调
大型模型的全面微调(Fine-tuning)涉及调整所有层和参数,以适配特定任务。
需要了解几个概念:目前分2个微调方式
- 全量微调:使用完整数据集调整所有参数,算力消耗大但能力改造彻底,适合全量指令微调(如生成对话能力)。
- 高效微调:(Parameter-Efficient Fine-Tuning,PEFT)仅调整部分参数(如LoRA),轻量化且灵活,适合特定领域优化。
PEFT包括LoRA、QLoRA、适配器调整(Adapter Tuning)、前缀调整(Prefix Tuning)、提示调整(Prompt Tuning)、P-Tuning及P-Tuning v2等多种方法。
微调实际上是迁移学习的一个实例,其中预训练的模型(通常在大型通用数据集上训练)被用作特定任务的起点。这种方法使得即使是对于小数据集的任务,也可以实现高效的学习。
LoRA适配器
LoRA适配器(Low-Rank Adaptation)是一种用于微调大型语言模型的技术,旨在通过低秩分解优化模型参数,从而减少显存和计算资源的需求,同时保持模型的性能。 在微调时需要配置这个参数。
可以将 LoRA 想象成给一个大型通用模型添加一小组专门的指令。与重新训练整个模型(既昂贵又耗时)不同,LoRA 允许你高效地为模型添加新功能。
PEFT(Parameter-Efficient Fine-Tuning,参数高效微调)是 Hugging Face 的一个库,用于实现像 LoRA 这样的高效模型微调技术。 pip install peft
微调中的LoRA适配器 配置:
# 2. 添加LoRA适配器
peft_config = LoraConfig(
r=8, # r是LoRA算法中的超参数,它控制了权重矩阵的秩。
lora_alpha=32, # lora_alpha是LoRA算法中的超参数,它控制了权重矩阵的缩放因子。
target_modules=["q_proj", "k_proj", "v_proj"], # target_modules是LoRA算法中的关键参数,它指定了需要做LoRA适配的层。
lora_dropout=0.05, # lora_dropout是LoRA算法中的超参数,它控制了权重矩阵的随机化程度。
bias="none", # bias是LoRA算法中的超参数,它控制了权重矩阵的偏置项。
task_type="CAUSAL_LM" # task_type是LoRA算法中的超参数,它控制了权重矩阵的初始化方式。
)
window完整微调代码
# -*- coding: utf-8 -*-
# file: data_ready.py
# author: laich
"""
数据集准备
# 安装依赖
pip install langchain torch transformers modelscope peft
如果ImportError: cannot import name 'get_metadata_patterns' from 'datasets.data_files' 是 datasets版本过高
pip install datasets==3.3.0
数据集描述:https://www.modelscope.cn/datasets/AI-ModelScope/alpaca-gpt4-data-zh 可以通过git下载到本地。
"""
from modelscope import AutoTokenizer, AutoModelForCausalLM
from peft import LoraConfig, get_peft_model
import torch
# 1. 加载模型和tokenizer

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



