И последний пост на сегодня, про GaLore. Выяснились некоторые ограничения их интеграции с HF, которые были не сразу очевидны:
- В блоге на HF ошибка, в optim_target_modules надо передавать названия линейных слоёв, а не загадочные "attn" и "mlp".
- Слой embed_tokens не nn.Linear, а nn.Embedding, а значит входные эмбеддинги с GaLore поменять нельзя.
- Попытка применить к lm_head выливается в OOM, даже с 8-битным оптимизатором.
- В HF никак нельзя поменять параметры "сжатия", например ранг.
- Послойный оптимизатор не работает с gradient_accumulation_steps отличным от 1 (но это хотя бы логично).
И в сухом остатке имеем просто Лору с рюшечками, потому что меняются ровно те же слои. Но хоть работает быстрее.
- В блоге на HF ошибка, в optim_target_modules надо передавать названия линейных слоёв, а не загадочные "attn" и "mlp".
- Слой embed_tokens не nn.Linear, а nn.Embedding, а значит входные эмбеддинги с GaLore поменять нельзя.
- Попытка применить к lm_head выливается в OOM, даже с 8-битным оптимизатором.
- В HF никак нельзя поменять параметры "сжатия", например ранг.
- Послойный оптимизатор не работает с gradient_accumulation_steps отличным от 1 (но это хотя бы логично).
И в сухом остатке имеем просто Лору с рюшечками, потому что меняются ровно те же слои. Но хоть работает быстрее.