최재혁(Jaehyeok Choi)

AI Engineer

Profile

CV, LLM, Time-Series 등 다양한 기술을 주로 다루는 AI 개발자 최재혁입니다.

LLM, RAG를 활용한 기술 및 프로젝트에 관심이 많습니다.

Experiences

AI Engineer

2024.07.15 ~ 재직중
KT

DataScientist

2022.04.11 ~ 2024.05.15
AIFactory

DataScientist

2021.07.26 ~ 2022.01.28
GSITM

project

연구분야 대화형 생성 AI의 교정학습구조 설계 및 평가

2024-01-15 ~ 2024-05-15
AIFactory
  • 한국전력공사의 사내 데이터 RAG 시스템 구축을 위한 RAG 용 LLM 학습 및 사외 데이터 수집

    • 사외 데이터는 python을 활용한 crawling을 사용
      • 동적 웹페이지 crawling시 selenium 사용
      • IP 차단을 수행하는 웹페이지는 undetected_chromedriver을 사용하여 차단 우회
    • LLM 학습에는 SFT Trainer 사용
      • A6000 GPU 2장에서 학습하기 위한 QLora 사용
      • SFT 훈련시 best adapter만 저장
      • 학습의 효율화를 위해서 deepspeed zero 2 사용하여 병렬 GPU 학습 수행
    • Ragas의 faithfulness score, answer relevancy score 평가
      • 학습시킨 모델 (llama2, eeve, gemma … 등)의 RAG 성능을 Ragas 패키지를 통한 평가
      • faithfulness score, answer relevancy score 가 높은 모델로 선정

docker 기반 시계열 예측 pipeline 개발

2023-10-16 ~ 2023-12-15
AIFactory
  • 5가지 시계열 모델을 데이터 갱신, 모델 학습, 추론의 과정을 스케줄을 통해 자동으로 수행하는 docker 설계 및 개발

    • BAT 파일을 통해 window의 Task Scheduler에 작업 등록 (이때 실행 주기 설정 일, 주, 월)
    • Task Scheduler에 등록된 BAT이 설정한 주기로 실행
      • docker container는 프로세스 효율화를 위해 실행이 끝나면 container 제거하는 방법 사용
      • 모델별 데이터 갱신, 학습, 추론 개별 수행할 수 있는 class 와 전체를 한 번에 실행할 수 있는 class 설계
    • docker 안의 wrap.py를 실행하고 해당 wrap.py는 bat에서 넘어온 전역변수를 통해 적절한 class로 실행시켜 주는 역할 수행
    • 모든 실행은 subprocess를 통해서 실행, 실행 도중 에러 발생 시 해당 error local DB에 기록
    • 실행 완료 시 local MariaDB에 추론 결과 예측값 저장

어종(魚種) 식별 및 분류 알고리즘 개발

2023-10-30 ~ 2023-11-30
AIFactory
  • 8가지 어종에 대한 Object-detection 대회 설계 및 출제

    • train : test 분리 시 class 불균형 비율 유지
    • label coco format setting
    • 평가 지표 Macro F1 score
      • 불필요한 bbox 예측에 대한 점수 감소 적용
      • NMS 적용 시에만 정상 작동 → 결과의 연산량 감소
    • Yolo V5를 통한 어종 식별 Object-Detection
      • yolo format 변환 후 적용

디브릿지 프로젝트

2023-07-20 ~ 2023-10-31
AIFactory
  • KT 내부 전산망 API와 자사의 chatbot 및 local llm을 통한 채팅형 관제 서비스 설계

    • 지식 기반 chatbot 서비스 개발
      • PDF, CSV, hwp와 같이 특정 문서의 text 자동 전처리 후, 해당 정보를 VectorDB 저장
      • VectorDB의 similarity score를 기반으로 답변 생성 및 Source reference 제공
    • KT 집중 감시 서버 관제
      • ChatGPT를 통해서 특정 기간, 특정 간격으로 집중적으로 서버의 이상 유무를 판단
      • “30분 뒤까지 10분 간격으로 집중 감시해 줘” 수행 시 10분 간격으로 30분까지 감시
      • 위의 전체 실행 기능은 sub process로 작동 (반복 및 실행 종료 시 영향 최소화)
    • ChatGPT Function call 사용한 채팅형 서버 관제
      • ChatGPT의 Function call 기능을 활용하여 채팅을 통해 서버 관제 API 호출
      • 호출된 API의 return 값을 통해 ChatGPT가 추가적인 조치 프로세스 수행
      • 채팅을 통해서 11개의 관제 API 호출
    • Local llm Function call 사용한 채팅형 서버 관제
      • llama2를 활용하여 Function call 기능 적용 및 채팅을 통해 서버 관제 API 호출
      • 호출된 API의 return 값을 통해 추가적인 조치 프로세스 수행
      • 채팅을 통해서 11개의 관제 API 호출

KT 통신망 안정성 확보를 위한 인공지능 해커톤

2023-07-19 ~ 2023-09-15
AIFactory
  • 무선 기지국 장비의 통계 데이터를 활용한 인구 밀집도 예측
    • 축제 지역 근방 10곳의 기지국에서 축제 기간 전후에 해당하는 모든 타임스탬프에 대해 인구 수를 예측하는 회귀 문제
    • 다양한 데이터 column 중 인구 수 변화에 유의미한 값을 선별하고 시계열 데이터의 주기성을 고려하도록 출제
    • MAE 평가 지표를 통한 평가
  • 유선 네트워크 장비의 신속한 조치를 위한 경보 유형 분류
    • 모든 전표 ID에 대해 링크 장애, 유닛 장애, 전원 장애 중 하나의 유형으로 예측하는 분류 문제
    • 경보 메시지를 구성하는 다양한 키워드의 의미와 조합을 이해하고, 다수의 경보 간 발생 순서를 고려하도록 설계
    • Accuracy 평가 지표를 통한 평가

자사 추론자동화 제출 테스트 설계

2023-07-17 ~ 2023-09-30
AIFactory
  • Time Series forcast Task
  • Sliding window를 사용하여 6시간 input 추론 기준시점으로부터 4시간 뒤를 예측
  • MAE를 평가 지표로 사용하여 평가

자사 Local llm chatbot 테스트

2023-04-15 ~ 2023-06-17
AIFactory
  • Local llm chatbot 구축을 위한 local llm test (koalpaca, kullm, kovicuna)

    • GPU 3090 사용
    • PDF, hwp, csv 등 데이터 원천으로 얻은 분할된 chunk vectorDB (chroma)
    • langchain의 VectorDBQA chain과 local llm 연결, RAG chat 설계

자사 chatbot hwp text load 기능 개발

2023-04-03 ~ 2023-05-20
AIFactory
  • 기존의 olefile의 hwp text 불러오는 한계가 존재
    • 표 안의 text를 가져오지 못하는 문제
  • JAVA의 패키지를 컴파일 → python에서 해당 패키지를 사용하는 방법으로 hwp text 파싱
    • 표 안의 text 및 text 파싱 속도 향상

USG AI·데이터 문제해결 제조혁신 경진대회

2023-03-08 ~ 2023-03-13
AIFactory
  • 크기와 형태가 다른 LED 숫자 이미지 분류 대회 출제

    • 대학생 초급 난이도를 위한 경진대회 설계
    • VGG16 전이 학습을 통한 분류
    • 총 10가지 class 데이터의 불균형 설정
    • 평가는 macro f1-score 사용

Animal Datathon Korea 2022

2022-11-04 ~ 2022-11-06
AIFactory
  • 축사 내부의 돼지의 자세 분류, 말의 자세 예측 대회 출제

    • 돼지의 자세 분류
      • 돼지의 자세 4가지 class로 구성
      • label 미제공으로 비지도로 해결하도록 설계
      • F1-score를 통해서 평가
    • 축사 내 말의 자세 예측
      • 말의 관절 17개에 해당하는 keypoint detection 문제로 설계
      • 절반의 데이터만 labeling 되어있고 나머지는 label 미제공
      • COCOeval의 Keypoin Evaluation을 통해 평가

NH투자증권 빅데이터 경진대회

2022-09-08 ~ 2022-12-09
AIFactory
  • NH 고객 및 거래 데이터를 활용해 NH투자증권의 Digital 고객을 분석 대회 설계

    • NH 고객의 거래 데이터를 통한 고객군 분류
    • NH 고객의 자산을 변동률을 통해 자산의 변동을 파악할 수 있는 파생 변수 생성
    • 국내 주식만, 외국 주식만, 모두 다 주식의 거래 패턴을 확인할 수 있는 파생 변수 생성
    • Kmean 군집을 사용해 군집별 군집 수를 적절하게 분류
    • 분류된 군집의 특성과 고객군의 나이를 기반으로 보고서를 작성

DL E&C 시공 현장 안전장구 착용 여부 탐지

2022-09-05 ~ 2022-11-11
AIFactory
  • Object Detection을 활용한 10개의 안전장비 착용 여부 탐지 대회 설계

    • 10개의 class에 해당하는 객체를 탐지하는 AI 모델
    • data는 영상을 프레임 단위로 분절시킨 데이터
    • Macro F1 Score를 평가 지표로 사용, 불필요한 예측에 대한 감점 적용
    • 모든 데이터 셋 Coco format으로 통일

농넷 농산물 가격 변동률 예측 AI 경진대회

2022-08-29 ~ 2022-11-30
AIFactory
  • 37품목의 농산물 가격 변동률을 예측하는 대회 설계

    • Transformer를 활용한 Time Series Forecasting 설계
    • 추론 기준시점으로부터 1주, 2주, 4주를 예측하는 모델
    • 평가는 예측값의 평균 변동률의 MAE로 계산
    • 가격을 예측하는 것이 아닌 기준시점 대비 예측값의 변동률을 예측

LG 입자 형태 분석 모델 개발 해커톤

2022-07-07 ~ 2022-08-08
AIFactory
  • Instance Segmentation 분야를 활용하여 유체상에 입자를 검출해 내는 대회 설계

    • Mask R-CNN을 통한 입자 검출 모델 설계
    • Image Data preprocessing & labels check
    • coco format setting
    • IoU를 반영한 F1-Score을 통한 평가 수행

유전알고리즘을 활용한 물류매칭 알고리즘

2021-10-01 ~ 2021-12-01
GSITM
  • 상품 적재 시 최대 적재량을 넘지 않으면서 최대의 이익률을 얻을 수 있는 상품들의 조합 추천

    • DEAP 유전 알고리즘을 활용
    • 무게와 가격의 두 개의 기준을 통해 최대의 이익을 내는 상품 조합 추천 프로세스 개발

상품별 판매량 예측 프로젝트

2021-09-01 ~ 2022-09-30
GSITM
  • 편의점 상품의 품목코드 매칭 및 판매량의 연별, 월별, 일별, 분기별 계절성 고려하여 전처리
  • Meta의 Prophet을 사용하여 상품별 판매량 예측
  • 예측된 판매량을 통해서 편의점별 제고의 관리 효율화 방안 제시

Personal Project

Gemma 비서

  • Gemma 7b 모델을 SFT 학습을 통한 Function call

    • Gemma에게 질문(’역삼역에서 시청까지 가는 방법알려줘’, ‘삼성전자 주가 알려줘’, ‘부산 날씨 알려줘’ , ‘최근 이메일 조회해줘’) 수행시 사전에 정의한 함수를 Gemma가 선택하여 실행
    • Data set은 chatGPT Function call을 기반으로 정제, SFT 학습을 통해 Adapter 생성
    • 학습된 adapter을 연결하여 질의시 해당 함수를 실행 이후 실행된 내용은 KaKao톡을 통하여 전달

Streamlit과 Langchain으로 나만의 웹서비스 개발하기

  • Langchain KR이 주최하는 2024Q1 밋업 발표

    • 발표 PPT Link
    • Streamlit을 사용한 Langchain 서비스 배포방법 설명
    • Vector DB 분리, Langchain QA chain을 사용한 장소 추천방법 설명
    • DEAP 유전알고리즘을 사용한 경로기반 추천방법 설명
    • Python으로 자동화 보고서 생성하는 방법 설명
      • HTML 코드를 python String으로 생성
      • 생성된 HTML를 PDF로 변환

개인 데이터셋을 통한 llama2 fine-tune

  • llama2 fine-tuning 을 쉽게 하기 위한 방법 설계 및 llama2 RAG 프로세스 설계 방법 발표

    • 발표 YouTube Link
    • 사용한 model : meta-llama2 7b, beomi/llama-2-ko-7b
      • colab GPU T4에 최적화 되도록 설정
      • SFTTrainer, lora를 사용해서 Instruction Fine-tune
      • Fine-tune을 쉽게 수행하기 위해 Gradio GUI 사용
    • langchain RetrievalQAWithSourcesChain 을 통한 RAG 시스템
    • HuggingFace Embeddings 모델 사용

챗GPT 점메추 메뉴판, 예산입력하고 점심 메뉴 추천받자

  • chatGPT 와 Langchain을 사용해서 RAG 시스템 설계와 특정 PDF 맞춤 챗봇 만드는 방법 발표

    • 발표 YouTube Link
    • 사용자가 가지고 있는 PDF → chroma vectorDB
      • PDF의 text에서 불용어 전처리
      • RecursiveCharacterTextSplitter 사용해서 chunk 분할
    • RetrievalQAWithSourcesChain 을 통한 RAG 시스템 구축
    • langchain의 FakeAgent를 통한 답변과 이미지 출력같이하는 프로세스 구축

MMPose를 통한 Human Pose estimatixon

  • MMPose를 사용하여 Pose estimation 구현 방법 발표

    • 발표 YouTube Link
    • MMPose는 관절의 key-point를 detect 하는 패키지
      • 한국어에 대한 설명과 실제 사용방법이 잘 설명되지 않아서 처음 접하기는 어려움
      • MMPose를 사용해 MPII 데이터 셋 으로 실제 사람의 key-point를 추론하는 과정 설명
    • hrnet 모델을 사용해서 최종적으로 학습된 모델로 inference 테스트
    • 학습한 모델을 Gradio GUI

지오에이아이데이터학회

  • 지오에이아이 데이터 학회 튜토리얼 세션 중급 Object-Detection

    • YoloV3를 이용한 Car Detection
    • csv 파일 안의 image, xmin, ymin, xmax, ymax → yolo format
    • yolov3 훈련 및 결과 시각화