PyMLEnvTest - Python Machine Learning Environment Test
PyMLEnvTest是一个综合性的Python项目,用于测试和验证各种机器学习库在GPU上的性能表现。该项目包含多个测试模块,可以比较CPU与GPU在不同算法上的执行效率。
项目结构
PyMLEnvTest
├── benchmark
│ └── gpu_benchmark.py
├── logs
│ └── gpu_benchmark_20250929_110347.log
├── main_benchmark.py
├── main.py
├── pyproject.toml
├── README.md
├── tests
│ ├── LightGBM_GPU_Test.py
│ ├── pgmpy_comprehensive_test.py
│ ├── pytorch_gpu_test.py
│ └── xgboost_gpu_test.py
└── uv.lock
功能模块
1. PyTorch GPU测试
验证PyTorch深度学习框架在GPU上的加速效果,包括:
- 神经网络模型定义
- CPU训练性能基准
- GPU训练性能测试
- 预测结果一致性检查
2. LightGBM GPU测试
测试LightGBM梯度提升框架在CPU和GPU上的训练性能差异,包括:
- 数据生成与预处理
- CPU训练时间测量
- GPU训练时间测量
- 性能加速比计算
- 结果一致性验证
3. XGBoost GPU测试
评估XGBoost在GPU上的训练效率提升,包括:
- 梯度提升树模型训练
- CPU与GPU训练时间对比
- 加速比计算
- 预测准确性验证
4. pgmpy综合测试
测试pgmpy概率图模型库的各种功能实现,包括:
- 马尔可夫链模型
- 马尔可夫网络
- 朴素贝叶斯网络
- 离散贝叶斯网络
- 动态贝叶斯网络
- 函数式贝叶斯网络
- 线性高斯贝叶斯网络
- 结构方程模型
5. GPU基准测试(Benchmark)
使用标准日志库记录前三个支持GPU训练的模型(PyTorch、XGBoost、LightGBM)的CPU和GPU测试时间,包括:
- 自动创建日志目录(./logs)
- 生成带时间戳的日志文件
- 记录详细的测试过程和结果
- 一次运行生成一个包含三个模型测试记录的日志文件
环境要求
- Python 3.13+
- CUDA支持的GPU(用于GPU加速测试)
- 相关依赖库(详见pyproject.toml)
安装依赖
推荐使用uv包管理器安装依赖:
pip install uv
uv sync
运行测试
执行所有测试:
uv run main.py
或者
source .venv/bin/activate # 手动激活虚拟环境,确保已经成功执行 uv sync
python main.py
执行GPU基准测试(仅记录日志):
uv run main_benchmark.py # 或者 python main_benchmark.py
日志记录
GPU基准测试会将测试结果记录到./logs目录中,每次运行都会生成一个带时间戳的日志文件,例如:
./logs/benchmark_20240315_143000.log
日志文件包含:
- 测试开始和结束时间
- 每个模型的详细测试过程
- CPU和GPU训练时间
- 性能加速比
- 测试结果摘要
依赖说明
项目主要依赖以下Python库:
- torch: PyTorch深度学习框架
- lightgbm: 高性能梯度提升框架
- xgboost: 可扩展梯度提升系统
- pgmpy: 概率模型库
- scikit-learn: 机器学习工具包
- numpy: 数值计算基础库
测试输出说明
测试模块会输出以下信息(pgmpy模块除外):
- 测试开始标识
- 库版本信息
- CPU训练时间
- GPU训练时间(如果支持)
- 性能加速比
- 结果一致性验证
- 测试完成状态
注意事项
- GPU测试需要支持CUDA的显卡和相应驱动
- 如果系统不支持GPU加速,程序会自动跳过GPU测试部分
- 所有测试使用相同规模的数据集以确保比较的公平性
- 测试结果可能因硬件配置不同而有所差异
- 日志文件会自动保存在
./logs目录中,避免重复文件名
许可证
本项目仅供学习和测试使用。在使用本项目的代码时,请遵守相关库的许可证条款。
- LightGBM: MIT License
- PyTorch: BSD 3-Clause License
- XGBoost: Apache License 2.0
- pgmpy: MIT License
- scikit-learn: BSD 3-Clause License
- numpy: BSD 3-Clause License
Description
Languages
Python
100%