patch_vllm_autogptq_symmetric_moe_qzeros.py 1.1 KB

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env python3
  2. """Do not pass AutoGPTQ MoE zero-points for symmetric quantization."""
  3. import sys
  4. from pathlib import Path
  5. source_root = Path(sys.argv[1]) if len(sys.argv) > 1 else Path.cwd()
  6. target = source_root / "vllm/model_executor/layers/quantization/auto_gptq.py"
  7. bad = ''' w1_zp=getattr(layer, "w13_qzeros", None),
  8. w2_zp=getattr(layer, "w2_qzeros", None),'''
  9. fixed = ''' w1_zp=getattr(layer, "w13_qzeros", None)
  10. if not self.quant_config.is_sym
  11. else None,
  12. w2_zp=getattr(layer, "w2_qzeros", None)
  13. if not self.quant_config.is_sym
  14. else None,'''
  15. if not target.exists():
  16. print(f"{target} not found; skipping AutoGPTQ MoE qzeros workaround")
  17. else:
  18. text = target.read_text()
  19. if fixed in text:
  20. print("AutoGPTQ MoE qzeros workaround already present; skipping")
  21. elif bad in text:
  22. target.write_text(text.replace(bad, fixed, 1))
  23. print("Applied AutoGPTQ symmetric MoE qzeros workaround")
  24. else:
  25. print("Known vulnerable AutoGPTQ MoE qzeros pattern not found; skipping")