Note:
 Only floating point tensors are cast to their specified dtypes.

Note:
 In "summon_full_params", parameters are forced to full precision,
 but buffers are not.

Note:
 "state_dict" checkpoints parameters and buffers in full
 precision. For buffers, this is only supported for
 "StateDictType.FULL_STATE_DICT".

Note:
 Each low precision dtype must be specified explicitly. For
 example, "MixedPrecision(reduce_dtype=torch.float16)" only
 specifies the reduction dtype to be low precision, and FSDP will
 not cast parameters or buffers.

Note:
 If a "reduce_dtype" is not specified, then gradient reduction
 happens in "param_dtype" if specified or the original parameter
 dtype otherwise.

Note:
 If the user passes a model with "BatchNorm" modules and an
 "auto_wrap_policy" to the FSDP constructor, then FSDP will
 disable mixed precision for "BatchNorm" modules by wrapping them
