KoBert 모델 실행 colab(GPU) -> 윈도우 vsc(CPU)

Leeys·2022년 7월 17일
0

한이음2

목록 보기
7/8

colab에서 잘 돌아가는 Kobert 모델을 다른 환경에서 실행
(파이썬 환경변수 설정은 되있다고 가정)

colab에서 학습한 모델의 파라미터만 pt파일로 불러오고 학습 시키는 코드는 vsc에서 생략하였다. 모델 선언, pt파일을 torch로 load, 모델에 인자를 입력했을 때 결과값을 출력하는 코드를 vsc로 옮겨주었다.



colab에서는 파이썬 라이브러리 버젼을 신경쓰지 않고 pip로 설치해도 실행이 됬지만 vsc로 py파일을 편집하는 환경에선 라이브러리 버젼을 신경써야 했다.

하나의 py파일에서 여러 라이브러리가 필요했기 때문에 가상환경을 만들어서 의존성을 해결하는 방법은 쓸 데 없을 것 같고, 버젼 확인을 꼼꼼히 해서 하나의 py파일 안에 여러 라이브러리들이 서로 호환 가능하게 설치했다.

버젼 정보

파이썬 - 3.7.9

urllib3==1.25.4
numpy==1.16.6
mxnet==1.6.0
transformers==3.1.0
gluonnlp==0.10.0
torch==1.12.0
pandas==1.2.1
boto3==1.24.31

위의 라이브러리로 시도했을 때 모듈간 의존성 때문에 발생하는 에러는 뜨지 않았다.
또한 kobert 설치에 필요한 numpy, mxnet 버젼을 아무리 호환시키려 해도 다른 라이브러리들과의 의존성이 깨지기 때문에 실패했고, 직접 SKT brain의 git 주소에서 라이브러리를 다운 받아 파이썬 라이브러리 폴더에 옮겨 주었다. (설치할때만 해당 버젼이 필요한 것인진 몰라도(?) 실행은 잘됬다.)

에러

init() got an unexpected keyword argument 'return_dict'

  • transformer 라이브러리를 최신 버젼으로 받으면 해당 인자가 없으므로 전 버젼으로 다시 설치

Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.

  • GPU에서 저장한 모델을 cpu에서 로드할 때 생기는 에러이므로 cpu로 로드
device = torch.device('cpu')
model.load_state_dict(torch.load(PATH, map_location=device))

또한 설치할 라이브러리가 의존하고 있는 라이브러리의 버젼 때문에 기존 라이브러리가 uninstall 되어 발생 하는 에러도 있기 때문에 이 에러의 가능성도 염두해 둬야 한다
profile
공부 리마인드

1개의 댓글

comment-user-thumbnail
2024년 5월 1일

포스팅 잘 봤습니다! 여쭤보고싶은게 있는데 메일 드려도 되나요?

답글 달기