2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00
2025-10-07 17:16:19 +08:00

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模块除外)

  1. 测试开始标识
  2. 库版本信息
  3. CPU训练时间
  4. GPU训练时间如果支持
  5. 性能加速比
  6. 结果一致性验证
  7. 测试完成状态

注意事项

  1. GPU测试需要支持CUDA的显卡和相应驱动
  2. 如果系统不支持GPU加速程序会自动跳过GPU测试部分
  3. 所有测试使用相同规模的数据集以确保比较的公平性
  4. 测试结果可能因硬件配置不同而有所差异
  5. 日志文件会自动保存在./logs目录中,避免重复文件名

许可证

本项目仅供学习和测试使用。在使用本项目的代码时,请遵守相关库的许可证条款。

Description
PyMLEnvTest
Readme 129 KiB
Languages
Python 100%