본문 바로가기

AI/Coding errors

AttributeError: 'GatedCrossAttentionBlock' object has no attribute 'clip_grad_norm_'

반응형

에러가 일어난 곳: https://github.com/mlfoundations/open_flamingo/tree/main/open_flamingo/train


clip_grad_norm_ no attribute

Openflamingo model을 nccl없이 gloo만 해서 훈련하고자 노력중인데 해당 에러를 만났다.

어떻게 해결해야할지 2시간을 헤매다가 해결방법을 찾았다!


Method: torch framework의 clip_grad_norm_ 이용하기

Flaminogo class

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 작성

반응형