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 수준이면 충분할 겁니다.
현실주의자
Gradient checkpointing이랑 mixed precision 함께 쓰면 메모리 꽤 줄어들더라고요. 저도 비슷한 상황이었는데 batch size 8까지는 괜찮았어요. LoRA 성능 차이는 좀 감수하고 가거나 QLoRA도 한번 시도해볼 만합니다.
흐름타는개발자
Gradient checkpointing이랑 mixed precision 함께 쓰면 메모리 30~40% 줄일 수 있더라고요. 저도 A100으로 비슷한 상황이었는데 그것만으로도 batch size 6~8까지는 올릴 수 있었어요.
다만 LoRA랑 full fine-tuning이랑 성능 차이가 크다면 중간에 LoRA rank를 좀 올려보는 것도 방법입니다. r=64, alpha=128 정도면 full tuning과 거의 비슷한 수준까지 나오더군요. 메모리도 조금만 더 들고요.
아니면 정말 마지막 수단으로 4-bit quantization 써서 base model 로드하고 LoRA 적용하면 훨씬 가벼워집니다. 요즘 bitsandbytes 라이브러리가 꽤 안정적이거든요.
GPT덕후하나
Gradient checkpointing + activation checkpointing 조합 꽤 효과 있더라고요. 저도 비슷한 상황에서 batch size 4에서 8까지 올릴 수 있었거든요. 다만 학습 속도가 좀 느려지긴 하는데 메모리 절약 대비 괜찮은 것 같아요.
혹시 mixed precision (bfloat16)은 써보셨나요? A100이면 네이티브 지원해서 성능 손실 거의 없으면서도 메모리는 확 줄어들어요. 저희도 이거랑 gradient checkpointing 조합으로 꽤 개선됐습니다.
QLoRA도 한번 고려해보셔도 좋을 것 같아요. 성능이 LoRA보다 떨어진다는 평도 있긴 한데, 요즘 4-bit quantization이 많이 개선되어서 체감상 차이는 생각보다 적더