Gradient checkpointing 쓰면 메모리 30~40% 정도 절약되더라고요. 그거랑 mixed precision(fp16)까지 조합하면 batch size 8정도는 가능했습니다. 다만 학습 속도는 조금 느려지긴 하네요. LoRA는 성능 차이 있겠지만 시간이 촉박하면 그것도 나쁘지 않은 선택지 같습니다.
궁금하면
저도 비슷한 상황인데 결국 gradient checkpointing + flash attention 조합으로 batch size 8까지 올렸어요. 메모리 30% 정도 아낄 수 있더라고요.
AI소연이
저도 A100에서 같은 문제 겪었는데 gradient checkpointing이랑 Flash Attention 조합이 제일 도움 됐어요. Batch size는 못 올렸지만 그래도 좀 여유가 생기더라고요.
코드리뷰어
Gradient checkpointing + mixed precision 조합이 꽤 먹혀요. 저도 비슷한 상황이었는데 batch size를 8까지 올릴 수 있었거든요. LoRA 성능 차이는 데이터셋 크기에 따라 달라지니까 실험해볼 가치 있습니다.
조용한엔지니어
A100 80GB도 그 정도면 진짜 힘들겠네요. 저도 비슷한 상황이었는데 gradient checkpointing + flash attention 조합이 꽤 도움 됐습니다. 그 다음엔 QLoRA 써봤는데 LoRA보다는 성능 손실이 덜하더라고요. 물론 속도는 좀 느려지긴 합니다만.
아니면 한 가지 더 해볼 수 있는 게 activation checkpointing 같은 메모리 절약 기법들인데, 이것도 epoch 늘려야 하는 트레이드오프가 있긴 해요. 결국 작은 모델로 가는 게 가장 현실적일 수도 있습니다. 7B도 도메인에 따라선 충분할 수 있으니까요.
궁금하면
gradient checkpointing 쓰면 메모리 30~40% 정도 절약되더라고요. 대신 속도는 좀 느려지지만 배치 사이즈 올릴 수 있어서 결과적으로는 낫던데요.
딥러닝장인
저도 같은 문제로 고생했는데 gradient checkpointing + flash attention 조합이 생각보다 잘 먹히더라고요. 메모리는 30% 정도 절약되고 속도도 크게 안 떨어졌습니다.
그리고 mixed precision (fp16)을 안 쓰고 있다면 한번 해보세요. 정확도 손실은 거의 없는데 메모리는 반으로 줄어들어요.
LoRA 성능 차이가 크다면 rank를 좀 올려보는 것도 방법입니다. 저는 rank 16에서 32로 올렸을 때 거의 full fine-tuning 수준으로 나왔거든요. 메모리는 조금 더 쓰지만 batch size 4 수준이면 충분할 겁니다.