Skip to content

Fix hgq device bug - #80

Open
MartinaJoergensen wants to merge 3 commits into
cern-nextgen:devfrom
MartinaJoergensen:fix-hgq-device-bug
Open

Fix hgq device bug#80
MartinaJoergensen wants to merge 3 commits into
cern-nextgen:devfrom
MartinaJoergensen:fix-hgq-device-bug

Conversation

@MartinaJoergensen

Copy link
Copy Markdown

HGQQuantizer.build() read device = self._k.device, a stale CPU placeholder set at __init__ time, instead of the input tensor's real device. Since the module is built on the first forward pass, after the model's own .to(device) call already ran, new bit-width parameters/buffers always landed on CPU, causing:

RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

Fix: thread the real device through build() from x.device at the forward() call site instead. Applied across hgq_quantizer.py, activations.py, and layers.py, plus matching test updates.

Verified working via profile_hgq_memory.py and a full 3-epoch end-to-end training run

See #78.

nroope and others added 3 commits July 31, 2026 16:02
HGQQuantizer.build() read device = self._k.device, a stale CPU
placeholder set at __init__ time, instead of the input tensor's real
device. Since the module is built lazily on the first forward pass --
after the model's own .to(device) call already ran -- new bit-width
parameters/buffers always landed on CPU, causing:

RuntimeError: Expected all tensors to be on the same device, but
found at least two devices, cuda:0 and cpu!

Fix: thread the real device through build() from x.device at the
forward() call site instead. Applied across hgq_quantizer.py,
activations.py, and layers.py, plus matching test updates.

Verified working via profile_hgq_memory.py and a full 3-epoch
end-to-end training run (pquant-hgq-crashtest-accum-cwfix).

See cern-nextgen#78.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants