---
title: GPU_lecture_train
canonical_url: "https://www.modelscope.cn/models/xiliu410/GPU_lecture_train"
md_url: "https://www.modelscope.cn/models/xiliu410/GPU_lecture_train.md"
repository: xiliu410/GPU_lecture_train
last_updated: 2025-12-26
pipeline_tag: text-generation
tasks:
  - text-generation
model_type:
  - qwen2
architectures:
  - Qwen2ForCausalLM
parameters: 2.5B
tensor_type:
  - F16
library_name:
  - safetensors
  - tensorflow
frameworks:
  - Tensorflow
inference_backends:
  - "deploy_task text/emb"
  - "lmdeploy 0.9.1"
  - "lmdeploy_turbomind 0.9.1"
  - "sglang 0.5.2"
  - "vllm 0.9.2"
downloads: 24
stars: 0
---

# GPU_lecture_train

> GPU_lecture_train - xiliu410 在 ModelScope 开源的模型。本项目使用LoRA方法对Qwen2.5-3B-Instruct模型进行微调。

xiliu410/GPU_lecture_train 是 ModelScope 魔搭社区上的 2.5B 参数text-generation模型，可用 deploy_task text/emb、lmdeploy 0.9.1、lmdeploy_turbomind 0.9.1 部署。

- **Repository**: xiliu410/GPU_lecture_train
- **Tasks**: text-generation
- **Parameters**: 2.5B
- **Inference backends**: deploy_task text/emb, lmdeploy 0.9.1, lmdeploy_turbomind 0.9.1, sglang 0.5.2, vllm 0.9.2
- **Downloads**: 24
- **Stars**: 0
- **Last updated**: 2025-12-26

Source: https://www.modelscope.cn/models/xiliu410/GPU_lecture_train

---

# Qwen2.5-3B 模型微调指南

本项目使用LoRA方法对Qwen2.5-3B-Instruct模型进行微调。

## 环境要求

```bash
pip install torch transformers datasets peft accelerate bitsandbytes
```

具体版本：
- torch >= 2.0.0
- transformers >= 4.36.0
- datasets >= 2.14.0
- peft >= 0.7.0
- accelerate >= 0.24.0

## 使用步骤

### 1. 训练模型

```bash
python train_qwen.py
```

训练过程中会：
- 自动将数据集分为90%训练集和10%验证集
- 使用LoRA进行高效微调（节省显存）
- 每50步保存一个checkpoint
- 每50步评估一次验证集
- 最终保存最佳模型

**训练参数说明：**
- Batch size: 4
- Gradient accumulation: 4（等效batch size = 16）
- Learning rate: 2e-4
- Epochs: 3
- LoRA rank: 8
- 使用FP16混合精度训练

**预计显存占用：** 约10-15GB（使用单卡A100/V100/3090等）

### 2. 测试模型

```bash
python inference_qwen.py
```

这个脚本会：
- 加载微调后的模型
- 运行几个示例问题
- 进入交互模式，可以自由提问

### 3. 合并LoRA权重（可选）

如果需要部署，建议合并LoRA权重：

```bash
python merge_lora.py
```

合并后的模型可以直接用transformers加载，无需PEFT库。

## 文件结构

```
.
├── train_qwen. py              # 训练脚本
├── inference_qwen.py          # 推理测试脚本
├── merge_lora.py              # 权重合并脚本
├── qwen_finetuned_model/      # 训练输出目录
│   ├── checkpoint-50/         # 中间checkpoint
│   ├── checkpoint-100/
│   └── final_model/           # 最终模型（LoRA权重）
└── qwen_merged_model/         # 合并后的完整模型（运行merge_lora.py后生成）
```

## 训练技巧

### 调整学习率
如果loss下降太慢，可以增加学习率到5e-4；如果不稳定，降低到1e-4。

### 调整LoRA参数
- `r`: 增加到16可以提升性能，但会增加显存占用
- `lora_alpha`: 通常设置为`r`的2-4倍

### 显存不足
如果显存不足，可以：
1. 减小batch size到2或1
2. 增加gradient_accumulation_steps
3. 减小MAX_LENGTH到256
4. 使用int8量化：添加`load_in_8bit=True`

### 过拟合问题
如果训练集loss很低但验证集loss不降：
1. 减少训练epochs
2. 增加weight_decay
3. 增加lora_dropout

## 性能监控

训练过程中可以观察：
- `loss`: 训练损失，应该持续下降
- `eval_loss`: 验证损失，用于判断是否过拟合
- `learning_rate`: 学习率变化（使用cosine调度）

## 常见问题

**Q: 为什么使用LoRA而不是全参数微调？**
A: LoRA只训练少量参数（约1-2%），大大降低显存需求和训练时间，同时效果接近全参数微调。

**Q: 训练需要多长时间？**
A: 390条数据，3个epoch，在A100上约需要10-20分钟。

**Q:  如何评估模型效果？**
A: 运行inference_qwen.py测试模型回答，或者计算验证集上的perplexity。

**Q: 可以继续训练吗？**
A: 可以，在TrainingArguments中设置resume_from_checkpoint参数。
