| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- """
- 检查环境依赖
- """
- import sys
- import subprocess
- from packaging import version
- def check_package(package_name, min_version=None):
- """检查包是否安装及版本"""
- try:
- import importlib
- module = importlib.import_module(package_name)
-
- if hasattr(module, "__version__"):
- installed_version = module.__version__
- if min_version and version.parse(installed_version) < version.parse(min_version):
- print(f"❌ {package_name}: {installed_version} (需要 >= {min_version})")
- return False
- else:
- print(f"✓ {package_name}: {installed_version}")
- else:
- print(f"✓ {package_name}: 已安装")
- return True
- except ImportError:
- print(f"❌ {package_name}: 未安装")
- return False
- def check_cuda():
- """检查 CUDA 是否可用"""
- try:
- import torch
- if torch.cuda.is_available():
- print(f"✓ CUDA: 可用 ({torch.cuda.device_count()} 个 GPU)")
- for i in range(torch.cuda.device_count()):
- print(f" GPU {i}: {torch.cuda.get_device_name(i)}")
- return True
- else:
- print("⚠ CUDA: 不可用 (将使用 CPU 训练)")
- return False
- except ImportError:
- print("❌ PyTorch: 未安装")
- return False
- def main():
- print("=" * 60)
- print("FineTuneX 环境检查")
- print("=" * 60)
- print()
-
- required_packages = {
- "torch": "2.0.0",
- "transformers": "4.40.0",
- "datasets": "2.14.0",
- "accelerate": "0.25.0",
- "peft": "0.7.0",
- "bitsandbytes": "0.41.0",
- "trl": "0.7.0",
- "fastapi": "0.104.0",
- "uvicorn": "0.24.0",
- "pydantic": "2.0.0",
- }
-
- all_ok = True
-
- print("检查 Python 包:")
- print("-" * 60)
- for package, min_ver in required_packages.items():
- if not check_package(package, min_ver):
- all_ok = False
-
- print()
- print("检查 CUDA:")
- print("-" * 60)
- if not check_cuda():
- print("⚠ 警告:CPU 训练速度较慢,建议使用 GPU")
-
- print()
- print("=" * 60)
- if all_ok:
- print("✓ 所有依赖已安装!")
- else:
- print("❌ 部分依赖缺失,请运行:pip install -r requirements.txt")
- print("=" * 60)
-
- return 0 if all_ok else 1
- if __name__ == "__main__":
- sys.exit(main())
|