LoRA微调Llama模型

使用LoRA对Meta Llama 3.2-3B-Instruct进行参数高效的微调,并结合轻量级检索层实现混合响应生成。

  • by ahmed7077
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ahmed7077/efficient-llm-adaptation

使用说明

使用具有轻量级检索层的LoRA对Meta Llama 3.2-3B-指令进行微调

概述

该项目展示了参数的高效微调 Meta Llama 3.2-3B-说明书 使用 LoRA(低阶自适应) 在自定义指令响应数据集上。

该项目还实现了一个轻量级检索层,该层首先在结构化知识库中搜索精确匹配,然后再回到微调的LLM进行响应生成。这种混合方法改进了事实检索,同时保留了模型的生成能力。

这个项目是在我的 IonIdea的人工智能实习,在那里我获得了大型语言模型(LLM)、快速工程、监督微调和LLM推理管道的实践经验。


特性

  • 使用LoRA微调Meta Llama 3.2-3B-指令
  • 采用抱面TRL的监督微调(SFT)
  • 用于知识库查找的轻量级检索层
  • 一致响应的确定性LLM推理
  • 使用LoRA适配器进行参数高效训练
  • 端到端训练和推理管道
  • 使用PyTorch进行GPU加速训练

建筑

培训管道

Instruction Dataset (JSONL)
            │
            ▼
     Formatting Function
            │
            ▼
     LoRA Fine-Tuning
            │
            ▼
Meta Llama 3.2-3B-Instruct
            │
            ▼
     Fine-Tuned Model

推理管道

             User Query
                  │
                  ▼
      Retrieval / Routing Layer
          │                │
          ▼                ▼
Knowledge Base      Fine-Tuned LLM
          │                │
          └───────┬────────┘
                  ▼
           Final Response

训练配置

参数 值
基本模型 Meta Llama 3.2-3B-说明书
微调方法 LoRA
数据集大小 430个指令-响应对
训练步骤 800
时代 ~8
批量大小 1
坡度累积 4
学习率 1e-4
LoRA排名(r) 16
洛拉阿尔法 32
LoRA辍学率 0.05

培训结果

训练损失

步骤 损失
80 1.3466
160 0.7690
240 0.6978
320 0.6489
400 0.5539
480 0.5280
560 0.5192
640 0.5221
720 0.5111
800 0.5053

该模型在整个训练过程中表现出稳定的收敛性,损失从 1.35 到 0.51.


使用的技术

  • python
  • PyTorch
  • 抱脸变形器
  • 参数高效微调
  • 总需求线
  • 数据集
  • 加速
  • 谷歌Colab
  • Meta Llama 3.2-3B-说明书

安装

克隆存储库

git clone https://github.com/ahmed7077/efficient-llm-adaptation.git

cd efficient-llm-adaptation

安装依赖项

pip install -r requirements.txt

或手动安装

pip install transformers datasets peft trl accelerate safetensors huggingface_hub

数据集格式

训练数据集应以JSONL格式提供。

例子:

{"instruction":"Who is the CEO of OpenAI?","output":"Sam Altman"}
{"instruction":"What is quantum computing?","output":"Quantum computing uses qubits for computation."}

每条记录包含:

  • 指令
  • 输出

训练

跑

python train.py

微调后的模型将另存为

llama32_lora_merged_exact

推断

跑

python inference.py

示例

Enter instruction:

Give details about Muhammad Ahmed

输出

Full Name: Muhammad Ahmed
Age: 20
DOB: 2005-05-23
Nationality: Indian
Degree: B.Tech
University: Presidency University

提示工程

在这个项目中,探索了不同的激励策略,包括:

  • 零样本提示
  • 一枪提示
  • 很少有射门提示

对这些技术进行了评估,以更好地了解它们对LLM反应质量和行为的影响。


未来改进

  • 使用向量数据库(FAISS/ChromaDB)实现语义检索
  • 支持检索增强生成(RAG)
  • 添加模型性能的评估指标
  • 使用FastAPI或Streamlit部署模型
  • 用模糊匹配和嵌入扩展检索层

致谢

  • Llama模型的元人工智能
  • 拥抱变形金刚、PEFT和TRL生态系统的面孔
  • IonIdea Technologies提供实习机会和指导

许可证

该项目旨在用于教育和研究目的。