나의 상황은 다음과 같다. Docker 환경에서 $ docker run -it {IMAGE_NAME} 명령어를 통해 container를 만들어 실행했다. 그리고 해당 서버의 GPU 2대를 활용해 모델 추론을 하려고 했는데 이 에러가 발생했다. 에러 메시지를 보면 GPU가 인식되지 않고 있는 상황인데, 추론 코드에는 문제가 없었다. 문제의 원인은 container를 만들 때부터였다. 단순하게 $ docker run -it {IMAGE_NAME} 명령어로 container를 만들었었는데, 이렇게 되면 서버에 있는 gpu가 할당되지 않는다. 그래서 container 내에서 gpu를 인식하지 못한 것이다. 이 문제를 해결하려면, container를 만들 때 할당할 GPU 번호를 명시해줘야 한다. --gpus 파..
"UnicodeEncodeError: 'utf-8' codec can't encode characters in position : surrogates not allowed" 기존의 데이터 파일을 전처리한 후 저장하려는 코드에서 에러가 발생했다. 구글링해보니 다양한 방법들이 나오는데, 나의 경우는 기존 데이터 파일에 존재하는 유니코드 문자가 원인이었다. 따라서, 저장하기 전에 전체 텍스트에 대해 다음 코드로 유니코드 문자를 제거함으로써 에러를 해결했다. if not text.isascii(): text = ''.join([char for char in text if char.isascii()]).strip()
'RuntimeError: CUDA error: no kernel image is available for execution on the device' 새로운 서버에서 라이브러리들을 설치하고 모델을 학습시키려했더니 위와 같은 에러가 발생했다. 에러 메시지를 보고 CUDA 설치와 관련된 무시무시한 에러인듯 보여서 걱정했는데, 간단히 해결 가능했다. 해결 방법 1.이 에러가 CUDA와 PyTorch 호환 관련된 문제라고 하므로, 설치되어 있는 PyTorch를 삭제한다. 2. https://developer.nvidia.com/cuda-gpus#compute 에 들어가서 본인이 사용중인 GPU를 찾아 Compute Capability 값을 확인한다. 3. $ export TORCH_CUDA_ARCH_LIST=..
"AttributeError: 'BartConfig' object has no attribute 'force_bos_token_to_be_generated'" BART 모델을 사용 중인데, self.config.force_bos_token_to_be_generated 이 부분으로부터 위와 같은 에러 메시지가 출력되었다. 'force_bos_token_to_be_generated'가 다른 명칭으로 바뀌었기 때문이다. 해결 방법은 'force_bos_token_to_be_generated'를 'forced_bos_token_id'로 수정해준다.
RuntimeError: Error(s) in loading state_dict for GPT2LMHeadModel: size mismatch for transformer.wte.weight: copying a param with shape torch.Size([51200, 768]) from checkpoint, the shape in current model is torch.Size([51215, 768]). size mismatch for lm_head.weight: copying a param with shape torch.Size([51200, 768]) from checkpoint, the shape in current model is torch.Size([51215, 768]). 나의 경우 ..
RuntimeError: Error(s) in loading state_dict : Unexpected key(s) in state_dict: "bert.embeddings.position_ids" GPU에서 train한 모델을 CPU에서 test하려고 하니 위와 같은 에러 메시지가 발생했다. 에러가 난 코드는 이 부분이었다. model.load_state_dict(torch.load(state_save_path, map_location='cpu')) state_dict를 불러오는 과정에서 서버 환경이 달라져서 key 값이 매칭이 되지 않아 발생한 에러다. 해결 방법은 load_state_dict()에 strict=False를 추가해주면 된다. 이를 추가해주면 state_dict를 불러올때 모든 key를..