SimCTG 코드를 수정하고, Decoding 해보려는 도중 다음과 같은 코드를 쓸 일이 있었다.
import torch
from simctg import SimCTGPretraining
model_path = r'/content/drive/MyDrive/학부연구생/SimCTG_ver9/training_step_50_train_mle_loss_3.536_train_cl_loss_0.803_dev_ppl_182.851'
model = SimCTGPretraining(model_path)
model.eval()
# prepare text prefix
text = r'Insect farming is the practice of raising and breeding insects as livestock, also referred to as minilivestock or micro stock. Insects may be farmed for the commodities'
tokens = model.tokenizer.tokenize(text)
input_ids = model.tokenizer.convert_tokens_to_ids(tokens)
input_ids = torch.LongTensor(input_ids).view(1,-1)
마주친 오류는 simctg 를 사용하기 위해서 pip install simctg --upgrade
명령어를 사용했는데, 이때 subprocess 오류가 났다. (이 오류는 requrirements.txt에 문제가 있을 때 발생하는 거 같다.(
그래서 깃헙을 뒤져보는 도중 다음과 같은 문제를 제시하고 해결책을 써준 고마운 분을 발견할 수 있었다.
sklearn 이 아니라 scikit-learn 이라고 이름을 정확하게 쳐줘야 동작한다는 것이었다. 찾아보니 오류도 그쪽에서 났어서 해결할 수 있었다. metadata, subprocess, not pip error 이런 오류가 뜨면 마지막에 설치하려던 게 무엇인지 확인하고 그것만 따로 해결하면 될 거 같다!
이렇게 잘 설치한 후 두번째로는 from simctg import SimCTGPretraining
오류가 났는데, simctg 라는 파일을 찾고 SimCTGPretraining 이라는 모듈을 불러오라는 명령어이기 때문에 simctg 파일을 찾아야 하는데 이때 오류가 생긴 거 같았다. 왜냐하면...
지금은 pretraining/simctg_my 로 바꾼 것이 원래는 pretraining/simctg 였고 그것과 simctg 폴더가 이름이 같았기 때문이다. 그래서 파일 이름을 simctg_my 로 바꿔주고 from simctg_my 로 수정해주었다.
이렇게 하면 발생할 수 있는 문제점이 그럼 다른 파일에서 from simctg 를 불러서 동작했을 때 더이상 그 파일을 불러올 수가 없다는 것이다.. 뭔가 더 근본적인 해결책이 필요할 거 같은데, 일단 주석처리해두고 decoding 시에만 파일 이름을 바꾸는 걸로 해야겠다.