패치내역

webui 업데이트후 고장난 embedding extension 학습 수정 (임베딩 학습용으로 만든 extension이 아니라서 전문분야는 아니고 일단 고치긴 했는데 모르겠음.)


Gradient Clipping 구현


Gradient Clipping이란 학습시 특정 weight의 gradient, 즉 변화를 너무 크지 않도록 제한하는 역할인데, 사실 정말 효과적인지는 논란이 있음. 


확실한 건 gradient clipping이 적용될 경우 학습률은 매우 낮아질 수 있고, value를 너무 크게 줄이면 학습이 이루어지지 않을수도 있으니 알아서 사용하는걸 추천...


limit = gradient 자체를 clip하는 경우


norm = norm을 계산해서 value기준으로 clip하는 경우


Norm type는 P-Norm을 따르는데 0이나 infinite는 안될 거임.


또한 weight decay 옵션 등도 추가되어있는데 이건 https://github.com/aria1th/Hypernetwork-MonkeyPatch-Extension/issues/11 를 참고 바람.


Gradient Accumulation, 또는 CosineAnnealingWarmupRestart를 쓸 경우 평균 학습률이 크게 줄어드는 효과가 있으므로, 학습률 자체를 평소보다 크게 적용하는 것을 추천함. 예를 들어 accumulation step = 8이라면 4배 정도를 해줘도 되고, CosineAnnealing은 3배 정도 해줘도 안전함. 두개는 중첩이 가능한 계산인데, 두개 다 쓰면 평소의 10배를 해줘도 안 터질 것.



그리고 전혀 알려지지 않지만 아무튼 자체 기능으로도 병렬 / 직렬 하이퍼네트워크가 가능한데 이걸 만드는 UI도 언젠가 추가할 예정...




매번 강조하지만 하이퍼는 정말 배경도 없이 갑자기 멘땅에 헤딩하는데 이상하게 골이 들어간 경우(...)라서 드림부스와 다르게 이론적 탐구가 필요함. 오히려 이론적 배경이 탄탄한 Embedding과 Dream artist같은 경우와 다르게 하이퍼네트워크는 구조 자체를 이름으로 부르고 있는 야메 구조임(...)


그러니 명확하게 뭐가 정답이란건 아직까지 없음. 따라서 많이 실험하고 부딪히는 수밖에 없고, 다양하게 해보는게 제일임.


Prior knowledge preservation쪽으로 파면 뭐가 나올거같긴 한데 몰?루