다음과 같은 오류가 났다. 뻘짓을 어느 정도 하다 보니 Pytorch의 nn.Embedding의 parameter를 잘못 줘서 일어난 것을 깨달았다.
File "/home/mycom/Recommender-System/Project3/train.py", line 51, in train
output = model(x)
File "/home/mycom/.local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(input, **kwargs)
File "/home/mycom/Recommender-System/Project3/Model.py", line 29, in forward
user_latent_vector = self.user_embedding(user)
File "/home/mycom/.local/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(input, **kwargs)
File "/home/mycom/.local/lib/python3.8/site-packages/torch/nn/modules/sparse.py", line 158, in forward
return F.embedding(
File "/home/mycom/.local/lib/python3.8/site-packages/torch/nn/functional.py", line 2044, in embedding
return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
RuntimeError: CUDA error: device-side assert triggered
Pytorch 모델 구현부로 가서 nn.Embedding을 살펴보았다.
self.user_embedding = nn.Embedding(num_embeddings=max_data, embedding_dim=10)
이 아니라
self.user_embedding = nn.Embedding(num_embeddings=max_data + 1, embedding_dim=10)
을 해줘야 임베딩이 제대로 작동하였다. application이나 데이터셋마다 다르겠지만, 결론적으로는 자기가 짠 코드는 자기가 제대로 알아봐야한다...