MedicalGPT 预训练环境搭建与训练完整工作日志
项目概述
本文档记录了在 RTX 5090 GPU 环境下搭建 MedicalGPT 预训练环境并成功完成训练的完整过程。项目基于 Qwen2.5-0.5B 模型,使用 LoRA (PEFT) 方法进行预训练。
环境信息
- 操作系统: Linux 5.15.0-94-generic
- GPU: NVIDIA GeForce RTX 5090
- Python: 3.11.5 (从 3.8.10 升级)
- PyTorch: 2.9.0.dev20250805+cu128 (nightly 版本)
- CUDA: 12.8
初始环境检查
首先检查了当前环境的基本信息:
python --version
# Python 3.8.10
nvidia-smi
# NVIDIA GeForce RTX 5090发现 Python 版本较旧,且需要配置网络代理来访问 Hugging Face 等资源。
网络代理配置
由于网络环境限制,需要配置 Clash 代理来访问外部资源。
代理文件准备
clash-linux-amd64-n2023-09-05-gdcc8d87.gz- Clash 可执行文件性价比机场.yaml- 代理配置文件Country.mmdb- GeoIP 数据库
代理服务启动
# 解压并设置权限
gunzip clash-linux-amd64-n2023-09-05-gdcc8d87.gz
chmod +x clash-linux-amd64-n2023-09-05-gdcc8d87
# 创建配置目录
mkdir -p ~/.config/clash
# 复制配置文件
cp "性价比机场.yaml" ~/.config/clash/config.yaml
cp Country.mmdb ~/.config/clash/
cp clash-linux-amd64-n2023-09-05-gdcc8d87 ~/.config/clash/clash
# 启动代理服务
cd ~/.config/clash && ./clash -d . &代理测试
# 测试代理连接
curl -x http://127.0.0.1:7890 http://httpbin.org/ip
curl -x http://127.0.0.1:7890 https://huggingface.co代理配置成功,可以正常访问外部资源。
依赖环境升级
Python 版本升级
由于 PyTorch nightly 版本需要更新的 Python 版本,将 Python 从 3.8.10 升级到 3.11.5:
conda install python=3.11 -yPyTorch 安装
根据 NVIDIA 官方建议,安装支持 RTX 5090 的 PyTorch nightly 版本:
pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128核心依赖安装
安装项目所需的核心依赖:
pip install transformers accelerate peft datasets loguru scikit-learn tensorboard遇到的问题与解决方案
问题 1: CUDA 兼容性错误
错误信息:
RuntimeError: CUDA error: no kernel image is available for execution on the device原因分析:
PyTorch 2.4.1 虽然支持 CUDA 12.1,但不完全兼容 RTX 5090 的 sm_120 架构。
解决方案:
- 升级 Python 到 3.11 版本
- 安装 PyTorch nightly 版本 (2.9.0.dev20250805+cu128)
- 使用 CUDA 12.8 支持
验证结果:
import torch
print(f'PyTorch version: {torch.__version__}') # 2.9.0.dev20250805+cu128
print(f'CUDA available: {torch.cuda.is_available()}') # True
print(f'Device name: {torch.cuda.get_device_name()}') # NVIDIA GeForce RTX 5090问题 2: PEFT 导入错误
错误信息:
ImportError: cannot import name 'prepare_model_for_kbit_training' from 'peft'原因分析:peft 0.3.0 版本中没有 prepare_model_for_kbit_training 函数,该函数在较新版本中才有。
解决方案:
升级 peft 库到最新版本:
pip install --upgrade peft验证结果:
from peft import prepare_model_for_kbit_training
print('PEFT import successful')问题 3: Transformers 兼容性问题
错误信息:
ImportError: cannot import name 'is_torch_tpu_available' from 'transformers'原因分析:transformers 4.55.0 版本中移除了 is_torch_tpu_available 函数。
解决方案:
修改 pretraining.py 文件,移除对 is_torch_tpu_available 的依赖:
# 移除导入
from transformers import (
AutoConfig,
AutoModelForCausalLM,
AutoTokenizer,
HfArgumentParser,
Trainer,
Seq2SeqTrainingArguments,
# is_torch_tpu_available, # 移除这行
set_seed,
BitsAndBytesConfig,
)
# 修改使用位置
compute_metrics=compute_metrics if training_args.do_eval else None,
preprocess_logits_for_metrics=preprocess_logits_for_metrics
if training_args.do_eval
else None,问题 4: 缺失依赖
错误信息:
ModuleNotFoundError: No module named 'loguru'
RuntimeError: TensorBoardCallback requires tensorboard to be installed解决方案:
安装缺失的依赖:
pip install loguru scikit-learn tensorboard训练配置
模型配置
- 基础模型: Qwen/Qwen2.5-0.5B
- 训练方法: LoRA (PEFT)
LoRA 配置:
- rank: 8
- alpha: 16.0
- dropout: 0.05
- target_modules: ['down_proj', 'gate_proj', 'k_proj', 'o_proj', 'q_proj', 'up_proj', 'v_proj']
训练参数
- 批次大小: 4 (per_device_train_batch_size)
- 梯度累积: 8 (gradient_accumulation_steps)
- 学习率: 2e-4
- 训练轮数: 0.5 epochs
- 最大样本数: 10000 (训练), 10 (评估)
- 块大小: 512 tokens
- 优化器: AdamW (fused)
- 精度: bfloat16
数据配置
训练数据: 3 个文本文件
en_article_tail500.txtfever.txttianlongbabu.txt
- 数据预处理: 10 个并行工作进程
- 训练样本数: 621 个
- 评估样本数: 10 个
训练执行
启动训练
cd MedicalGPT
bash run_pt.sh训练过程监控
训练过程中观察到以下关键指标:
模型加载成功:
- 成功加载 Qwen2.5-0.5B 模型
- LoRA 配置应用成功
- 可训练参数:4,399,104 (0.88% 的总参数)
数据处理:
- 原始数据集:3,876 个样本
- 分词处理:使用 10 个并行进程
- 分块处理:512 tokens 块大小
训练进度:
- 训练步数:10 步
- 训练时间:14.67 秒
- 训练速度:21.152 samples/second
训练结果
性能指标
- 训练损失: 3.4131
- 评估损失: 3.0955
- 评估准确率: 41.66%
- 困惑度: 22.10
- 训练效率: 0.681 steps/second
模型输出
训练完成后,模型保存在 outputs-pt-qwen-v1/ 目录中,包含:
- 模型检查点文件
- LoRA 权重文件
- 训练配置文件
- TensorBoard 日志文件
验证结果
# 检查输出目录
ls -la outputs-pt-qwen-v1/
# 包含 adapter_config.json, adapter_model.safetensors 等文件经验总结
关键技术点
- GPU 兼容性:新架构 GPU 需要使用对应的 PyTorch nightly 版本
- 依赖管理:及时升级关键依赖库,注意版本兼容性
- 网络配置:在受限网络环境下,合理配置代理服务
- 错误调试:逐步排查依赖和兼容性问题
最佳实践
- 环境隔离:使用 conda 管理 Python 环境
- 版本控制:记录所有依赖的版本信息
- 渐进式调试:从基础功能开始,逐步添加复杂功能
- 日志记录:详细记录每个步骤和遇到的问题
性能优化
- 数据预处理:使用多进程并行处理
- 内存管理:合理设置批次大小和梯度累积
- 精度选择:使用 bfloat16 平衡精度和性能
- 模型优化:使用 LoRA 减少可训练参数
后续工作
- 模型评估:在更多数据集上评估模型性能
- 超参数调优:优化学习率、批次大小等参数
- 模型部署:将训练好的模型部署到生产环境
- 持续训练:使用更多数据进行增量训练
参考资料
本文档记录了从环境搭建到模型训练完成的完整过程,可作为类似项目的参考指南。
2025年10月新盘 做第一批吃螃蟹的人
新车即将上线 真正的项目,期待你的参与
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合 的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳公司合作开户所需材料?电话号码15587291507 微信STS5099
华纳东方明珠客服电话是多少?(▲18288362750?《?微信STS5099? 】
如何联系华纳东方明珠客服?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服联系方式?(▲18288362750?《?微信STS5099?
华纳东方明珠客服热线?(▲18288362750?《?微信STS5099?
华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服在线咨询?(▲18288362750?《?微信STS5099?
华纳东方明珠客服电话是多少?(▲18288362750?《?微信STS5099? 】
如何联系华纳东方明珠客服?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服联系方式?(▲18288362750?《?微信STS5099?
华纳东方明珠客服热线?(▲18288362750?《?微信STS5099?
华纳东方明珠24小时客服电话?(▲18288362750?《?微信STS5099? 】
华纳东方明珠官方客服在线咨询?(▲18288362750?《?微信STS5099?
新盛客服电话是多少?(?183-8890-9465—《?薇-STS5099】【
新盛开户专线联系方式?(?183-8890--9465—《?薇-STS5099】【?扣6011643??】
新盛客服开户电话全攻略,让娱乐更顺畅!(?183-8890--9465—《?薇-STS5099】客服开户流程,华纳新盛客服开户流程图(?183-8890--9465—《?薇-STS5099】
新盛客服电话是多少?(?183-8890-9465—《?薇-STS5099】【
新盛开户专线联系方式?(?183-8890--9465—《?薇-STS5099】【?扣6011643??】
新盛客服开户电话全攻略,让娱乐更顺畅!(?183-8890--9465—《?薇-STS5099】客服开户流程,华纳新盛客服开户流程图(?183-8890--9465—《?薇-STS5099】