| name | environment-setup-pytorch |
| description | Set up Python environment for PyTorch-based NLP projects with transformers and alignment training. Use this skill when initializing project environments, managing dependencies from environment.yml files, installing required packages, and ensuring CUDA/device compatibility. Essential for reproducible machine learning research requiring specific package versions. |
Environment Setup for PyTorch Projects
Overview
This skill covers setting up a complete Python environment for PyTorch-based NLP and language model alignment training, including dependency management and device verification.
Environment Setup Workflow
Step 1: Identify Environment Configuration Files
Check for conda/pip configuration files:
environment.yml - Conda environment specification
requirements.txt - Pip requirements
setup.py - Package setup configuration
pyproject.toml - Modern Python project config
Step 2: Choose Installation Method
Option A: Conda Environment
conda env create -f environment.yml
conda activate <env_name>
Benefits:
- Manages both Python and system dependencies
- Consistent across platforms
- Handles CUDA toolkit versions
Option B: Pip with Virtual Environment
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Option C: Direct Pip Installation
pip install torch torchvision torchaudio
pip install transformers datasets accelerate peft
Step 3: Verify Python Version and Packages
Get detailed environment information:
python -VV
python -m pip freeze
python -m pip show torch
python -c "import torch; print(torch.__version__)"
Step 4: Check CUDA/Device Availability
Verify GPU access for training:
python -c "import torch; print(f'CUDA available: {torch.cuda.is_available()}'); print(f'Device: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"CPU\"}')"
Step 5: Install Project in Development Mode
For local project development:
pip install -e .
python setup.py develop
Common Packages for Alignment Training
Core PyTorch Stack
torch: Deep learning framework
torchvision: Computer vision utilities
torchaudio: Audio processing
pytorch-cuda: CUDA runtime (if using conda)
NLP and Transformers
transformers: Hugging Face models and utilities
tokenizers: Fast tokenizer library
datasets: Dataset loading and processing
accelerate: Multi-GPU/device training utilities
Alignment and Training
peft: Parameter-Efficient Fine-Tuning (LoRA, etc.)
trl: Transformers Reinforcement Learning
bitsandbytes: 8-bit optimization utilities
flash-attn: Optimized attention (optional, for efficiency)
Development Tools
numpy: Numerical computing
scipy: Scientific computing
scikit-learn: Machine learning utilities
wandb: Weights & Biases experiment tracking (optional)
Dependency Conflict Resolution
Check for Conflicts
pip check
Resolve Common Issues
PyTorch Version Mismatch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install torch torchvision torchaudio
Package Incompatibilities
conda install --solver=libmamba
pip install --upgrade --upgrade-strategy eager <package>
Remove Conflicting Packages
pip uninstall -y <package_name>
pip install <package_name>==<specific_version>
Conda Environment from File
When using conda with environment.yml, sometimes recreating helps:
conda env export > backup_env.yml
conda env remove --name <env_name>
conda env create -f environment.yml
Reproducibility Best Practices
1. Lock Dependency Versions
pip freeze > requirements-lock.txt
conda env export > env-lock.yml
2. Document Environment Information
Always log:
- Python version and build (
python -VV)
- Key package versions (torch, transformers, cuda)
- Hardware details (GPU model, CPU)
{
echo "=== Python Version ==="
python -VV
echo
echo "=== Package Freeze ==="
python -m pip freeze
echo
echo "=== PyTorch Info ==="
python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"
} > environment_info.txt
3. Test Critical Imports
import torch
import transformers
from datasets import load_dataset
from peft import get_peft_model
print("All critical imports successful!")
Environment Variables
CUDA Configuration
export CUDA_VISIBLE_DEVICES=0,1,2,3
export CUDA_LAUNCH_BLOCKING=1
Training Configuration
export HF_DATASETS_CACHE=/path/to/cache
export TRANSFORMERS_CACHE=/path/to/cache
export TOKENIZERS_PARALLELISM=false
Debugging
export PYTHONUNBUFFERED=1
export PYTHONBREAKPOINT=ipdb.set_trace
Troubleshooting
Import Errors
pip install --no-cache-dir --force-reinstall <package>
python -c "import <module>; print(<module>.__file__)"
CUDA/Device Errors
python -c "import torch; torch.cuda.is_available()"
nvcc --version
Memory Issues
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
Project-Specific Setup
For SimPO and similar training projects:
- Check
environment.yml for required versions
- Create conda environment if file exists
- Verify transformers and torch compatibility
- Confirm CUDA/device availability
- Install project in dev mode if setup.py exists
- Log all environment details for reproducibility