Python/Debugging

ModuleNotFoundError: No module named 'fused_layer_norm_cuda' 해결법

jimmy_AI 2022. 3. 21. 20:55
반응형

transformers apex 연동 오류 디버깅

transformers 라이브러리의 T5 모델을 불러오는 과정에서

아래와 같은 에러가 발생하였습니다.

import transformers

model = transformers.T5ForConditionalGeneration.from_pretrained("t5-base")

Warning 메시지 :

'fused_weight_gradient_mlp_cuda' module not found. gradient accumulation

fusion with weight gradient computation disabled.

 

Error 메시지 : 
ModuleNotFoundError: No module named 'fused_layer_norm_cuda'

 

 

오류 원인

T5 모델을 불러오는 코드에서 apex의 메소드를 이용하는 듯 하였는데,

기본으로 설치된 apex 패키지가 아니라

NVIDIA 공식 github에서 제공하는 apex 패키지에 맞추어져 있습니다.

 

또한, apex는 CUDA and C++ extensions 버전과 Python-only build 버전의 2가지 형태를

제공하는데, CUDA and C++ extensions 버전에만 해당 기능이 구현된 듯 하였습니다.

 

 

오류 해결 방법

 

GitHub - NVIDIA/apex: A PyTorch Extension: Tools for easy mixed precision and distributed training in Pytorch

A PyTorch Extension: Tools for easy mixed precision and distributed training in Pytorch - GitHub - NVIDIA/apex: A PyTorch Extension: Tools for easy mixed precision and distributed training in Pyt...

github.com

위 링크의 NVIDIA 공식 apex github 사이트에서 README에 작성된 설명에 맞추어

apex 패키지를 CUDA and C++ extensions 버전으로

다시 다운로드 받아주시면 위 문제가 해결될 수 있습니다.