본문 바로가기

ML

(60)
[논문리뷰] Precise Zero-Shot Dense Retrieval without Relevance Labels (HyDE) https://arxiv.org/pdf/2212.10496.pdf 결론 요약 : LLM에게 가상 문서(응답)를 생성하도록 지시한 후 이를 사용하여 유사한 문서를 찾으면 zero-shot dense retrieval 에서 검색 성능이 향상됩니다. Abstract 고밀도 검색은 여러 작업과 언어에서 효과적이고 효율적인 것으로 나타났지만, 관련성 레이블이 없는 경우 검색 시스템을 구축하는 것은 여전히 어렵습니다. Hypothetical Document Embeddings(HyDE)을 통해 피벗할 것을 제안합니다. 쿼리가 주어지면 HyDE는 먼저 제로 샷으로 명령어 추종 언어 모델에 가상의 문서를 생성하도록 지시합니다. 벡터를 통해 말뭉치 임베딩 공간에서 벡터 유사성을 기반으로 유사한 실제 문서가 검색되는 이웃..
[논문리뷰] Lost in the Middle: Models Use Long Contexts https://arxiv.org/pdf/2307.03172.pdf 요약 : 컨텍스트의 앞과 뒤에 중요한 문맥이 있다면 잘 알아듣는다. 중간에 있다면 품질이 떨어진다. Abstract 최근의 언어 모델에는 긴 문맥 입력시 얼마나 잘 동작하는지 알려진 바가 거의 없습니다. 이 논문은 다중 문서 질문 답변과 키-값 검색에 대한 두 가지 작업에 대한 언어 모델의 성능을 분석합니다. 특히나 문맥 정보의 위치 변경시 현재 언어 모델이 긴 입력 컨텍스트에서 정보를 제대로 활용하지 못한다는 것을 나타냅니다. 특히 중요한 정보가 문맥의 시작 또는 입력 컨텍스트의 끝에서 발생하며, 모델이 관련 정보에 액세스해야 할 때 혹은 긴 컨텍스트에 대해서 성능이 크게 저하됩니다. Introduction 언어 모델은 대화형 인터페이스..
3. 벡터 임베딩를 활용한 성과 지표 (다중 분류 문제) 벡터 임베딩으로 구현한 모델에 대한 "평가 지표 구성을 어떻게 할것인가" 글입니다. 1. 무엇을 측정할것인가? 해당 모델의 목표는 사용자가 임의의 질의를 했을때 설정된 알맞은 대답(답변 약 100개 중 하나)을 리턴하는 모델(faq 챗봇)입니다. 벡터 임베딩으로 텍스트를 벡터화 하고, 가장 유사한 벡터가 정답으로 간주되며 해당 값을 리턴하는 방식입니다. 설정된 여러개의 답변중 하나를 찾기 때문에 해당 모델은 다중 분류 성과 지표를 따라야 한다고 판단했습니다. 다중 분류 문제에서 일반적으로 사용되는 성과 지표는 혼동 행렬 (Confusion matrix)로 표현이 가능합니다. 정확도(Accuracy): 올바른 분류의 비율을 나타내는 지표입니다. F1 점수(F1 score): 정확도와 재현율의 조화 평균을 ..
ONNX ONNX는 Open Neural Network Exchange의 줄인 말로 다른 DNN 프레임워크 환경(ex Tensorflow, PyTorch, etc..)에서 만들어진 모델들을 서로 호환되게 사용할 수 있도록 만들어진 공유 플랫폼입니다. ONNX를 사용하는 이유는 다음과 같습니다. 모델의 호환성을 높일 수 있습니다. 예를 들어, PyTorch로 학습한 모델을 TensorFlow Serving에서 서빙할 수 있습니다. 모델의 개발과 유지보수를 쉽게 할 수 있습니다. ONNX는 모델의 구조와 파라미터를 명시적으로 저장하기 때문에, 모델의 개발과 유지보수를 쉽게 할 수 있습니다. 모델의 성능을 향상시킬 수 있습니다. ONNX 모델을 TensorFlow Serving에서 실행하면, TensorFlow Ser..
ipynb 파일에는 metadata가 있습니다! 어제 재미있는 에러를 발견해서 (정확히는 나의 실수!) 기록으로 남긴다. 먼저 회사에서의 NES를 통해 파이프라인을 실행하는 도중 notebook 소스를 jupyter에서 수정하고 해당 파일을 airflow에 실행시킨 결과 notebook이 실행과 함께 종료되는 현상이 발견되었다. 아래와 같이 papermill로 파라미터주입은 되었지만, 실행되지 않은체 종료된다. notebook이 에러도 없이 종료가 되어서 서버문제인가 싶어서 서버담당자와 몇시간을 봐도 서로 이해가 가지 않은체 하루가 지나버렸다. 서버담당자가 이상한 로그가 있다면서 notebook 실행할때 커널이 "llm"이라고 뜬다고 한다. "그건 제가 개인 jupyter에서 실행하는 커널인데, airflow 실행시에는 dag에 커널 정보를 않넣었는데..
2-1. vector embedding 구현하기 (with faiss) 2 vector embedding 구현하기 (with elastic search)에서 이어집니다.[ https://uiandwe.tistory.com/1398] elastic search에서 지원하는 Dense Vector칼럼의 차원 수는 최대 2048입니다. 즉, LLM에서 임베딩된 길이가 2048 이상인 경우엔 해당 모델은 elastic search에서 사용할수 없습니다. 저의 경우 4096 차원을 가진 모델로 테스트 하려 했지만 아래와 같은 에러 메시지와 함께 실행되지 않았습니다. BadRequestError(400, 'mapper_parsing_exception', 'The number of dimensions for field [question_embedding] should be in the ..
파이프라인 구축 (with NES / notebook exceute system) 해당 글은 아래의 시스템 구조를 참고하여 만든 예제 입니다.https://devocean.sk.com/vlog/seminar/20220728_Data_Engineering_in_SKT.pdfhttps://netflixtechblog.com/scheduling-notebooks-348e6c14cfd6 Part 2: Scheduling Notebooks at Netflixby Matthew Seal, Kyle Kelley, and Michelle Uffordnetflixtechblog.com 완성 코드  (gihtub 링크)https://github.com/uiandwe/nes/tree/main GitHub - uiandwe/nesContribute to uiandwe/nes development by cr..
1. 비속어 탐지 모델 만들기 (with bert) 해당 글은 스마일게이트의 비속어 데이터셋을 바탕으로 비속어 탐지 모델을 개발한 내용입니다. 데이터에 대한 자세한 사항은 아래의 링크들을 확인하시면 됩니다. 욕설 모델 + 배포하기 [GitHub - smilegate-ai/korean_unsmile_dataset](https://github.com/smilegate-ai/korean_unsmile_dataset) https://colab.research.google.com/drive/1NKYYVSex__vde-lnYCmsRmyHjJhV6cKt?usp=sharing#scrollTo=Wi1qd6i8__Jl Smilegate-AI UnSmile dataset fine-tuning tutorial.ipynb Colaboratory notebook colab.res..