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_map
doesn'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_blockwise
anddequantize_blockwise
to crash or give incorrect outputs whenever the default torch dtype is modified beforename2qmap["dynamic"]
is created on the first call. (Obviously usingtorch.set_default_dtype
isn'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: