Commit 3a2cf58
feat: Add optional random sign flips to Hadamard rotation
Support randomized Hadamard transform R = H*D where D is a diagonal sign
matrix. The sign vector (block_size/32 uint32 words as a bitmask) is
applied element-wise before the butterfly stages. Since R is orthogonal
(D^2=I), rotating both weights and activations with the same signs
preserves the GEMM result.
Random sign flips improve outlier destruction vs plain Hadamard by
breaking deterministic alignment patterns. Generate signs once per model
with torch.randint(0, 2**32, (block_size//32,), dtype=torch.int32).
Passing signs=None preserves the previous behavior (plain Hadamard).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent 22148c7 commit 3a2cf58
File tree
5 files changed
+64
-28
lines changed- bitsandbytes
- backends/cuda
- csrc
5 files changed
+64
-28
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
588 | 588 | | |
589 | 589 | | |
590 | 590 | | |
591 | | - | |
| 591 | + | |
592 | 592 | | |
593 | 593 | | |
594 | 594 | | |
595 | 595 | | |
596 | | - | |
| 596 | + | |
597 | 597 | | |
598 | 598 | | |
599 | 599 | | |
| |||
602 | 602 | | |
603 | 603 | | |
604 | 604 | | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
605 | 614 | | |
606 | 615 | | |
607 | 616 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1001 | 1001 | | |
1002 | 1002 | | |
1003 | 1003 | | |
1004 | | - | |
| 1004 | + | |
1005 | 1005 | | |
1006 | 1006 | | |
1007 | 1007 | | |
| |||
1012 | 1012 | | |
1013 | 1013 | | |
1014 | 1014 | | |
| 1015 | + | |
1015 | 1016 | | |
1016 | 1017 | | |
1017 | 1018 | | |
1018 | 1019 | | |
1019 | 1020 | | |
1020 | 1021 | | |
| 1022 | + | |
1021 | 1023 | | |
1022 | 1024 | | |
1023 | 1025 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1135 | 1135 | | |
1136 | 1136 | | |
1137 | 1137 | | |
1138 | | - | |
1139 | | - | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
1140 | 1144 | | |
1141 | 1145 | | |
1142 | | - | |
1143 | | - | |
| 1146 | + | |
| 1147 | + | |
1144 | 1148 | | |
1145 | 1149 | | |
1146 | 1150 | | |
1147 | 1151 | | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
1148 | 1156 | | |
1149 | 1157 | | |
1150 | 1158 | | |
1151 | 1159 | | |
1152 | 1160 | | |
1153 | | - | |
| 1161 | + | |
1154 | 1162 | | |
1155 | 1163 | | |
1156 | 1164 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1014 | 1014 | | |
1015 | 1015 | | |
1016 | 1016 | | |
1017 | | - | |
1018 | | - | |
1019 | | - | |
1020 | | - | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
1021 | 1022 | | |
1022 | 1023 | | |
1023 | 1024 | | |
1024 | 1025 | | |
1025 | 1026 | | |
1026 | 1027 | | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
1027 | 1032 | | |
1028 | 1033 | | |
1029 | 1034 | | |
1030 | | - | |
| 1035 | + | |
1031 | 1036 | | |
1032 | 1037 | | |
1033 | 1038 | | |
| |||
1048 | 1053 | | |
1049 | 1054 | | |
1050 | 1055 | | |
| 1056 | + | |
| 1057 | + | |
| 1058 | + | |
| 1059 | + | |
| 1060 | + | |
| 1061 | + | |
| 1062 | + | |
| 1063 | + | |
| 1064 | + | |
| 1065 | + | |
1051 | 1066 | | |
1052 | 1067 | | |
1053 | 1068 | | |
| |||
1093 | 1108 | | |
1094 | 1109 | | |
1095 | 1110 | | |
1096 | | - | |
| 1111 | + | |
1097 | 1112 | | |
1098 | 1113 | | |
1099 | | - | |
| 1114 | + | |
1100 | 1115 | | |
1101 | 1116 | | |
1102 | 1117 | | |
1103 | 1118 | | |
1104 | | - | |
1105 | | - | |
1106 | | - | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
1107 | 1122 | | |
1108 | 1123 | | |
1109 | 1124 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
798 | 798 | | |
799 | 799 | | |
800 | 800 | | |
801 | | - | |
| 801 | + | |
802 | 802 | | |
803 | 803 | | |
804 | 804 | | |
805 | | - | |
| 805 | + | |
806 | 806 | | |
807 | | - | |
808 | | - | |
809 | | - | |
810 | | - | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
811 | 811 | | |
812 | 812 | | |
813 | 813 | | |
| |||
1685 | 1685 | | |
1686 | 1686 | | |
1687 | 1687 | | |
1688 | | - | |
1689 | | - | |
| 1688 | + | |
| 1689 | + | |
1690 | 1690 | | |
1691 | 1691 | | |
1692 | | - | |
1693 | | - | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
1694 | 1696 | | |
1695 | 1697 | | |
1696 | 1698 | | |
| |||
0 commit comments