Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CPU offload режим для GPT3XL #59

Closed
exelents opened this issue May 17, 2021 · 8 comments
Closed

CPU offload режим для GPT3XL #59

exelents opened this issue May 17, 2021 · 8 comments

Comments

@exelents
Copy link

exelents commented May 17, 2021

Добрый день.
Недавно при попытке файнтюнить самую большую GPT3XL столкнулся с ошибкой нехватки памяти. Попытался в конфиге deepspeed включить режим cpu_offload и обломался - выдаётся ошибка, см стек по ссылке:
https://gist.github.com/exelents/dd64ddd745bfa732a809a6b3e9af678d
RuntimeError: expected input to be on cuda
Вопрос - что нужно сделать чтоб данная модель завелась в режиме cpu offload и возможно ли это вообще?

@exelents
Copy link
Author

Я дико извиняюсь, похоже сам нашел как забороть проблему.
В файле pretrain_gpt3.py просто заменил оптимизатор:

# from apex.optimizers import FusedAdam as Adam
from deepspeed.ops.adam import DeepSpeedCPUAdam as Adam

Надеюсь больше не будет подводных камней.

@AlexanderKozhevin
Copy link

@exelents добрый день.
не могли бы подсказать, я файл pretrain_gpt3 изменил.
Но ошибку все равно получаю. " module 'apex' has no attribute 'optimizers'"

На этапе теста

import deepspeed.ops.sparse_attention.sparse_attn_op

@exelents
Copy link
Author

Не могли бы вы привести полный стек ошибки? А заодно какую команду вы запускаете?

@Artyrm
Copy link

Artyrm commented Jul 29, 2021

@exelents в Colab это помогло мне продвинуться дальше, но теперь вылетает с такой ошибкой:

 > number of parameters on model parallel rank 0: 1315737600
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node 7507dafadf1d exited on signal 4 (Illegal instruction).
--------------------------------------------------------------------------

А у вас без проблем всё заработало?

UPD Я подумал, Colab же периодически меняет окружение, возможно у меня что-то скомпилировано было для другого уже, попробую пересобрать, например apex.
UPD2. Не помогает, да и там и там Intel(R) Xeon(R) CPU @ 2.20GHz оказался, так что вряд ли в этом было дело...
UPD3. Переустановил Deepspeed, стало лучше - процесс прошёл дальше. Очевидно, выбивает по объёму памяти. Думаю, что делать. Память-то как раз расширенная на Colab.

tcmalloc: large alloc 5260378112 bytes == 0x56198f3ac000 @  0x7fcff3687b6b 0x7fcff36a7379 0x7fcf4e3aa74e 0x7fcf4e3ac7b6 0x7fcfd1ef0fa2 0x7fcfd21dbbd3 0x7fcfd21b3207 0x7fcfd21ce2dc 0x7fcfd21aa78a 0x7fcfd21b3207 0x7fcfd21ce2dc 0x7fcfd229a0dd 0x7fcfd1ee7a25 0x7fcfd240dc97 0x7fcfd245c525 0x7fcfd1abe0ce 0x7fcfd21d76f3 0x7fcfd21b0fa2 0x7fcfd1abe0ce 0x7fcfd21d76f3 0x7fcfd22bdc06 0x7fcfe1f7ba47 0x5618812ca0a4 0x5618812c9da0 0x56188133e868 0x5618812cb65a 0x561881339d67 0x561881338c35 0x5618812cbfec 0x56188130cbc9 0x561881309ac4
--------------------------------------------------------------------------
mpirun noticed that process rank 0 with PID 0 on node 7507dafadf1d exited on signal 9 (Killed).

@exelents
Copy link
Author

exelents commented Jul 29, 2021

на счёт памяти - не подскажу, у меня-то как раз памяти много, с OOM не сталкивался.

@Artyrm
Copy link

Artyrm commented Jul 29, 2021

А насколько много?

В Colab сейчас у меня GPU Tesla P100-PCIE 16GB и соответственно 24GB ОЗУ.
Дотренировывать пытаюсь на жалких 100кБ текста.

Как-то досадно, ведь вроде бы выложен Colab ноутбук как раз с примером, и у меня вроде максимум того, что возможно на Colab...

PS читаю ваши комментарии на github у Deepspeed :)

@exelents
Copy link
Author

Очень много. Б/у серверное железо с кучей оперы, гораздо больше чем на коллабе. Видюха RTX3090 на ней соответственно 24 ГБ памяти. Тренируете на deepspeed? Попробуйте конфиг дипспида поставить тот который я вам сейчас прикреплю.
gpt3_xl_sparse_2048_offload.json.zip

@Artyrm
Copy link

Artyrm commented Jul 29, 2021

Да, на Deepspeed, иначе бы offload в ОЗУ не получился (хотя я сейчас смотрю, есть вроде флаги отдельные у трейнера, например

  cpu_optimizer ................ False
  cpu_torch_adam ............... False

К сожалению, не помог конфиг. Для будущих поколений приложу что добавлено в сравнении с моим.

image

В любом случае, спасибо!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants