본문 바로가기

ML

(60)
airflow + dbt 를 활용한 데이터 파이프라인 데이터 웨어하우스에서 데이터를 변환하고 모델링하는 작업은  SQL을 작성하고, 파이프라인을 구축하고, 테스트하는 모든 과정하나하나 코드로 작성해야 했다. 나의 경우엔 예전에 포스팅했던 NES(notebook 환경)를 통해서 데이터 파이프 라인 작업을 하지만 가장 큰 문제가 정합성과 테스트가 문제였다. (+데이터 카탈로그의 부재도 한몫한다)파이썬 + sql + numpy로 동작하는 작업에서 저장되는 데이터가 한곳이 아닌 여러곳이였으며(심지어 외부 저장소도 있었다.. ) 데이터 정합성과 실패에 대한 대책을 코드로 하다보니, 데이터 칼럼이 변경되거나, 로직이 변경되면 난리도 아니였다. (변경되는 해당 칼럼이 적용된 파이프라인만 찾는것도 하루가 걸린적이..)그래서 찾아보다가 dbt를 사용해서 transform을..
[1] 이력서 챗봇 만들기 - LLM 설정 및 서버 적용 1. 모델 선택 먼저 임베딩 모델을 선택해야 한다. 계속 써오던 multilingual-e5 모델을 다시 쓸까 했는데, 마침 새로운 모델중에서 한국어 수치도 좋은 것들이 많아서 새로나온 모델을 선택해봤다.아래는 최근에 만들어진 고려대학교의 모델이다.  오!! 괜찬은 성능이라 판단해서 해당 모델로 선택했다.https://github.com/nlpai-lab/KUREnlpai-lab/KURE-v10.526400.605510.605510.55784dragonkue/BGE-m3-ko0.523610.603940.603940.55535BAAI/bge-m30.517780.598460.598460.54998Snowflake/snowflake-arctic-embed-l-v2.00.512460.593840.593840.5..
벡터 표현과 HNSW 구현에 대해서는 다음 포스팅을 참조하세요 : https://uiandwe.tistory.com/1398 1. 벡터화 과정일반적으로 텍스트 데이터를 벡터로 만드는 과정은 다음과 같습니다. 1.  원천 데이터터에서 철자를 교정하고 불필요한 문자를 제거합니다. (소문자 변환, 토큰화, 특수문자 제거, 불용어 제거, 형태소 분석)2. 전처리 후 텍스트에서 단어 임베팅 값을 추출합니다. (다차원 공간의 특정 위치에 단어를 매핑합니다.)3. 임베팅 값은 벡터로 변환할수 있습니다. 벡터 차원의 특정한 특징에  중요도나 관련성을 반영합니다. 위의 과정을 통해 백터를 가지고 HNSW 알고리즘을 통해 벡터 사이의 근사값을 계산할 수 있습니다. 2. HNSW (Hierarchical Navigable Small World ..
The Instruction Hierarchy: Training LLMs to Prioritize Privileged Instructions https://arxiv.org/pdf/2404.13208  요약프롬프트상에서 사용자의 프롬프트를 막게 되면 답변의 질이 떨어지게 된다.모델 생성시 보안에 대한 추가적인 학습을 통해서 해야만 좋은 성능을 보일수 있다. (일반 프롬프트단에서는 방법없음..괜히 읽었나…) Abstract오늘날의 LLM은 프롬프트 인젝션, 탈옥 및 기타 공격에 취약하여 공격자가 모델의 원래 지침을 악의적인 프롬프트로 덮어쓸 수 있습니다.이 연구에서는 이러한 공격의 근간이 되는 주요 취약점 중 하나는 LLM이 시스템 프롬프트(예: 애플리케이션 개발자의 텍스트)를 신뢰할 수 없는 사용자 및 제3자가 보낸 텍스트와 동일한 우선순위로 간주하는 경우가 많다는 점이라고 주장합니다.이 문제를 해결하기 위해 우선순위가 다른 명령어가 충돌할 ..
Error: unsupported locale setting File /opt/conda/lib/python3.11/locale.py:626, in setlocale(category, locale) 623 if locale and not isinstance(locale, _builtin_str): 624 # convert to string 625 locale = normalize(_build_localename(locale))--> 626 return _setlocale(category, locale)Error: unsupported locale setting한글 텍스트 분석을 하는 도중 위와 같이 에러가 발생했습니다. 아래 명령어를 통해 셋팅하는 과정에서 발생한 에러입니다.locale.setlocale(locale.LC_ALL, '..
[개인프로젝트] 나만의 추천시스템 만들기 (2) 이전 포스팅  :  https://uiandwe.tistory.com/1483 1편에 이어 추천시스템 개선을 해보려 합니다.이번 주요 사항은 sklearn의 기본 vector 함수를 사용하는게 아닌, bert모델을 사용하여 vector 임베딩을 하고, 해당 벡터 값을 통해 추천시스템을 만드는겁니다. bert 모델을 사용한 간단한 추천 구현전체적인 로직은 다음과 같습니다.  1편과 내용이 똑같아서 코드는 제외했습니다. 아래의 내용은 이번 글에서는 제외했습니다. 1. 데이터 수집 : wanted에서 데이터를 수집해 옵니다. (크롤링)                 2. 수집된 내용을 사용자 평가 (기본 데이터로 쓰임)                                    3. 데이터 저장 : 이미지 ..
[개인프로젝트] 나만의 추천시스템 만들기 (1) 요즘 한창 원티드를 기웃 거리고 있는 중, 추천 포지션과 기업들이 이상하게 나오는게 눈에 띄었다.이력서에 넣지도 않은 프론트엔드 관련 jd의 합격 예측이 90%가 넘어가는거.    대체 왜? 라는 의문과 함께 한번 나만의 추천을 만들어볼까? 하는 마음에 시작하게 되었다. 1. 추천시스템?서비스에는 다양한 종류의 콘텐츠 및 상품을 추천하는 서비스들이 있습니다. 기본적으로는 아이템기반과 유저 기반을 나눌수 있습니다.유저기반 : 나와 비슷한 사람이 본 컨텐츠를 추천아이템 : 내가 본 아이템과 비슷한 아이템 추천이중에서 나는 다른 사람의 데이터는 알수 없으므로, 아이템 기반으로 가닥을 잡았습니다.  구축하려는 것은 Multi-stage recommendation system을 통해 범용 시스템을 개발해보려 합니..
[MLOps] Triton을 활용한 모델 배포 스마일게이트에서 제공한 데이터를 기반으로 욕설분류 bert 모델을 만들었다. 기본 소스는 다음과 같다.https://colab.research.google.com/drive/1NKYYVSex__vde-lnYCmsRmyHjJhV6cKt?usp=sharing#scrollTo=Wi1qd6i8__Jl[위의 설명은 이전 포스팅인 https://uiandwe.tistory.com/1395 에 있다]  1.Triton Inference Server  Triton Inference Server는 GPU 장비를 효과적으로 사용하면서 리소스 비용을 절약하기 위해 일종의 GPU전용 서버를 하나 만들어서 다양한 모델들을 서빙할수 있도록 돕는 추론 서버 역활을 맡은 고성능 추론에 최적화된 오픈소스 소프트웨어입니다. 다양한 모델..