Skip to content

jhyan-ux/llm-learn

Repository files navigation

LLM学习项目 🚀

这是一个专注于大语言模型(LLM)学习和实现的项目仓库,从底层架构开始,逐步构建现代LLM的核心组件。

📁 项目结构

LLM/
├── README.md                    # 项目总览和结构说明
├── .gitignore                   # Git忽略文件配置
│
├── transformer/                 # Transformer架构实现
│   ├── README.md               # Transformer详细实现说明
│   ├── transformer.py          # 完整的Transformer Encoder实现
│   ├── pe_demo.py              # 位置编码演示
│   └── power_comparison.py     # 性能对比分析
│
├── lora/                        # LoRA技术自定义实现
│   ├── README.md               # LoRA学习总结和理论分析
│   ├── lora_layer.py           # 基础LoRA线性层实现 
│   ├── lora_transformer.py     # LoRA版本的Transformer组件
│   ├── efficiency_analysis.py  # 参数效率分析工具
│   └── test_dimensions.py      # 维度计算验证脚本
│
└── huggingface_lora/           # HuggingFace LoRA工程实践
    ├── README.md               # HuggingFace LoRA学习总结
    ├── 01_concepts_mapping.py  # 概念映射和理论对比
    ├── 02_environment_setup.py # 第一个HuggingFace LoRA示例
    ├── 04_text_classification.py # 完整的BERT文本分类流程
    └── 05_quick_demo.py        # 快速演示和实践建议

🎯 项目特色

📚 教学导向

  • 从零实现:不依赖任何高级库,纯PyTorch构建
  • 详细注释:每个函数都有完整的维度标注和原理解释
  • 渐进式学习:从基础组件到完整架构,层层递进

🔧 工程实践

  • 现代架构:采用Pre-LayerNorm设计,训练更稳定
  • 完整功能:包含残差连接、Dropout、位置编码等所有关键组件
  • 可扩展性:支持任意层数和维度配置

🧪 实验验证

  • 单元测试:每个组件都有独立的测试和演示
  • 性能分析:内存使用、参数统计、计算复杂度分析
  • 数值验证:确保实现的数学正确性

🚀 快速开始

环境要求

Python 3.7+
PyTorch 1.8+
transformers 4.0+  # HuggingFace实践需要
peft 0.3+          # HuggingFace LoRA需要

Transformer基础使用

from transformer.transformer import TransformerEncoder

# 创建模型
model = TransformerEncoder(
    vocab_size=10000,      # 词汇表大小
    d_model=512,           # 模型维度
    num_heads=8,           # 注意力头数
    d_ff=2048,             # 前馈网络维度
    num_layers=6,          # 编码器层数
    dropout=0.1            # Dropout比例
)

# 前向传播(输入为token IDs)
import torch
token_ids = torch.randint(0, 10000, (2, 50))  # (batch_size, seq_len)
output = model(token_ids)  # (batch_size, seq_len, d_model)

HuggingFace LoRA快速使用

from transformers import BertForSequenceClassification
from peft import LoraConfig, get_peft_model, TaskType

# 加载基础模型
model = BertForSequenceClassification.from_pretrained("bert-base-chinese", num_labels=2)

# 配置LoRA
lora_config = LoraConfig(
    task_type=TaskType.SEQ_CLS,
    r=16,                          # rank
    lora_alpha=32,                 # alpha参数
    target_modules=["query", "value"],  # 目标模块
    lora_dropout=0.1,
)

# 应用LoRA
lora_model = get_peft_model(model, lora_config)

# 查看参数效率
trainable_params = sum(p.numel() for p in lora_model.parameters() if p.requires_grad)
total_params = sum(p.numel() for p in lora_model.parameters())
print(f"参数效率: {trainable_params/total_params*100:.2f}%")  # 约0.6%

📚 学习模块详解

🔥 Transformer架构 (transformer/)

学习目标: 深入理解Transformer的核心机制

  • ✅ Multi-Head Attention的完整实现
  • ✅ Position Encoding的数学原理
  • ✅ Layer Normalization和残差连接
  • ✅ Feed-Forward网络设计
  • ✅ 完整的编码器架构

核心收获: 掌握现代LLM的基础架构原理

🎯 LoRA技术自定义实现 (lora/)

学习目标: 理解参数高效微调的数学原理

  • ✅ 低秩矩阵分解:h = W₀x + BAx
  • ✅ 参数效率分析:如何用1%参数实现全量效果
  • ✅ 注意力机制的LoRA改造
  • ✅ 计算复杂度优化:B(Ax) vs (BA)x

核心收获: 从数学公式到PyTorch代码的完整转换

🚀 HuggingFace LoRA工程实践 (huggingface_lora/)

学习目标: 掌握LoRA的生产级应用

  • ✅ 概念映射:自定义实现 → HuggingFace抽象
  • ✅ 配置化编程:LoraConfig的深度理解
  • ✅ 文本分类:BERT+LoRA的完整训练流程
  • ✅ 实践技巧:调优策略和问题解决

核心收获: 从研究原型到工程应用的完整方法论

🎓 学习路径建议

初学者路径

  1. Transformer基础 → 理解注意力机制和基础架构
  2. LoRA自定义实现 → 理解参数高效微调原理
  3. HuggingFace实践 → 掌握工程应用方法

进阶学习路径

  1. 深入源码 → 分析HuggingFace的LoRA实现
  2. 算法改进 → 尝试AdaLoRA、QLoRA等变体
  3. 应用拓展 → 多任务学习、跨语言迁移等

💡 核心学习成果

通过这个项目,你将掌握:

理论层面

  • Transformer架构的完整数学原理
  • LoRA技术的低秩分解本质
  • 参数高效微调的理论基础
  • 注意力机制的深层理解

实践层面

  • PyTorch实现的工程技巧
  • HuggingFace生态的使用方法
  • 模型训练的完整流程
  • 性能优化的具体策略

方法论层面

  • 从论文到代码的转换能力
  • 自定义vs框架的权衡思考
  • 渐进式学习的方法掌握
  • 理论与实践的结合能力

📚 参考资料


💡 学习建议: 这个项目采用了"理论→自定义实现→工程实践"的完整学习路径。建议按照目录顺序逐步学习,每个模块都包含了丰富的思考题和实践练习。

🎯 最终目标: 不仅学会使用这些技术,更重要的是理解其背后的原理,具备独立解决问题和持续学习的能力!

About

llm学习项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published