본문 바로가기

인공지능56

[PyTorch] CrossEntropyLoss가 음의 무한대로 갈 때 최근 PyTorch로 모델 쌓는 법을 배우면서 from scratch 로 구현하는 시도를 해보고 있다. 그런데, loss가 점점더 -∞로 가고 업데이트되지 않는 문제가 발생했다. 아주 사소해보이지만 치명적인 실수를 했다는 것을 알게 되어 얼굴을 붉히며 포스팅을 남겨본다 🥵 우선 하려고 했던 건 간단하다. MNIST를 flatten하여 입력으로 넣고, 2개의 hidden layer를 가지고 10개의 로짓을 출력하는 매우 간단한 모델을 만들었다. 모델의 파라미터는 he, zero로 초기화, optimizer로는 Adam을 사용하였다. 코드를 보자. # loss function loss_fn = nn.CrossEntropyLoss() for e in range(epochs): for b, (data, labe.. 2023. 11. 23.
채팅 AI를 사용하여 한국어 텍스트 증강하기 (GPT-3.5, Bard, Clova X비교) 목차 배경 모바일 앱으로 쓰여진 한국어로 구성된 문장들을 여러 개 보유하고 있는데, 유사한 의미를 가지나 다르게 표현된 여러 개의 문장이 필요했다. 이렇게 기존 데이터로 유사한 데이터를 생성하는 것을 데이터 증강(augmentation)이라고 한다. 증강은 주로 비전 분야에서 많이 사용되었으나, 최근에는 거대 언어 모델이 발전함에 따라 자연어 분야에서도 필요로 한다고 한다. 영어는 우선 데이터도 많고, 연구가 많이 이루어졌으며, 단어의 구성이 비교적 단순하여 데이터 증강이 쉬운 편이지만, 한국어는 그렇지 않다. 알파벳을 나열하는 영어와 달리, 자음소의 조합이 하나의 음절을 이루고, 이 음절의 조합에 따라 단어가 구성되기 때문이다. 그래서 한국어 자연어 처리를 위한 라이브러리가 따로 있기도 하며, 일반적인.. 2023. 9. 5.
🤗 Huggingface GPT-2로 문장을 토큰 임베딩해보자 영어 부제: how to get word embedding vector in GPT-2 이 포스팅은 허깅페이스 API를 사용하여, 간단한 "영어" 문장을 GPT-2를 사용하여 임베딩하는 내용으로 구성되어 있다. 목차 참고) 여기서의 임베딩은 토큰 임베딩을 말하며, 자연어로 이루어진 문장을 임베딩 공간에 표현하면 길이는 다르지만 의미가 비슷한 문장인지를 거리 계산 방식(유클리디안, 코사인, 자카드 등)을 통해 확인해볼 수 있다는 이점이 있다. 1. 라이브러리 설치 토큰 임베딩을 위해서는 python 작업 환경에, huggingface 및 torch 라이브러리를 설치해주어야 한다. 나의 경우 OSX (m2 pro) 유저로 아래 명령어를 통해 라이브러리 설치가 가능하지만, windows, linux 유저는 다.. 2023. 8. 23.
RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR PyTorch lightning 런타임 에러 (해결) 에러 상황 darts 라는 시계열 데이터를 위한 라이브러리에서 RNN 모델을 사용하기 위해 model.fit을 했는데 에러가 발생함 - 아무리 생각해도, cuda-cudnn이 꼬였다면 pytorch, tensorflow로 모델을 만들어 학습했을 때도 안될 거 같은데 잘 되었다. 그래서 이건 아닌 것 같다는 결론 - torch는 gpu를 인식하는가? 너무 잘 한다. 확인 방법은 여기에 기존 라이브러리 버전 $ pip list | grep torch pytorch-lightning 2.0.6 torch 2.0.1 torchmetrics 1.0.2 $ pip list | grep cuda nvidia-cuda-cupti-cu11 11.7.101 nvidia-cuda-nvrtc-cu11 11.7.99 nvidi.. 2023. 8. 21.
OpenAI API에서 사용하는 jsonl 파일 읽고 쓰기 OpenAI의 Fine-tuning API를 사용하려면 jsonl 확장자로 데이터를 준비해야 한다. 간단히 말하면 jsonl은 key, value 형태의 json을 개행문자(\n)로 구분해놓은 파일이다. openai 파인 튜닝 예제 데이터를 보면, prompt, completion이라는 key, value로 구성된 json이 하나의 샘플이며, 이 샘플을 나열할 때에는 개행문자를 통해 구분되게끔 하였다. {"prompt": "", "completion": ""} {"prompt": "", "completion": ""} {"prompt": "", "completion": ""} ... from openai platform 위와 같은 파일을 읽고 쓰려면, python의 I/O와 json 라이브러리를 적절히 .. 2023. 8. 17.
[논문리뷰] NCF, 2017 이 글은 2017 발표된 Neural Collaborative Filtering 논문을 리뷰한 글입니다. 논문 구현이 궁금하다면 논문 구현 포스팅을 참고하시길 바랍니다. 목차 💡 Paper Information. 원제: Neural Collaborative Filtering 발행 연도: 2017 저자 정보: National University of Singapore, Columbia University, Shandong University, and Texas A&M University 저널 정보: WWW '17, Perth, Australia, April 03-07, 2017. 인용수: 5262회 (23.08.10 기준) 논문 링크: https://arxiv.org/abs/1708.05031 소스코드: .. 2023. 8. 10.