# ai_model_train **Repository Path**: jf_g_admin/ai_model_train ## Basic Information - **Project Name**: ai_model_train - **Description**: 模型微调项目脚手架,支持DeepSeek-R1等模型 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-24 - **Last Updated**: 2025-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DeepSeek-R1 7B 模型微调项目 这是一个用于微调本地 Ollama 安装的 deepseek-r1:7b 模型的完整项目。项目使用 Unsloth 框架和 QLoRA 技术进行高效的参数微调。 ## 🚀 特性 - **高效微调**: 使用 Unsloth 框架,训练速度提升 2-5 倍 - **内存优化**: 采用 QLoRA 技术,大幅降低显存需求 - **灵活配置**: 支持 YAML 配置文件,易于调整参数 - **多种推理方式**: 支持本地推理和 Ollama API 推理 - **完整工具链**: 包含数据处理、训练、推理的完整流程 ## 📁 项目结构 ``` aimodelTest/ ├── config/ # 配置文件 │ ├── training_config.yaml # 训练配置 │ └── model_config.yaml # 模型配置 ├── data/ # 数据相关 │ ├── sample_data.json # 示例训练数据 │ └── process_data.py # 数据预处理脚本 ├── scripts/ # 主要脚本 │ ├── train.py # 训练脚本 │ └── inference.py # 推理脚本 ├── utils/ # 工具函数 │ ├── model_utils.py # 模型相关工具 │ └── training_utils.py # 训练相关工具 ├── models/ # 模型存储目录 ├── requirements.txt # Python依赖 └── README.md # 项目说明 ``` ## 🛠️ 安装依赖 ```bash # 创建虚拟环境(推荐) python -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt ``` ## 📊 数据准备 ### 1. 数据格式 训练数据应为 JSON 格式,每条数据包含以下字段: ```json { "instruction": "用户指令", "input": "输入内容(可选)", "output": "期望输出" } ``` ### 2. 数据预处理 ```bash # 处理自定义数据 python data/process_data.py -i your_data.json -o ./data # 使用示例数据 python data/process_data.py -i data/sample_data.json -o ./data ``` ## 🎯 模型训练 ### 1. 配置调整 编辑 `config/training_config.yaml` 和 `config/model_config.yaml` 文件,根据您的需求调整参数: - **训练参数**: 学习率、批次大小、训练轮数等 - **LoRA参数**: r、alpha、dropout等 - **模型参数**: 最大序列长度、量化设置等 ### 2. 开始训练 ```bash # 使用 Unsloth 框架训练(推荐) python scripts/train.py --use_unsloth # 使用传统方法训练 python scripts/train.py # 从检查点恢复训练 python scripts/train.py --resume ./models/checkpoint-1000 # 自定义配置文件 python scripts/train.py -c custom_config.yaml -m custom_model_config.yaml ``` ### 3. 训练监控 - **TensorBoard**: `tensorboard --logdir ./models/deepseek-r1-7b-finetuned/runs` - **Weights & Biases**: 自动记录训练过程(需要配置) ## 🔮 模型推理 ### 1. 交互式推理 ```bash # 使用微调后的模型 python scripts/inference.py -m ./models/deepseek-r1-7b-finetuned --interactive # 使用 Ollama API python scripts/inference.py -m ./models/deepseek-r1-7b-finetuned --use_ollama --interactive ``` ### 2. 单次推理 ```bash python scripts/inference.py -m ./models/deepseek-r1-7b-finetuned -p "请解释什么是人工智能" ``` ### 3. 批量测试 ```bash # 运行预设测试案例 python scripts/inference.py -m ./models/deepseek-r1-7b-finetuned ``` ## ⚙️ 配置说明 ### 训练配置 (training_config.yaml) - `model.max_seq_length`: 最大序列长度 - `lora.r`: LoRA 秩,影响参数量和性能 - `training.learning_rate`: 学习率 - `training.per_device_train_batch_size`: 批次大小 ### 模型配置 (model_config.yaml) - `quantization.load_in_4bit`: 是否使用4位量化 - `ollama.host`: Ollama 服务地址 - `special_tokens`: 特殊token配置 ## 🎛️ 高级功能 ### 1. 模型合并 如果使用 Unsloth 训练,可以将 LoRA 权重合并到基础模型: ```python # 在训练脚本中自动完成 model.save_pretrained_merged("./models/merged_model", tokenizer, save_method="merged_16bit") ``` ### 2. 模型转换 将微调后的模型转换为 Ollama 格式: ```bash # 创建 Modelfile echo 'FROM ./models/deepseek-r1-7b-merged' > Modelfile echo 'PARAMETER temperature 0.7' >> Modelfile # 创建 Ollama 模型 ollama create my-finetuned-model -f Modelfile ``` ### 3. 性能优化 - **梯度检查点**: 减少内存使用 - **混合精度训练**: 加速训练过程 - **数据并行**: 多GPU训练支持 ## 📈 训练建议 ### 1. 硬件要求 - **最低配置**: 8GB GPU 显存 - **推荐配置**: 16GB+ GPU 显存 - **CPU**: 8核以上 - **内存**: 32GB+ ### 2. 参数调优 - **学习率**: 从 2e-4 开始,根据损失曲线调整 - **LoRA rank**: 16-64 之间,更高的 rank 需要更多显存 - **批次大小**: 根据显存大小调整,使用梯度累积 ### 3. 数据质量 - 确保数据格式一致 - 控制序列长度,避免过长文本 - 数据量建议 1000+ 条获得较好效果 ## 🐛 常见问题 ### 1. 显存不足 ```bash # 减少批次大小 per_device_train_batch_size: 1 # 增加梯度累积步数 gradient_accumulation_steps: 8 # 启用梯度检查点 use_gradient_checkpointing: true ``` ### 2. 训练速度慢 - 使用 Unsloth 框架 - 启用混合精度训练 - 检查数据加载效率 ### 3. 模型效果不佳 - 增加训练数据量 - 调整学习率 - 增加训练轮数 - 检查数据质量 ## 📝 许可证 本项目采用 MIT 许可证。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 支持 如有问题,请创建 Issue 或联系项目维护者。