当前位置: 首页 > news >正文

HuggingFace peft LoRA 微调 LLaMA

1. 安装必要库

pip install transformers peft accelerate

2. 加载 LLaMA 模型和分词器

Hugging Face Transformers 加载预训练的 LLaMA 模型和分词器。

from transformers import AutoModelForCausalLM, AutoTokenizer# 加载 LLaMA 模型和分词器
model_name = "meta-llama/Llama-2-7b-hf"  # 替换为适合的模型
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto", load_in_8bit=True)# 设置 pad_token 为 eos_token(如果模型没有 pad_token)
tokenizer.pad_token = tokenizer.eos_token
model.resize_token_embeddings(len(tokenizer))  # 调整词汇表大小

3. 配置 LoRA 微调

使用 PEFT 配置 LoRA 参数。

from peft import get_peft_model, LoraConfig, TaskType# 定义 LoRA 配置
lora_config = LoraConfig(task_type=TaskType.CAUSAL_LM,  # 因果语言模型任务inference_mode=False,r=8,  # LoRA 的秩lora_alpha=16,lora_dropout=0.05
)# 将 LoRA 应用于模型
model = get_peft_model(model, lora_config)# 检查模型被正确标记为 trainable
print(model)

4. 定义数据集加载器

使用自定义数据集加载器和 Hugging Face 提供的 DataCollator 进行批量处理。

数据集预处理流程及其代码如下链接:训练数据格式为<input,output>,为什么微调大模型时,模型所需的输入数据input_ids有时仅包含了input,而有时包含了input和output呢?-CSDN博客

from torch.utils.data import DataLoader
from transformers import DataCollatorForSeq2Seq# 自定义数据集(之前定义的 FineTuneDataset)
dataset = FineTuneDataset(data_path="./train.jsonl", tokenizer=tokenizer, max_length=1024)# 定义数据批处理器
data_collator = DataCollatorForSeq2Seq(tokenizer, padding=True)

5. 配置 TrainingArguments

设置训练超参数,包括学习率、批次大小、保存频率等。

from transformers import TrainingArgumentstraining_args = TrainingArguments(output_dir="./llama_lora_finetuned",   # 输出模型路径evaluation_strategy="steps",          # 每隔多少步进行验证save_strategy="steps",                # 保存检查点的策略logging_dir="./logs",                 # 日志文件路径per_device_train_batch_size=8,        # 每个设备的训练批次大小gradient_accumulation_steps=4,        # 梯度累积learning_rate=2e-4,                   # 学习率num_train_epochs=3,                   # 训练轮数save_steps=500,                       # 每隔多少步保存模型logging_steps=100,                    # 日志记录频率fp16=True,                            # 使用混合精度训练push_to_hub=False                     # 如果需要保存到 Hugging Face Hub
)

6. 定义模型和 Trainer

from transformers import Trainer# 定义 Trainer
trainer = Trainer(model=model,                          # 微调的模型args=training_args,                   # 训练参数train_dataset=dataset,                # 训练数据集data_collator=data_collator,          # 数据批处理器
)

7. 启动训练

trainer.train()
trainer.save_model("./llama_lora_finetuned")
tokenizer.save_pretrained("./llama_lora_finetuned")

http://www.lryc.cn/news/510390.html

相关文章:

  • 记-编译magisk_v22
  • 前端登录业务
  • 项目2路由交换
  • 易语言 OCR 文字识别
  • 云手机+YouTube:改变通信世界的划时代技术
  • C++-----------映射
  • 清空DNS 缓存
  • 计算机网络习题( 第3章 物理层 第4章 数据链路层 )
  • UE5 崩溃问题汇总!!!
  • 基于ArcGIS Pro的SWAT模型在流域水循环、水生态模拟中的应用及案例分析;SWAT模型安装、运行到结果读取全流程指导
  • Docker下TestHubo安装配置指南
  • AWS、Google Cloud Platform (GCP)、Microsoft Azure、Linode和 桔子数据 的 价格对比
  • 基础优化方法
  • v语言介绍
  • Ubuntu安装Apache Airflow详细指南
  • 【数据可视化复习方向】
  • CentOS下安装RabbitMQ
  • 探究音频丢字位置和丢字时间对pesq分数的影响
  • 音视频入门基础:MPEG2-TS专题(23)——通过FFprobe显示TS流每个packet的信息
  • Bert各种变体——RoBERTA/ALBERT/DistillBert
  • Go入门篇:(一)golang的安装和编辑工具安装
  • 【技术实战】R语言统计分析与可视化从入门到精通
  • 【Lua之·Lua与C/C++交互·Lua CAPI访问栈操作】
  • LabVIEW实现LoRa通信
  • 【数字化】华为数字化转型架构蓝图-2
  • 【Agent】AutoGen Studio2.0开源框架-UI层环境安装+详细操作教程(从0到1带跑通智能体AutoGen Studio)
  • Linux 网络配置基础
  • 科技创新 数智未来|清科·沙丘投研院走进竹云
  • Java 常见面试算法题汇总与解析
  • 【社区投稿】自动特征auto trait的扩散规则