본문 바로가기

분류 전체보기124

[논문리뷰] Pre-training Methods Designed for IR 이 글은 "사전학습 언어모델을 이용한 정보 검색" 분야의 최신 이슈 및 연구 동향을 정리한 Suvey Paper인 "Pre-training Methods in Information Retrieval"의 내용 중 Section 6(Pre-training Methods Designed for IR) 을 정리한 글입니다. 제목 Pre-training Methods in Information Retrieval 저자 Yixing Fan, Xiaohui Xie, Yinqiong Cai, Jia Chen, Xinyu Ma, Xiangsheng Li, Ruqing Zhang and Jiafeng Guo 게재 일자 18 Aug 2022 인용 수 10회 인용 (2022.10.26 기준) 원본 https://arxiv.or.. 2022. 10. 26.
[Error] ModuleNotFoundError : No modul named 'torch' [Torch import 에러] import에 문제 없던 torch 라이브러리가 갑자기 실행이 안되었다. ModuleNotFoundError : No modul named 'torch' 다시 conda install torch를 했지만, 이미 설치되어 있다는 메세지.. 구글링을 하던 중, 파일을 python 2.xx버전으로 실행했을때 오류발생 한다는 글을 보고 python main.py가 아닌 python3 main.py로 실행하니 되었다.. https://github.com/pytorch/pytorch/issues/5563 2022. 10. 11.
[Pytorch][BERT] 버트 소스코드 이해_⑥ BertEncoder [Pytorch][BERT] 버트 소스코드 이해 목차 BERT 📑 BERT Config 📑 BERT Tokenizer 📑 BERT Model 📑 BERT Input 📑 BERT Output 📑 BERT Embedding 📑 BERT Pooler 📑 BERT Enocder 👀 📑 BERT Layer 📑 BERT SelfAttention 📑 BERT SelfOtput BertEncoder init 함수를 보니 많은 BertLayer 로 이루어져있다 ⇒ BertEncoder → BertLayer → BertAttention→ BertSelfAttention class BertEncoder(nn.Module): def __init__(self, config): super().__init__() self.conf.. 2022. 9. 30.
[Faiss] index.search() return negative value, KeyError: -1 faiss 라이브러리를 정상적으로 사용하는데, cpu_index.search(embedding, k) 결과 index값에 음수가 발생했다. 이후에 해당 document를 불러오는 과정에서 KeyErorr :-1 index값으로 음수를 반환하는 이유를 찾다가 embedding 값이 k보다 작음을 확인하였다. 즉 검색 가능한 문서는 k 건인데, 원하는 검색건수가 >k여서 일단 index를 -1로 반환한것 POC mode로 작게만들어서 test 하던 embedding을 원래 embedding으로 바꾼 뒤 정상적으로 작동함 확인하였다. 2022. 9. 2.
[Torchserve] torchserve explanations API 사용하기 [torchserve에서 기본으로 제공하는 API] torchserve는 기본적으로 아래 3가지 Service API를 제공하고 있습니다. - Inference API - Management API - Metrics API 그리고 각각의 API는 다른 포트와 path 로 구분을 하여 request 합니다. 각 API 별 curl 예시는 아래와 같습니다. API curl example PORT path inference http://127.0.0.1:8080/predictions/resnet-18/2.0 -T kitten_small.jpg 8080 predictions management http://127.0.0.1:8081/models/noop 8181 models metrics http://127.0.. 2022. 9. 1.
[Torchserve] torchserve Backend worker did not respond in given time [Error message] - Backend response time : 120000 - Backend worker did not respond in given time torchserve에서 API를 request 했을 때 handle 함수를 실행하는데, 이때 handle 함수를 실행해서 return 하는 시간은 기본적으로 120초(2분)으로 설정되어있다. (default config 값: default_response_timeout=120) 일반적인 추론의 기능에서는 문제가 없지만, 재색인을 한다는 등의 running time이 요구되는 기능을 추가했을 경우 이 timeout 시간에 걸려서 중간에 멈출수 있으니, config에서 parameter 값을 수정해야한다. config.properties에.. 2022. 8. 31.
[Torchserve] torchserve error - java.io.IOException: Failed to bind ② torchserve error - java.io.IOException: Failed to bind 이전 글에서 에러를 해결하기위해 PORT 번호를 바꾸는 방법을 찾았다. 2022.08.29 - [Error] - [torchserve] torchserve error - java.io.IOException: Failed to bind ① [torchserve] torchserve error - java.io.IOException: Failed to bind ① torchserve --stop으로 중단시킨 후 --start 로 재시작하였으나, 주소가 이미 사용 중이라는 에러가 발생함 netstat 으로 8080 포트를 확인했지만, kill 할 수있는 PID가 보이지않음! # 문제점1. torchserve가.... 2022. 8. 31.
[Torchserve] torchserve API PORT change torchserve에는 custom API 개발을 위해 기본적으로 설정되어있는 PORT가 있지만, 사정상 해당 포트(8080, 8081)를 쓸 수 없는 경우 매핑된 PORT를 변경하는 방법을 공유하고자 한다. torchserve는 기본적으로 inference API는 8080, model관련된 API(management) 8081 포트를 쓰도록 디폴트 설정이 되어있다 아래는 따로 설정하지 않아도 자동으로 생성되는 config파일 (config.properties)이다. inference_address=http://0.0.0.0:8080 management_address=http://0.0.0.0:8081 하지만, 같은 서버에서 8080, 8081 포트를 사용할수 없는 경우가 생기는데, 이때 PORT를 변.. 2022. 8. 30.
[Torchserve] torchserve error - java.io.IOException: Failed to bind ① torchserve --stop으로 중단시킨 후 --start 로 재시작하였으나, 주소가 이미 사용 중이라는 에러가 발생함 netstat 으로 8080 포트를 확인했지만, kill 할 수있는 PID가 보이지않음! # 문제점1. torchserve가 중단되어 있는데 curl /ping, /models는 response가 온다. # 문제점2. netstat | grep에서 PID가 배정되지 않음을 확인하였지만, torchserve --start로 실행시, 이미 주소를 쓰고 있다는 에러가 뜬다. -> root에서 확인하는 명령어 sudo ss -lntu netstat -ntlp | grep :9090 현재 9090 포트를 쓰고있는 프로세스 번호를 확인하고 kill torchserve를 쓰지 않고 java를 연.. 2022. 8. 29.
[Faiss] cpu_index.add() ValueError: too many values to unpack [Error] Traceback (most recent call last): File "Handler.py", line 39, in _service.indexing(model_path) File "Handler.py", line 22, in indexing self.cpu_index.add(emb) File "/home/lib/python3.6/site-packages/faiss/__init__.py", line 103, in replacement_add n, d = x.shape ValueError: too many values to unpack (expected 2) 이 Error log는 index.add의 input의 shape이 2차원이어야 하는데 3차원 이상이어서 발생한다! 실제로 찍어보니 -.. 2022. 8. 19.
[Pytorch][BERT] 버트 소스코드 이해_⑤ BertEmbedding [Pytorch][BERT] 버트 소스코드 이해 목차 BERT 📑 BERT Config 📑 BERT Tokenizer 📑 BERT Model 📑 BERT Input 📑 BERT Output 📑 BERT Embedding 👀 📑 BERT Pooler 📑 BERT Enocder 📑 BERT Layer 📑 BERT SelfAttention 📑 BERT SelfOtput 1. BertEmbedding 이란? : BertEocder에 들어갈 임베딩 생성 = WordPiece Embedding + Position Embedding + Segment Embedding Embedding 설명 default WordPiece Embedding (=word_embeddings) 실질적인 입력이 되는 워드 임베딩 단어 집합.. 2022. 7. 6.
[Pytorch][BERT] 버트 소스코드 이해_④ BertModel [Pytorch][BERT] 버트 소스코드 이해 목차 BERT 📑 BERT Config 📑 BERT Tokenizer 📑 BERT Model 👀 📑 BERT Input 📑 BERT Output 📑 BERT Embedding 📑 BERT Pooler 📑 BERT Enocder 📑 BERT Layer 📑 BERT SelfAttention 📑 BERT SelfOtput BertModel 🎅 BertModel을 통해 데이터가 어떻게 움직일까? [Step1] BertEmbedding 인코더에 전달할 텍스트 임베딩 생성 [Step2] BertEncdoer 텍스트 임베딩을 인코더를 통해 정보 압축 [Step3] BertPooler 최종 임베딩 값 반환 🎅 각 단계에서 무슨 일이? 1. BertEmbedding 202.. 2022. 7. 5.
[Pytorch][BERT] 버트 소스코드 이해_③ BertTokenizer [Pytorch][BERT] 버트 소스코드 이해 목차 BERT 📑 BERT Config 📑 BERT Tokenizer 👀 📑 BERT Model 📑 BERT Input 📑 BERT Output 📑 BERT Embedding 📑 BERT Pooler 📑 BERT Enocder 📑 BERT Layer 📑 BERT SelfAttention 📑 BERT SelfOtput BertTokenizer 1. BertTokenizer의 이해 Tokenizer 정의: 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업 BertTokenizer는 무엇이 특별한가? WordPiece Tokenizer(BPE의 변형 알고리즘) 적용 BPE(Byte Pair Encoding): OOV(Out-Of-V.. 2022. 7. 5.
[Pytorch][BERT] 버트 소스코드 이해_② BertConfig [Pytorch][BERT] 버트 소스코드 이해 목차 BERT 📑 BERT Config 👀 📑 BERT Tokenizer 📑 BERT Model 📑 BERT Input 📑 BERT Output 📑 BERT Embedding 📑 BERT Pooler 📑 BERT Enocder 📑 BERT Layer 📑 BERT SelfAttention 📑 BERT SelfOtput BertConfig configuration_bert.py class BertConfig(PretrainedConfig): def __init__( self, vocab_size=30522, hidden_size=768, num_hidden_layers=12, num_attention_heads=12, intermediate_size=3072,.. 2022. 7. 5.
[Pytorch][BERT] 버트 소스코드 이해 [Pytorch][BERT] 버트 소스코드 이해 목차 BERT 👀 📑 BERT Config 📑 BERT Tokenizer 📑 BERT Model 📑 BERT Input 📑 BERT Output 📑 BERT Embedding 📑 BERT Pooler 📑 BERT Enocder 📑 BERT Layer 📑 BERT SelfAttention 📑 BERT SelfOtput ✅ 기본적인 Bert 모델의 사용은 아래 코드와 같다 : Tokenizer로 BertModel의 입력값을 만든 후, 넣어서 출력값 생성 from transformers import BertTokenizer, BertModel import torch tokenizer = BertTokenizer.from_pretrained("bert-base-u.. 2022. 7. 5.