Deep Learning5 [Langchain] FAISS에서 cosine similarity 사용하기 기존에 구현했던 RAG 성능을 개선하는 PoC 느낌의 업무를 받아서 처음부터 db나 chunker를 새로 모색하기보다는 기존에 사용한 라이브러리를 그대로 사용했다. chunk, retrieval 쪽은 대게 langchain+FAISS로 구현되어 있었는데 retrieval 성능이 어떻게 해도 좋아지지 않아서 이것저것 찾아봤는데 점수 쪽에서 뭔가 이상하다고 느꼈다.FAISS로 vector DB를 만들 때 보통 vectorDB.from_documents( )를 사용했는데 이를 이용한 similarity_search는 L2 거리 기반임을 알 수 있었다. vector 거리 비교에 cosine similarity를 사용하지 않아 성능이 낮은 것이라 판단했다.그렇다고 다른 라이브러리나 벡터 db를 쓰기에는 관련 지식.. 2024. 11. 25. [Pytorch] ImageFolder label기준으로 split하기 ResNet을 구현한 다음 학습을 시켜보았는데 한 에포크를 도는데 5분쯤 걸렸다. 단순 테스트용으로 돌리는건데 너무 시간이 길다고 생각해서 라벨을 쪼개려고 했는데 처음에는 Stratified한 방식으로 쪼개려 했는데 생각해보니 데이터셋으로 사용한 imagenet-mini는 이미 class별 이미지가 너무 적다 생각하여 label을 index로 지정해서 100개 정도만 뽑아서 데이터셋으로 만드려했다. 로컬폴더를 900개 제거하면 ImageFolder가 알아서 해주겠지만 뭔가 데이터셋을 제거한다는 방식이 세련되 보이지도 않았고 이후에도 train과 test를 쪼갤일이 많을 텐데 미리 연습 좀 해보자는 느낌으로 방법들을 서칭했다. 별거 아닌 고집이었는데 구현하는데 시간이 예상보다 오래 걸렸다. 이번에는 내가 .. 2023. 4. 10. [Pytorch]Datasets and dataloaders 텐서플로우 역시 tf.dataset을 통한 데이터셋 생성 후 이터레이팅 방식으로 모델에 데이터를 먹일 수 있지만 대게 local에서 가져와서 직접 전처리 후 모델에 통째로 먹어주는 경우가 많았다. 하지만 Pytorch는 dataset과 dataloaders를 사용하는게 더 관용적인 것 같으며 사용법 역시 간단했다. 이번에는 부캠에서 배운 daataset과 dataloader에 대한 설명과 어떤 식으로 활용될지에 대해 적어보겠다. 필자는 pytorch를 통해 scratch부터 데이터셋, 데이터로더를 제작한 적이 없음을 감안하고 틀린 부분이 있으면 과감히 말해주길 바란다. Dataset dataset은 pytorch에서 데이터를 모델어넣어주기전 미리 그에 대에 정의 및 처리해 주기 위하여 사용된다. Modu.. 2023. 3. 23. [Pytorch]Autograd Module torch.nn.Module, forward Input, Output, Forward, Backward을 정의하는 Pytorch에서 모델을 만드는데 필요한 base class class MyLiner(nn.Module): def __init__(self, in_features, out_features, bias=True): super().__init__() self.in_features = in_features self.out_features = out_features self.weights = nn.Parameter( torch.randn(in_features, out_features)) self.bias = nn.Parameter(torch.randn(out_features)) def f.. 2023. 3. 19. 이전 1 2 다음