Почему API DeepSpeed ​​`estimate_zero2_model_states_mem_needs_…` сообщает об одной и той же памяти для каждого процессора с разными значениями параметра `offload_optimizer`?

Пример, приведенный в документации «Требования к памяти — DeepSpeed ​​0.10.1», выглядит следующим образом:

      python -c 'from deepspeed.runtime.zero.stage_1_and_2 import estimate_zero2_model_states_mem_needs_all_cold; \
estimate_zero2_model_states_mem_needs_all_cold(total_params=2851e6, num_gpus_per_node=8, num_nodes=1)'
      Estimated memory needed for params, optim states and gradients for a:
HW: Setup with 1 node, 8 GPUs per node.
SW: Model with 2851M total params.
  per CPU  |  per GPU |   Options
  127.45GB |   5.31GB | offload_optimizer=cpu
  127.45GB |  15.93GB | offload_optimizer=none

Я заметил, чтоper CPUзначение одинаково для обеих строк. Однако принимает значения иnoneсоответственно, гдеcpuЗначение параметра теоретически будет хранить состояние и градиент оптимизатора в ЦП, тем самым занимая больше памяти ЦП, что не соответствует отчету API. Я неправильно понимаю реализацию ZeRO2 или DeepSpeed?offload_optimizerпараметр?

Я воспроизвел пример на своей машине.

0 ответов

Другие вопросы по тегам