티스토리 뷰

'RuntimeError: CUDA error: device-side assert triggered'

 

이 에러는 가질 수 있는 값의 범위를 벗어나는 값이 들어왔을 때 발생한다.

 

embed_tokens = nn.Embedding(vocab_size, hidden_size)

...

embeds = embed_tokens(input_ids) # 에러 발생

나의 경우, 위 부분에서 에러가 발생했다.

내가 사용한 사전학습 모델에서의 tokenizer의 vocab_size는 30000이었는데, 여기에 special token을 10개 추가하고 아래와 같이 resize를 해주어서 vocab_size를 30010으로 설정했다. 

model.resize_token_embeddings(len(tokenizer))

(resize를 안 해준 경우에도 이 에러가 발생할 것이다)

 

그래서 토크나이징된 input_ids에서는 1~30010까지의 값이 존재했는데, 다른 코드 부분에서 꼬여서 embed_tokens를 만들 때 넘겨준 vocab_size가 30000이었다. 

즉, 30000까지의 값을 받도록 선언된 객체에 30000보다 큰 값이 들어감으로써 에러가 발생한 것이다.

따라서 embed_tokens를 선언할 때의 vocab_size를 30010으로 맞춰주어서 에러를 해결하였다.

반응형

댓글