llmcompressor.utils.dist
Functions:
-
broadcast_qparams_and_cleanup–Broadcast quantization params from owning rank and clean up observer stats.
-
greedy_bin_packing–Distribute items across bins using a greedy bin-packing heuristic.
-
wait_for_comms–Block until all pending async distributed operations complete.
broadcast_qparams_and_cleanup
broadcast_qparams_and_cleanup(
module_list: list[Module],
module_to_rank: dict[Module, int],
qparam_names: Sequence[str],
skip_cpu: bool = True,
) -> None
Broadcast quantization params from owning rank and clean up observer stats.
Parameters:
-
module_list(list[Module]) –all modules across all ranks
-
module_to_rank(dict[Module, int]) –mapping from module to the rank that computed its qparams
-
qparam_names(Sequence[str]) –attribute names to broadcast (e.g. weight_scale, weight)
-
skip_cpu(bool, default:True) –if True, skip broadcasting for CPU-offloaded modules
Source code in src/llmcompressor/utils/dist.py
greedy_bin_packing
Distribute items across bins using a greedy bin-packing heuristic.
Items are sorted by weight in descending order, then each item is assigned to the bin with the smallest current total weight. This approximates an even distribution of weight across bins.
Parameters:
-
items–items to distribute. Sorted in-place by descending weight.
-
num_bins–number of bins to distribute items across.
-
item_weight_fn–callable that returns the weight of an item. Defaults to uniform weight of 1.
Returns:
-
tuple[list[T], list[list[T]], dict[T, int]]–a 3-tuple of: - items: the input list, now sorted by descending weight. - bin_to_items: list of length
num_binswhere each element is the list of items assigned to that bin. - item_to_bin: mapping from each item to its assigned bin index.
Source code in src/llmcompressor/utils/dist.py
wait_for_comms
Block until all pending async distributed operations complete.
Calls wait() on each work handle, then clears the list in-place
so it can be reused for the next batch of operations.
Parameters:
-
pending_comms–mutable list of async communication handles (returned by
dist.reduce,dist.broadcast, etc. withasync_op=True). The list is cleared after all operations have completed.