본문 바로가기

ML

(49)
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.pdf https://netflixtechblog.com/scheduling-notebooks-348e6c14cfd6 Part 2: Scheduling Notebooks at Netflix by Matthew Seal, Kyle Kelley, and Michelle Ufford netflixtechblog.com 완성 코드 (gihtub 링크) https://github.com/uiandwe/nes/tree/main GitHub - uiandwe/nes Contribute to uiandwe/nes development ..
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..
2. vector embedding 구현하기 (with elastic search) 1. vector embedding 소개 글에서 이어집니다. [https://uiandwe.tistory.com/1397] 앞썬 포스팅에서는 vector embedding에 대한 기술적인 설명과 함께 함께 사용되는 벡터 디비에 대해서 설명하였습니다. 이번 포스팅에서는 LLM모델을 사용해서 embedding을 구현하고 간단한 Faq가 할수 있도록 초안 코드를 작성해보도록 하겠습니다. 해당 포스팅의 전체 코드는 다음과 같습니다. (벡터디비가 필요하므로, colab에서 하실경우 따로 saas형태의 디비를 구축하셔야 합니다.) 다음의 라이브러리를 설치해야 합니다. !pip install transformers !pip install elasticsearch 1. 모델 선언 및 임베딩 함수 작성 해당 코드는 mu..
1. vector embedding 이란? Abstract: 자연어 처리 분야에서 많은 관심을 받고 있는 Vector Embedding 기술이 챗봇 개발에 어떻게 적용되고 있는지에 대해 탐구합니다. 이 글에서는 챗봇이 대화 상대와의 의미 있는 상호 작용을 달성하기 위해 텍스트를 벡터 공간으로 변환하는 방법과 그것이 어떻게 챗봇의 성능 향상에 기여하는지에 대해 다룰 것입니다. 또한, 다양한 벡터 임베딩 기술과 그 활용 사례들을 살펴보며, 이를 통해 챗봇의 자연스러운 대화 능력 향상에 어떻게 기여할 수 있는지를 분석합니다. 1.1 벡터 임베딩이란? 챗봇의 가장 중요한 기능은 바로 사용자가 입력한 문장의 의미를 알아야 하는것입니다. 검색이라면 단순히 검색어가 일치한 것을 찾아내면 되지만 채팅이기 때문에 사용자의 문맥의 의미를 알아야 합니다. 사용자가 ..
llama2 / mistral fine tuning (with autotrain) llama2과 mistral 모델의 가장 큰 특징은 오픈소스라는 점이다. 누구나 모델을 자유롭게 사용할 수 있으며 상업용으로도 사용할 수 있다. 먼저 fine tuning의 가장 큰 목적은 자신만의 도메인을 답하게 하기 위함이 크다. 물론 RAG를 통해서도 가능 하겠지만, 정확한 답변을 요구하는 RAG와 다르게 fine tuning을 통해서는 답변을 원하는 형태로 바꾼다는 표현이 더 정확할꺼 같다. ex : 다음 문장을 사투리로 바꿔줘 물론 둘다 하는 방법도 있지만, 보통 RAG / fine tuning 하나만을 추천한다. (둘다 사용해도 드라마틱하게 성능이 향상되진 않는다고 한다.) 파인튜닝은 다음의 단계를 고려해야 합니다. 1. Fine-tuning 선택 초기에는 어떤 부분을 개선하거나 변경할지 결정..