# model_training **Repository Path**: mutongli/model_training ## Basic Information - **Project Name**: model_training - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 模型微调项目工程 基于 TinyBERT 的 IMDb 情感分类微调项目,专为 4G 显存环境优化(如 GTX 1650)。 ## 项目结构 ``` model_training/ ├── config.py # 配置文件(超参数设置) ├── data_loader.py # 数据加载模块(IMDb 数据集处理) ├── model_trainer.py # 模型训练模块(完整训练流程) ├── inference.py # 推理测试模块(预测功能) ├── monitor.py # 训练监控模块(指标记录、可视化) ├── train.py # 训练主脚本 ├── predict.py # 预测主脚本 ├── requirements.txt # 依赖列表 └── README.md # 项目说明 ``` ## 环境要求 - **操作系统**: Windows 10/11 + WSL2 Ubuntu 22.04 - **Python**: 3.8+ - **GPU**: NVIDIA GTX 1650(4GB 显存)或更高 - **CUDA**: 12.x(推荐 12.7) - **内存**: 8GB+ - **硬盘空间**: 20GB+ ## 完整执行流程 ### 步骤 1: 检查环境 ```bash # 检查 GPU 和 CUDA 版本 nvidia-smi ``` 预期输出应显示类似信息: ``` NVIDIA-SMI 570.211.01 Driver Version: 566.14 CUDA Version: 12.7 GPU 0: NVIDIA GeForce GTX 1650 ``` ### 步骤 2: 创建并激活虚拟环境 ```bash # 创建虚拟环境(使用 Python 内置的 venv) python3 -m venv venv # 激活虚拟环境 # Windows (PowerShell) .\venv\Scripts\Activate # Linux / WSL2 source venv/bin/activate ``` 激活后,终端会显示 `(venv)` 前缀,表示已在虚拟环境中工作。 ### 步骤 3: 安装依赖 ```bash # 确保在虚拟环境中(终端显示 venv 前缀) # 安装 CUDA 12.x 版本的 PyTorch pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu121 # 安装其他依赖 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 步骤 4: 修改配置(可选) 根据需要修改 `config.py` 中的参数: ```python BATCH_SIZE = 4 # 批次大小(4GB显存建议4或2) MAX_LENGTH = 128 # 最大序列长度 EPOCHS = 3 # 训练轮数 TRAIN_SIZE = 5000 # 训练数据量 ``` ### 步骤 5: 开始训练 ```bash python train.py ``` 训练过程会显示: - 每轮训练的 loss 和 accuracy - 验证集的 loss 和 accuracy - 自动保存最佳模型到 `output/best_model/` ### 步骤 6: 测试模型 #### 单条预测 ```bash python predict.py --text "This movie was absolutely fantastic! The acting was incredible." ``` 输出示例: ``` Text: This movie was absolutely fantastic! The acting was incredible. Prediction: 正面 (confidence: 0.9876) ``` #### 批量预测 创建 `texts.txt` 文件: ``` This movie was great! I hated this film, it was terrible. The movie was okay, not great but not terrible either. ``` 运行批量预测: ```bash python predict.py --file texts.txt ``` ### 步骤 7: 查看训练结果 训练完成后,会生成以下文件: - `output/best_model/` - 训练好的最佳模型 - `logs/training_metrics.json` - 训练指标记录(loss、accuracy) - `logs/training_log.txt` - 训练日志 - `logs/training_plot.png` - 训练曲线图表 ## 配置参数说明 | 参数 | 默认值 | 说明 | |------|--------|------| | MODEL_NAME | huawei-noah/TinyBERT_General_4L_312D | 预训练模型名称 | | BATCH_SIZE | 4 | 批次大小(4GB显存建议2-4) | | EPOCHS | 3 | 训练轮数 | | LEARNING_RATE | 2e-5 | 学习率 | | MAX_LENGTH | 128 | 最大序列长度 | | FP16 | True | 是否启用混合精度训练 | | TRAIN_SIZE | 5000 | 训练样本数量 | | VALID_SIZE | 500 | 验证样本数量 | | TEST_SIZE | 500 | 测试样本数量 | | GRADIENT_ACCUMULATION_STEPS | 2 | 梯度累积步数 | ## 故障排除 ### 问题 1: CUDA out of memory **解决方法:** 1. 降低 `BATCH_SIZE` 到 2 2. 减少 `MAX_LENGTH` 到 64 3. 减少 `TRAIN_SIZE` 到 2000 4. 更换更小的模型:`"prajjwal1/bert-tiny"`(仅 4.4M 参数) ### 问题 2: 无法加载模型 **解决方法:** ```bash # 手动下载模型到本地 git clone https://huggingface.co/huawei-noah/TinyBERT_General_4L_312D ``` 然后在 `config.py` 中设置 `MODEL_NAME = "./TinyBERT_General_4L_312D"` ### 问题 3: 训练速度太慢 **正常情况!** 4GB 显存训练本来就比较慢。可以尝试: 1. 确保 `FP16=True` 开启混合精度 2. 减少训练数据量 ## 学习路径建议 1. **第一周**:成功运行完整流程,理解每个步骤 2. **第二周**:尝试修改超参数(学习率、batch size),观察效果变化 3. **第三周**:更换数据集(如 AG News 新闻分类) 4. **第四周**:尝试 LoRA 微调(更高级的微调技术) ## 技术栈 - **框架**: PyTorch 2.2 - **模型**: TinyBERT(Hugging Face Transformers) - **数据集**: IMDb(Hugging Face Datasets) - **训练监控**: Matplotlib 可视化 ## 注意事项 1. 首次运行会自动下载 IMDb 数据集(约 250MB) 2. 首次运行会自动下载 TinyBERT 模型(约 150MB) 3. 训练时间取决于 GPU 性能,通常需要 30-60 分钟 4. 训练过程中建议关闭其他占用显存的程序