반응형
에러가 일어난 곳: https://github.com/mlfoundations/open_flamingo/tree/main/open_flamingo/train
Openflamingo model을 nccl없이 gloo만 해서 훈련하고자 노력중인데 해당 에러를 만났다.
어떻게 해결해야할지 2시간을 헤매다가 해결방법을 찾았다!
Method: torch framework의 clip_grad_norm_ 이용하기
Flamingo class이다.
해당 class에서 밑의 코드와 같은 부분을 찾을 수 있다!
# set up clip_grad_norm_ function
def clip_grad_norm_(max_norm):
self.perceiver.clip_grad_norm_(max_norm)
for layer in self.lang_encoder.gated_cross_attn_layers:
if layer is not None:
layer.clip_grad_norm_(max_norm)
self.lang_encoder.get_input_embeddings().clip_grad_norm_(max_norm)
self.clip_grad_norm_ = clip_grad_norm_
해당 코드가 바로 GatedCrossAttention layer를 나타내는 부분이다.
해당 부분에서 GatedCrossAttention layer는 clip_grad_norm_을 가지고 있지 않기 때문에 밑에 코드처럼 바꿔주면 에러가 해결된다!
# set up clip_grad_norm_ function
def clip_grad_norm_(max_norm):
self.perceiver.clip_grad_norm_(max_norm)
for layer in self.lang_encoder.gated_cross_attn_layers:
if layer is not None:
#layer.clip_grad_norm_(max_norm)
torch.nn.utils.clip_grad_norm_(layer.parameters(), max_norm) # 7/25 change
self.lang_encoder.get_input_embeddings().clip_grad_norm_(max_norm)
self.clip_grad_norm_ = clip_grad_norm_
2023.07.25 Kyujinpy 작성
반응형