MCPcopy Create free account
hub / github.com/ml-explore/mlx / test_rope

Method test_rope

python/tests/test_fast.py:72–170  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

70
71class TestFast(mlx_tests.MLXTestCase):
72 def test_rope(self):
73 T = 4
74
75 # Defaults: dims, dtype, base, scale, offset, traditional
76 defaults = (8, mx.float32, 10000.0, 1.0, 0, False)
77
78 # Per dtype absolute tolerance
79 tolerances = {mx.float32: 1e-6, mx.float16: 1e-3, mx.bfloat16: 1e-2}
80
81 # Test cases:
82 dtypes = [mx.float32, mx.float16, mx.bfloat16]
83 bases = [10000.0, 1000000.0]
84 scales = [1.0, 2.0]
85 offsets = [0, 3, mx.array(3)]
86 traditional = [True, False]
87
88 for traditional in [True, False]:
89 dims, dtype, _, scale, offset, _ = defaults
90 for base in bases:
91 x = mx.random.uniform(shape=(2, T, dims)).astype(dtype)
92 rx = rope_orig(x, dims, traditional, base, scale, offset)
93 rx_fast = mx.fast.rope(
94 x,
95 dims,
96 traditional=traditional,
97 base=base,
98 scale=scale,
99 offset=offset,
100 )
101 self.assertLess(mx.abs(rx - rx_fast).max(), tolerances[dtype])
102
103 dims, _, base, scale, offset, _ = defaults
104 for dtype in dtypes:
105 x = mx.random.uniform(shape=(2, T, dims)).astype(dtype)
106 rx = rope_orig(x, dims, traditional, base, scale, offset)
107 rx_fast = mx.fast.rope(
108 x,
109 dims,
110 traditional=traditional,
111 base=base,
112 scale=scale,
113 offset=offset,
114 )
115 if dtype != mx.float32:
116 ry = rope_orig(
117 x.astype(mx.float32), dims, traditional, base, scale, offset
118 )
119 self.assertLess(mx.abs(ry - rx_fast).max(), tolerances[dtype])
120 self.assertLess(mx.abs(rx - rx_fast).max(), tolerances[dtype])
121
122 dims, dtype, base, scale, _, _ = defaults
123 for offset in offsets:
124 x = mx.random.uniform(shape=(2, T, dims)).astype(dtype)
125 rx = rope_orig(x, dims, traditional, base, scale, offset)
126 rx_fast = mx.fast.rope(
127 x,
128 dims,
129 traditional=traditional,

Callers

nothing calls this directly

Calls 3

rope_origFunction · 0.85
arrayMethod · 0.60
maxMethod · 0.45

Tested by

no test coverage detected