- Restored v1.0.13 with all 9 working nodes (ROCMOptimizedCheckpointLoader, ROCMOptimizedKSampler, etc.) - Implemented comprehensive debug flag system (ROCM_NINODES_DEBUG=1) - Created complete test suite with performance and correctness tests - Added data capture infrastructure for real workflow testing - Built standalone test runner with mock data support - Created ComfyUI integration tests for Flux and WAN workflows - Added comprehensive documentation (ARCHITECTURE.md, RULES.md, TESTING_GUIDE.md) - Updated README with testing section and performance targets - All tests passing with proper error handling and data validation Performance Targets: - Flux: 78% improvement (≤110s total) - WAN: 5.6% improvement (≤93s sampling) - VAE Decode: <10s for any resolution - Checkpoint Load: <30s for Flux models Ready for production use with comprehensive testing infrastructure!
Test Data Directory
This directory contains captured test data for ROCM Ninodes testing and benchmarking.
Directory Structure
test_data/
├── captured/ # Captured data from ComfyUI workflows
│ ├── flux_1024x1024/ # Flux workflow data (1024x1024 images)
│ │ ├── checkpoint_loader_input_*.pkl
│ │ ├── checkpoint_loader_output_*.pkl
│ │ ├── ksampler_input_*.pkl
│ │ ├── ksampler_output_*.pkl
│ │ ├── vae_decode_input_*.pkl
│ │ └── vae_decode_output_*.pkl
│ ├── wan_320x320_17frames/ # WAN workflow data (320x320, 17 frames)
│ │ ├── ksampler_input_*.pkl
│ │ ├── ksampler_output_*.pkl
│ │ ├── vae_decode_input_*.pkl (5D tensor data)
│ │ └── vae_decode_output_*.pkl (4D tensor data)
│ ├── timing/ # Timing data for performance analysis
│ │ ├── timing_checkpoint_loader_*.pkl
│ │ ├── timing_ksampler_*.pkl
│ │ └── timing_vae_decode_*.pkl
│ └── memory/ # Memory usage data
│ ├── memory_checkpoint_loader_*.pkl
│ ├── memory_ksampler_*.pkl
│ └── memory_vae_decode_*.pkl
└── README.md # This file
Data Capture
Data is captured when ROCM_NINODES_DEBUG=1 environment variable is set. This enables:
- Input/Output Tensors: Raw tensor data for testing
- Timing Information: Execution times for performance analysis
- Memory Usage: GPU memory allocation and usage patterns
- Metadata: Additional context about the execution
Usage
Capturing Data
# Set debug mode
export ROCM_NINODES_DEBUG=1
# Run ComfyUI workflow
python /home/nino/ComfyUI/main.py --use-pytorch-cross-attention --highvram --cache-none
# Data will be automatically saved to test_data/captured/
Loading Data for Testing
from debug_config import load_debug_data, get_latest_debug_file
# Load latest checkpoint loader input
checkpoint_file = get_latest_debug_file("checkpoint_loader_input", "flux_1024x1024")
if checkpoint_file:
data = load_debug_data(checkpoint_file)
# Load latest VAE decode input
vae_file = get_latest_debug_file("vae_decode_input", "wan_320x320_17frames")
if vae_file:
data = load_debug_data(vae_file)
File Formats
Input/Output Files
- Format: Pickle files containing dictionaries
- Structure:
{ 'data': <actual_tensor_or_data>, 'timestamp': <unix_timestamp_ms>, 'metadata': { 'function': 'function_name', 'node_type': 'ROCMOptimizedVAEDecode', # ... other metadata }, 'tensor_info': { # If data contains tensors 'shape': <tensor_shape>, 'dtype': <tensor_dtype>, 'device': <tensor_device>, 'requires_grad': <boolean> } }
Timing Files
- Format: Pickle files containing timing data
- Structure:
{ 'function': 'function_name', 'start_time': <start_timestamp>, 'end_time': <end_timestamp>, 'duration': <duration_seconds>, 'metadata': { 'node_type': 'ROCMOptimizedVAEDecode', 'input_shape': <input_shape>, # ... other metadata } }
Memory Files
- Format: Pickle files containing memory usage data
- Structure:
{ 'function': 'function_name', 'timestamp': <unix_timestamp>, 'gpu_memory_allocated': <bytes_allocated>, 'gpu_memory_reserved': <bytes_reserved>, 'metadata': { 'node_type': 'ROCMOptimizedVAEDecode', 'input_shape': <input_shape>, # ... other metadata } }
Data Management
Cleaning Up
# Remove old captured data (older than 7 days)
find test_data/captured -name "*.pkl" -mtime +7 -delete
# Remove all captured data
rm -rf test_data/captured/*
Archiving
# Create archive of captured data
tar -czf test_data_$(date +%Y%m%d).tar.gz test_data/captured/
# Restore from archive
tar -xzf test_data_20250110.tar.gz
Notes
- Debug mode has zero performance impact when disabled (
ROCM_NINODES_DEBUG=0) - Data files are automatically timestamped to prevent conflicts
- Tensor data is saved in CPU memory to ensure compatibility
- Large tensor data may result in large pickle files
- Consider disk space when enabling debug mode for extended periods