이라는 제목의 글을 허깅페이스 블로그에서 발견해서 소개함


https://huggingface.co/blog/FPHam/lora-secrets-1


(레딧에 게시된 제 글을 전재한 글)


원하셨으니 여기 있습니다:


데이터 세트의 품질은 모든 것의 95%입니다. 나머지 5%는 잘못된 파라메터로 망치지 않는 것입니다.


네, 알아요, 쩝! 사람들이 비밀 파라메터나 비법을 찾는다고 하지만, 이것이 핵심입니다.


그리고 저는 깨끗한 데이터 세트를 의미합니다. 네, 인터넷에서 생성되거나 긁어온 수천 개(어쩌면 수만 개)의 항목이 있는데 누가 그것을 볼 시간이 있을까요? 저는 "유명한" 데이터 셋에서도 그것들을 종종 발견합니다. 무작위로 몇 가지 항목을 살펴보면 곧 쓰레기를 발견할 수 있는데, 이는 분명히 생성되었거나 긁어왔지만 실제로 내용물을 확인 하지 않았기 때문입니다. 썩은 달걀 몇 개만 있어도 전체를 망칠 수 있습니다.


데이터 세트를 수동으로 확인하고 쓰레기를 제거하거나 변경하기 시작하자 품질이 10배나 향상되었습니다. 예, 시간이 많이 걸리긴 하지만 어떤 파라메터나 요령으로도 이 문제를 피해갈 수는 없습니다.


훈련 파라메터는 더 나은 목표물을 만들기 위한 것이 아니라 망치지 않기 위한 것이므로, 존재하지 않는 완벽한 학습률 2.5647e-4를 쫓을 필요는 없습니다. 올바른 방향을 목표로 삼고 데이터 세트가 잘 준비되어 있다면 대부분의 경우 그 목표에 도달할 수 있습니다.



몇 가지 참고 사항이 더 있습니다:


13b의 한계는 딱 명확합니다. 13b에서 100% 견고한 파인튜닝을 할 수 있는 방법은 없습니다. 근접할 수는 있지만 어린아이처럼 무릎에 우유 한 컵을 엎을 때도 있습니다. 제대로된 결과를 보려면 최소 33b는 필요합니다. 안타깝게도 24GB의 가정용 하드웨어에서 33b를 훈련하는 것은 기본적으로 불가능합니다. 앞서 말씀드린 대로 파라메터를 낮춰야 하기 때문에 기본적으로 망칠 수 있습니다. 33b의 경우 최소한 48GB가 있어야 돌려볼 수 있습니다.


경험에 비춘 솔직한 의견으로는 그라데이션 누적(GA = gradient accumulation)은 몇 개 이상의 batch를 수행하는 경우 품질을 저하시킬 수 있습니다. 어딘가에 최적점이 있을 수 있지만 전 못 찾았습니다. 물론 배치 1과 GA 32가 배치 1과 GA 1보다 낫겠지만, 결국 미봉책에 불과합니다: 그래도 과적합을 방지할 수 있으므로 일반화에 도움이 될 수 있습니다. 목표가 무엇이고 데이터 세트가 얼마나 다양한지에 따라 다릅니다.


데이터 세트의 크기는 베이스모델을 파인튜닝 할 때는 중요하지만 이미 파인튜닝된 모델을 바탕으로 추가 파인튜닝할 때는 덜 중요합니다. - 사실 이 경우에는 오히려 적을수록 좋거나 이전의 파인튜닝을 망칠 수도 있습니다.


알파 = 랭크의 2배 라는 공식은 사람들이 저사양 GPU를 가지고 있고 목표에 빨리 도달하기를 원했던 옛날에 나온 것 같습니다. 가중치를 두 배로 늘리는 것 외에는 별 의미가 없는 것 같습니다. 더 크게 만들면 노이즈도 더 커지기 마련입니다


제가 선호하는 스케줄러는 워밍업을 1에포크 동안 유지한 다음 남은 1-x에포크 동안 cosine down입니다.


rank는 말 그대로 훈련 가능한 파라미터의 수를 의미하며, 다른 의미(스타일 vs 지식)를 찾으려고 노력할 필요가 없습니다. 비유하자면 1백만 화소와 16백만 화소로 촬영한 이미지를 비교하는 것과 같습니다. 1M픽셀의 경우 전체 이미지는 항상 선명하지만 디테일이 매우 흐릿합니다. 큰 피사체는 여전히 볼 수 있지만 디테일은 괜찮을 것이라고 기대하지 않는 것이 좋습니다. 물론 문제는 이러한 매개변수를 채울 수 있을 만큼 다양한 학습 데이터를 보유하고 있느냐는 것입니다. 그렇지 않다면 일반화하기 어려운 매우 특정한 모델을 만들게 될 것입니다. 랭크를 낮추게 되면 일반화에 도움이 되지만, 일상적인 세부 사항을 놓치게 됩니다.



또 다른 조언이 있나요?


아, 네, LLM용 LORA에 대해 말씀드렸지만 이미지 디퓨전 모델의 로라 튜닝에도 분명히 적용될 수 있는 개념들입니다. 실제로는 모두 같은 것입니다(따라서 PEFT는 두 가지 모두에 사용할 수 있으며 동일한 규칙이 적용됩니다).