Bug fix: Update create_dynamic_map to always return a float32 tensor #1521
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
bitsandbytes.functional.create_dynamic_mapdoesn't specify a dtype for the result tensor it creates, so it will use the torch default dtype. However, all of thecquantize_blockwise_*/cdequantize_blockwise_*functions in pythoninterface.cpp expect afloat *forcode. This discrepancy causesquantize_blockwiseanddequantize_blockwiseto crash or give incorrect outputs whenever the default torch dtype is modified beforename2qmap["dynamic"]is created on the first call. (Obviously usingtorch.set_default_dtypeisn't necessarily the best practice, but at the time of writing it's still in fairly common use, e.g. https://github.com/meta-llama/llama-models/blob/main/models/llama3/reference_impl/generation.py#L157.)To reproduce: