cuda error: device-side assert triggered

최지우·2024년 4월 2일

모델이나 ML/DL 쪽 하는 거 코드쪽은 입문자다. 깃헙 가지고 그대로 돌리거나 할때도 에러가 많아서 곤혹을 치르는데.. 이번 오류는 cuda error가 걸렸다.

  1. cuda memory 문제일 수도 있다 함.
    : 나 같은 경우는 inference하는데 해당 오류가 떴다. train이 더 메모리를 잡아먹던데(사이즈가 훨씬 컸음) 근데 컴퓨터엔 잘만 돌아갔다.

  2. 임베딩할 때 데이터의 인덱스가 0이 아닌 1부터 시작해서 그렇다 함.
    : 내 inference할 때 넣는 데이터는 인덱스 0에서 시작한다.. 뭐가 문제지 싶었다.

    torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse) runtime error

    torch.embedding 에러도 같이 떴어서 embedding code에 가서 embedding_dims를 +1하고자 했다.(검색할 때 이렇게 하라더라..) 근데도 안 됐다.

  3. 메모리 문제는 절대 아닐 거라고 생각했기 때문에 따라서 임베딩 문제라고 생각했다. torch.embedding에서도 오류가 났고 구글링에서도 임베딩 사이즈를 어떻게 해봐라.. 라고 찾아봤기 때문에 임베딩에서 일어난 문제라고 추정했다.

Tabnet을 사용하고 있었고, train 데이터를 train, test, validation 세가지로 나눠서 임베딩하고 훈련시켰다. inference할 때 새로운 데이터가 임베딩 오류가 나는데 cat_idxs,cat_dims 값이 train과 달랐다..!!

생각해보니 데이터 전처리 과정에서 임베딩을 할 땐 새로운 데이터와 같이 임베딩을 해줘야 train, test 둘 다 임베딩 차원이 동일해지면서 모델이 인식한다. 그렇게 했더니 오류를 해결했다.

왜 오류가 난지 몰랐어서 이틀 가까이 삽질만 했다... 다음부터는 임베딩 관련은 꼭 이 포스트를 떠올리도록 하자. 논문 읽는 것도 중요하지만 코드에 대한 이해가 부족하다

0개의 댓글