|
16 | 16 | and simplicity/ease of use. |
17 | 17 | """ |
18 | 18 |
|
| 19 | +from __future__ import annotations |
| 20 | + |
19 | 21 | import copy |
20 | 22 | import functools |
21 | 23 | import inspect |
@@ -93,7 +95,7 @@ def get_module_size_with_ties( |
93 | 95 | return module_size_with_ties, tied_module_names, tied_modules |
94 | 96 |
|
95 | 97 |
|
96 | | -def check_and_set_device_map(device_map: "torch.device | int | str | dict | None") -> dict | str | None: |
| 98 | +def check_and_set_device_map(device_map: torch.device | int | str | dict | None) -> dict | str | None: |
97 | 99 | from ..modeling_utils import get_torch_context_manager_or_global_device |
98 | 100 |
|
99 | 101 | # Potentially detect context manager or global device, and use it (only if no device_map was provided) |
@@ -142,8 +144,8 @@ def check_and_set_device_map(device_map: "torch.device | int | str | dict | None |
142 | 144 |
|
143 | 145 |
|
144 | 146 | def compute_module_sizes( |
145 | | - model: "PreTrainedModel", |
146 | | - hf_quantizer: "HfQuantizer | None" = None, |
| 147 | + model: PreTrainedModel, |
| 148 | + hf_quantizer: HfQuantizer | None = None, |
147 | 149 | buffers_only: bool = False, |
148 | 150 | only_modules: bool = True, |
149 | 151 | ) -> tuple[dict[str, int], dict[str, int]]: |
@@ -191,7 +193,7 @@ def all_tensors(): |
191 | 193 | return all_module_sizes, leaves_module_sizes |
192 | 194 |
|
193 | 195 |
|
194 | | -def compute_module_total_buffer_size(model: nn.Module, hf_quantizer: "HfQuantizer | None" = None): |
| 196 | +def compute_module_total_buffer_size(model: nn.Module, hf_quantizer: HfQuantizer | None = None): |
195 | 197 | """ |
196 | 198 | Compute the total size of buffers in each submodule of a given model. |
197 | 199 | """ |
@@ -238,10 +240,10 @@ def get_max_memory(max_memory: dict[int | str, int | str] | None = None): |
238 | 240 |
|
239 | 241 |
|
240 | 242 | def get_balanced_memory( |
241 | | - model: "PreTrainedModel", |
| 243 | + model: PreTrainedModel, |
242 | 244 | max_memory: dict[int | str, int | str] | None = None, |
243 | 245 | no_split_module_classes: set[str] | None = None, |
244 | | - hf_quantizer: "HfQuantizer | None" = None, |
| 246 | + hf_quantizer: HfQuantizer | None = None, |
245 | 247 | low_zero: bool = False, |
246 | 248 | ): |
247 | 249 | """ |
@@ -336,10 +338,10 @@ def get_balanced_memory( |
336 | 338 |
|
337 | 339 |
|
338 | 340 | def _get_device_map( |
339 | | - model: "PreTrainedModel", |
| 341 | + model: PreTrainedModel, |
340 | 342 | device_map: dict | str | None, |
341 | 343 | max_memory: dict | None, |
342 | | - hf_quantizer: "HfQuantizer | None", |
| 344 | + hf_quantizer: HfQuantizer | None, |
343 | 345 | ) -> dict: |
344 | 346 | """Compute the final `device_map` to use if we passed a value in ['auto', 'balanced', 'balanced_low_0', 'sequential']. |
345 | 347 | Otherwise, we check for any device inconsistencies in the device_map. |
@@ -457,7 +459,7 @@ def get_device(device_map: dict | None, param_name: str, valid_torch_device: boo |
457 | 459 |
|
458 | 460 |
|
459 | 461 | def accelerate_disk_offload( |
460 | | - model: "PreTrainedModel", |
| 462 | + model: PreTrainedModel, |
461 | 463 | disk_offload_folder: str | None, |
462 | 464 | checkpoint_files: list[str] | None, |
463 | 465 | device_map: dict, |
@@ -543,7 +545,7 @@ def offload_weight(weight: torch.Tensor, weight_name: str, offload_folder: str | |
543 | 545 | return offload_index |
544 | 546 |
|
545 | 547 |
|
546 | | -def load_offloaded_parameter(model: "PreTrainedModel", param_name: str) -> torch.Tensor: |
| 548 | +def load_offloaded_parameter(model: PreTrainedModel, param_name: str) -> torch.Tensor: |
547 | 549 | """Load `param_name` from disk, if it was offloaded due to the device_map, and thus lives as a meta parameter |
548 | 550 | inside `model`. |
549 | 551 | This is needed when resaving a model, when some parameters were offloaded (we need to load them from disk, to |
@@ -574,7 +576,7 @@ def _init_infer_auto_device_map( |
574 | 576 | max_memory: dict[int | str, int | str] | None = None, |
575 | 577 | no_split_module_classes: set[str] | None = None, |
576 | 578 | tied_parameters: list[list[str]] | None = None, |
577 | | - hf_quantizer: "HfQuantizer | None" = None, |
| 579 | + hf_quantizer: HfQuantizer | None = None, |
578 | 580 | ) -> tuple[ |
579 | 581 | list[int | str], |
580 | 582 | dict[int | str, int | str], |
@@ -647,7 +649,7 @@ def infer_auto_device_map( |
647 | 649 | clean_result: bool = True, |
648 | 650 | offload_buffers: bool = False, |
649 | 651 | tied_parameters: list[list[str]] | None = None, |
650 | | - hf_quantizer: "HfQuantizer | None" = None, |
| 652 | + hf_quantizer: HfQuantizer | None = None, |
651 | 653 | no_placement_params: set[str] | None = None, |
652 | 654 | ): |
653 | 655 | """ |
|
0 commit comments