LightDiffusion-Next / docker /patch_sageattention.py
Aatricks's picture
Deploy ZeroGPU Gradio Space snapshot
b701455
#!/usr/bin/env python3
"""
Patch for SageAttention setup.py to support TORCH_CUDA_ARCH_LIST environment variable.
This allows building without GPUs present during build time.
"""
import sys
setup_py_path = "setup.py"
# Read the original setup.py
with open(setup_py_path, 'r') as f:
content = f.read()
# Find the line where compute_capabilities is initialized
target_line = "compute_capabilities = set()"
if target_line not in content:
print("ERROR: Could not find target line in setup.py")
sys.exit(1)
# Add our patch right after compute_capabilities initialization
patch_code = '''
# Check for TORCH_CUDA_ARCH_LIST environment variable first (Docker build support)
env_arch_list = os.environ.get("TORCH_CUDA_ARCH_LIST", None)
if env_arch_list:
print(f"Using TORCH_CUDA_ARCH_LIST from environment: {env_arch_list}")
arch_list = env_arch_list.replace(" ", ";").split(";")
for arch in arch_list:
arch = arch.strip()
if not arch:
continue
if arch.endswith("+PTX"):
arch = arch[:-4].strip()
if arch:
compute_capabilities.add(arch)
'''
# Insert the patch
content = content.replace(
target_line,
target_line + patch_code
)
# Write back
with open(setup_py_path, 'w') as f:
f.write(content)
print("✓ Successfully patched setup.py to support TORCH_CUDA_ARCH_LIST")