회사 업무
[기존 프로젝트 유지보수]
- 임베딩 모델
- 성능 향상을 위한 전처리 방식 변경 적용
- redis / rdb 데이터 교체 적용하여 배포
- API 스웨거 문서 생성
- 연관검색어 추천
- 매일 삭제되는 검색어를 추천에서 제외하도록 엘라스틱 서치 일간 동기화 작업
- CDJ(고객구매여정) 분류 모델 성능 향상
- 최대한 완성된 문장만 사용하도록 전처리 방식 수정
- 데이터의 라벨 확인하여 애초에 잘못 분류된 데이터 보정
[분석 업무]
- 서프 의미론적 임베딩
- 서프 임베딩 기반 클러스터링 수행
- 원본 / 차원축소 결과 비교(umap / tsne)
- t-sne로 차원축소 및 텐서보드 시각화
- 텍스트 내에서 검색어로서 가능성이 있는 명사구 추출
- 검색결과 상위 페이지에서 검색어의 후보를 추출하기 위함
- 검색어의 품사 패턴 분석 및 명사구 패턴 정의 (관련 작성 글)
- 토큰화 방식: mecab 토크나이저에 사내 사용자 사전 추가
- api 개발 및 워드 클라우드 기능으로 추가
- 룰베이스 기반의 방식이며 해당 방식이 최선인가에 대한 의문점
[새 프로젝트]
- 키워드 셋으로부터 토픽 및 토픽명 생성
- 키워드 벡터로 밀도 기반 클러스터링 (관련 작성 글)
- 밀도 기반 클러스터링 한계 보완을 위한 룰 베이스 아웃라이어 처리 방식 고안
- 한계: 적절한 클러스터링 평가 방법을 찾지 못함
- LLM기반 토픽명 생성
- 하이퍼클로바 모델 테스트 및 튜닝
- chatgpt와 가격 및 성능 비교 후 의사 결정
- 키워드 벡터로 밀도 기반 클러스터링 (관련 작성 글)
- gpt 분석 기능 추가
- 검색 페이지 요약 / 검색 결과 gpt 분석 / gpt기반 웹사이트 컨텐츠 생성 프롬프트 추가
- 프롬프트 엔지니어링 관련 업무
- 정보 손실을 최소화 하며 입력 토큰 한도 처리 방식 고안
- promptlayer를 도입하여 사내 프롬프트 저장 및 이력 관리 (관련 작성 글)
- 타 팀과 협업을 위한 사내 프롬프트 및 입력 변수 관리 패키지 개발 (관련 작성 글)
- 프론트에서 해당 패키지를 사용하여 프롬프트를 생성하도록 함으로써 불필요한 중간 api요청 단계를 제거
- 아쉬운 점:
- gpt 답변의 안정성을 평가하는 방식에 대한 불완정성
- 토큰 한계에 도달할 경우 이어쓰기 기능이 추가되지 않은 상태
- 임베딩 서버 글로벌 서비스 준비 (일본)
- 국가별 언어 특징을 반영하여 자연어 처리 파이프라인 구축 및 임베딩 모델 학습 및 서빙
- 다국어 지원을 위한 코드 리팩토링
- 웹 사이트의 유입 키워드 기반 카테고리 분류 모델 학습
- 모델: fasttext
- 카테고리 정의 (최종 126개의 라벨)
- 라벨별 학습 데이터 반자동 구축 프로세스 고안
- 데이터 중심 모델 개선 프로세스 적용
- 라벨별 f1-score 확인 및 성능 불균형 조정
- 성능 저하의 원인이 되는 불순한 입력 데이터 제거 후 성능 개선
- 아쉬운점: 오버피팅 가능성 미확인, 학습 실험에 대한 이력 관리 미흡, 주기적 학습 프로세스를 구축하지 않아 멈춰있는 상태
- 금융 데이터 프로젝트
- 뱅킹, 보험, 카드, 증권 도메인 별 대>중>소 토픽 분류 및 CDJ 분류 모델 개발
- 토픽 분류
- 라벨수(약 300개 이상) 대비 데이터 수가 부족한 상황에서 성능 최적화를 위한 모델 고안
- 벡터DB 기반 knn 매칭 알고리즘으로 적용
- 아쉬운점: 키워드 내 수정자에 가중치 부여하는 방식이 미흡
- 라벨수(약 300개 이상) 대비 데이터 수가 부족한 상황에서 성능 최적화를 위한 모델 고안
- streamlit 기반 모델 서빙
- 대량의 키워드 추론시 페이지간 이동할 경우 중단된 지점부터 재개하도록 구현
- 아쉬운점: 페이지 이동 시 이전 페이지에서의 예측이 백그라운드로 진행 가능한지 파악 미흡 → 기능 미완성
기술적 발전
- wandb 도입을 통한 실험 관리
- langchain
- pinecone
- streamlit
- MLOps를 위하여 사내 실험 관리를 위한 프로세스 구축을 위해 wandb를 도입하고자 하였지만 제대로 이루어지지 않은 것 같음
- 팀 내에 전파하여 문화로 정착되도록 하고 싶었지만 아직 나조차도 익숙해지지 않아 혼자만 사용하는 상태..
- 내년에는 팀내 전파를 목표
- LLM기반 앱 구축을 위해 langchain을 적용하였지만 이 또한 아직 파악이 미흡하여 아직 내가 모르는 기능들에 대한 적용이 이루어지지 않은 상태
- langchain의 강점인 chaining을 구현하지 않은 것 같은 찝찝함
- real-world의 프로젝트들은 어떤 식으로 구현되어있는지 조사 및 공부가 더 필요
- 내년에는 챗봇 기능도 추가해야하기 때문에 글또에서 제공받은 강의(Langchain으로 LLM기반 어플리케이션 개발하기)도 들으면서 더 깊이 공부해야할 필요가 있음
기타 성장을 위한 노력
[사내 스터디 참여]
- 오픈소스 분석
- tenacity
- spacy
- semantic-kernel (관련 작성 글)
- 오픈소스 기여 경험
- 라이브러리 톺아보기
- pinecone
- ray
- wandb
- pytorch-lightning
- 논문구현 코드 분석
- multimodal-transformer (관련 작성 글)
- recformer
- 리팩토링 서적
- 내 코드가 그렇게 이상한가요?
- 배운 점을 실제로 적용하여 기존 코드를 리팩토링하지 못해 아쉬움
- 알고리즘 스터디 (중도 중단)
- 미래의 이직 상황을 위한 코테 준비를 2022년부터 올해 초까지 했지만 올해 중단됨
- 원인: 이직에 대한 생각의 변화 및 알고리즘 실력에 대한 스트레스
- 2024부터는 하루 한 문제씩 다시 풀도록 다시 강제적 환경을 조성해야할듯
[기타 활동]
- 글또 8기, 9기 참여
- 8기 활동이 끝난 후에도 지속적 글쓰기가 이루어지지 못함
- 올해는 9기가 끝나도 습관화를 위해 다음 기수 시작 전 활동할 스터디에 참여해야 할듯하다
- 헬스
- 건강 및 체중관리를 위해 등록하였으나 출석률 36%밖에 못미치는 저조한 성적..
- 최근에는 강제적 출석 환경을 만들기 위해 친구를 섭외하여 함께 운동하기 시작
반성, 그리고 앞으로는요
- 항상 기능 구현에만 급급해서 개발한 것 같음
- 보여주기식 성능 리포트, 모델 배포 후 나몰라라 했던 과거의 나날들에 대해 반성함
- 실제 환경에서의 성능 체크, 모델 배포 후 트래픽, 속도, 내 프로세스가 얼마나 많은 리소스를 잡아먹는지 모니터링하고 유지보수하도록 해야한다!
- 여러가지 프로젝트를 진행하면서 새 프로젝트가 진행되면 이전 프로젝트에 신경을 못 쓰게 되는 것 같음
- 이런 상황에서 이전 개발사항에 대해 문제가 발생하면 컨텍스트 확인을 해야하는데 나 혼자 맡은 프로젝트에 대해 github 이슈 등 관리가 제대로 안되어있어 기억을 더듬느라 시간 소요가 많이 됨
- 앞으로는 미래의 나를 위해서 모든 것은 기록하는 습관을 들이자
- 혼자서만 하는 프로젝트라도 컨벤션에 대해 공부하고 이를 지켜서 개발하도록 해보자
- 내년엔..
- MLOps 엔지니어가 되기 위해 아직 자동화되지 않은 부분을 자동화하도록 프로세스를 개선해보자
- 팀 내의 문화가 없으면 내가 문화를 만들어보도록 하자
- 시키는 일만 하는것이 아닌 필요할 일을 주체적으로 만들어서 하자
- 동시에 NLP에 대한 기본기를 닦자
- 누군가에게 설명할 수 있을때까지는 모르는 것임을 인지하자
'Log' 카테고리의 다른 글
글또 8기를 마치며 (0) | 2023.07.16 |
---|---|
글쓰는 개발자 모임 글또 8기를 시작하며 (0) | 2023.02.11 |
연어의 삶의 지도 (1) | 2023.01.15 |