미리보기
기본 정보
기술 스택
Python, MariaDB, PyTorch, Tensorflow, 추천 시스템, MySQL, 딥러닝, Docker, FastAPI, docker-compose
프로젝트
프롬프트 엔지니어링 활용 개인화 맞춤 VOD 추천 서비스
LG헬로비전 DX Data School
2023.10. ~ 2023.12.
프로젝트 개요
딥러닝 및 NLP 모델을 API 형태로 추천 결과를 대시보드에 제공하는 시스템.
주요 기술 스택: FastAPI 웹 프레임워크, SBERT 및 Doc2Vec과 같은 NLP 모델, RESTful API 설계 및 배포 기술.
1. API 설계 및 배포
FastAPI를 기반으로 RESTful API를 설계하고, 모델 서빙을 위한 플랫폼을 구축.
DeepFM, SBERT, Doc2Vec 모델을 API로 구현하여 다양한 예측 서비스 및 텍스트 임베딩 제공.
실시간 데이터 수신, 처리, 제공을 위한 파이프라인 설계
2. LangChain을 이용하여 각 컨텐츠별 메타데이터 추출.
# Lang Chain에 추출할 Prompt를 제시하기
templates = {
# 줄거리를 통해 "분위기" 를 추출하는 템플릿
'template_A': """
You are now an AI that helps film critics express themselves richly.
Please provide the plot of the movie or drama.
List 5 mood words in English that capture the essence of the story.
For example, mood words include “interesting,” “mysterious,” “charming,” and “sense of urgency.”
Separate each mood word with a comma (,) and refrain from adding any additional information.
""",
# 줄거리를 통해 "세부 장르"를 추출하는 템플릿
'template_B':"""
You are now an AI that helps film critics express themselves richly.
Please provide the plot of the movie or drama.
List 5 genre words in English that capture the essence of the story.
For example, genre words include “joker,” “mysterious,” "chasing",“car chasing,”,"history"and “war.”
Separate each word with a comma (,) and refrain from adding any additional information.
""",
# 줄거리를 통해 "주제어"를 추출하는 템플릿
'template_C':"""
You are now an AI that helps film critics express themselves richly.
Please provide the plot of the movie or drama.
List 5 subject words in English that capture the essence of the story.
For example, subject words include “joker,” “cat,” "couple",“car”,"history"and “war.”
Separate each word with a comma (,) and refrain from adding any additional information.
"""
}
미비한 메타데이터 보완을 위해 ChatGPT 및 LangChain을 활용한 메타데이터 확보.
컨텐츠의 메타데이터(재미있는, 스릴감 넘치는, 불타는 등) 추출.
3. 모델 내장 및 오프라인 추론.
SBERT 모델:
사용자의 선호 컨텐츠의 줄거리를 임베딩하여 벡터로 만든 후, Faiss 라이브러리를 활용하여 N개의 컨텐츠를 검색.
유사도가 가장 높은 줄거리를 가진 컨텐츠를 사용자에게 추천.
Doc2Vec 모델:
사전에 모든 컨텐츠의 메타데이터를 Prompt Engineering 을 이용하여 추출.
사용자의 선호 컨텐츠의 메타데이터를 벡터로 변환 후 모델에 입력하여 N 개의 컨텐츠를 검색.
유사도가 가장 높은 컨텐츠를 사용자에게 추천.
DeepFM 모델:
메타데이터를 추출한 뒤, 약 9,000개의 희소 데이터를 text-embedding-ada-002 모델로 임베딩하여 상위 장르 그룹으로 매핑.
def get_similar_words(ada_embedding: list[str], top_k: int) -> dict: query_vector = np.array(ada_embedding).reshape(1,-1) # index = faiss.IndexIDMap(faiss.IndexFlatIP(emb_np.shape[1])) D,I = index.search(query_vector,top_k) sim_words_dict = {} for idx,distance in zip(I[0],D[0]): # 상위 카테고리에 해당하는 카테고리 값을 유사도 점수(distance)와 함께 반환 word = template.at[idx,'template_words'] sim_words_dict[word] = distance return sim_words_dict
각 사용자 별 모든 아이템의 평가가 주어진 Data Set 을 구성.
data = {
"subsr": [65941000],
"content_id": [11],
"liked": [0],
"ct_cl": ["TV 시사/교양"],
"genre_of_ct_cl": ["기타"],
"Adventure": [0],
"Disaster": [0],
"Martial Arts": [0],
"Military Action": [0],
"Spy and Espionage": [0],
"Fantasy romance": [0],
"Space Opera or epic sci-fi": [1],
"Utopia": [0],
"Dystopia": [1],
"Contemporary Sci-Fi": [1],
"Cyberpunk": [1],
"Steampunk": [1],
"Psychological thriller": [0],
"Mystery": [0],
"Film noir": [0]
}
Data Set 을 TrainSet 으로 DeepFM 모델에 훈련한 후 개인화 추천을 실행.
실시간 추천 및 오프라인 추천, 두 가지 모두 구현.
통신과 추론 속도로 인해 타임아웃이 자주 발생하여 오프라인 추론으로 변경.
이후 데이터 전처리 및 메타데이터 확보 자동화 시스템을 도입.
본 프로젝트는 데이터 엔지니어링 분야에서 API 설계 및 배포, 모델 서빙, 데이터 파이프라인 최적화와 같은 핵심 기술을 구현하고 발전시키는 데 중점을 두었습니다.
실시간 데이터 처리의 효율성을 높이는 동시에 유지보수 가능한 모듈화된 시스템을 설계하였습니다.
2023 한국어 AI 경진대회
기타(4인)
2023.08. ~ 2023.11.
프로젝트 개요
경진대회를 통해 새로운 알고리즘, 기술, 접근 방식에 대한 학습 및 경험
실제 문제에 대한 해결 능력을 증명하기 위해 참여
주요 내용 및 상세 역할
대회 데이터셋의 성격에 맞춘 모델 fine tuning.
Kospeech모델의 성능 개선을 위한 기술 관련 논문 연구 및 모델 구조 변형에 참여.
팀원들의 성취 욕구와 학습 열정을 중요하게 생각하며, 기술적인 부분에 대한 교육과 지도를 제공.
외부 사전 학습 모델인 Whisper 도입 시도 (기술적인 문제 – 버전 호환 문제로 인해 실패)
사전 테스트와 예선을 거쳐 최종 본선 진출 (9/98)
포트폴리오
교육
대구가톨릭대학교
대학교(학사) | 컴퓨터공학전공
2018.03. ~ 2024.08. | 졸업
대외활동
LG Aimers
LG
AI기술 전반에 대한 이해와 함께 최신 트렌드를 반영한 다양한 AI기술을 접함.
해커톤 문제를 풀기 위해 필요한 도메인 지식 습득.
해커톤 주제: 공정 데이터를 활용하여 제품 생산 과정의 이상 여부를 판별 모델 개발.
Google MachineLearning Bootcamp
MachineLearning 및 DeepLearning 주제의 강의(Coursera) 학습 및 최신 논문 리뷰.
Kaggle Competition 참여하여 일정 스코어 달성.
Kaggle Competition: Medical Image Segmentation and Object Detection
LG HelloVision DX Data School
한국전파진흥협회
프로젝트 부문 대상 수상
프로젝트 주제 : 프롬프트 엔지니어링 활용 개인화 맞춤 VOD 추천 서비스
자격증
SQL개발자(SQLD자격)
개발자 | 한국데이터베이스진흥센터
2024.05.
자기소개
성격 및 장단점
저는 보통 조용하고 차분한 성격을 가지고 있습니다. 이러한 성격 특성이 제가 책임감과 인내심을 높이는 데에 도움이 됩니다. 어떤 역할이나 과제를 주면, 그 문제를 해결하기 위해 노력을 아끼지 않고, 그 역할을 완수하기 위해 최선을 다합니다. 이것은 주어진 일에 대한 책임감을 가지는 성향에서 비롯된 것으로, 제가 어떤 역할을 맡게 되면 그 일에 부합하는 행동을 취하려고 노력합니다. 그 이유는 내 행동이 다른 사람에게 어떤 식으로든 피해를 주지 않도록 신경을 쓰기 때문입니다. 따라서, 이러한 특성은 주어진 의무를 성실히 다하고 주변 사람들의 만족과 인정을 얻는 것을 중요하게 생각하는 성격입니다. 또한, 친구나 동료와의 관계를 유지하고 틀어지지 않도록 부단한 노력을 기울이는 편입니다.
프로젝트를 진행하면서 제 강점 중 하나는 오류가 발생할 때, 그 오류의 원인을 파악하고 어떻게 오류를 해결할지에 대한 전략을 지닌다는 것입니다. 이는 이전 프로젝트 경험을 통해 오류 처리 및 해결 능력을 향상했기 때문입니다. 따라서, 어떤 어려운 상황에 직면하더라도 유연하게 문제를 해결할 수 있는 역량을 갖추고 있습니다. 또한, 팀원과 협력하여 일을 수행할 때, 소통 및 관계 유지 능력을 바탕으로 주어진 문제를 원만하게 해결하고 팀 내에서의 조화를 유지할 수 있을 것입니다.
제가 극복해야 할 단점은 많은 사람들 앞에서 발표하거나 의견을 표현하는 데 어려움을 겪는 경향이 있습니다. 작은 그룹이나 소수의 사람 앞에서는 말하기에 큰 문제가 없지만, 대규모 인원 앞에서 긴장하고 발표를 준비하는 과정에서 어려움을 겪을 때가 있습니다. 예를 들어, 동아리 프로젝트 발표에서는 프로젝트 진행 상황과 향후 일정에 대한 설명을 동아리원 앞에서 제대로 전달하지 못한 적이 있습니다. 이러한 단점을 극복하기 위해 토론 프로그램, 서평, 프로젝트 회의, 발표 연습을 통해 개선하고 있으며, 지속적인 노력을 통해 이를 극복하고자 노력하고 있습니다.
팀을 이뤄 도전하고 성공한 경험
한국어 음성인식 경진대회를 4명이 팀을 이루어 진출하였습니다. 팀원들의 본대회 주제 관련 경험은 수업에서 배운 이론 및 실습뿐이었고, 관련 프로젝트 경험이 있는 사람은 당시 구글 머신러닝 부트캠프를 듣고 있는 저뿐이었습니다. 제가 팀장을 맡아 사전테스트 때 음성인식 기술의 기본적인 구현을 진행하였습니다. 예선에 진출한 뒤 본격적인 모델 성능을 개발하는 임무를 부여받았습니다. 모델의 구조가 복잡하고 성능을 개발하려면 여러 가지 기술 관련 논문을 읽어야 했기 때문에 어려움이 있었지만, 팀원들의 성취 욕구와 학습 열정을 보았습니다. 이에 저는 파이썬의 모듈화된 코드를 하나하나 설명하며 모델 구조와 코드의 연결 방식, 데이터의 불러오기 과정, 리눅스 커널의 활용법 등을 자세히 안내하였습니다.
그 결과 팀원들은 제가 제공한 정보를 바탕으로 다양한 레퍼런스를 찾아보고 적용하며 성능 개선에 성공하였고, 약 100팀이 참가한 대회에서 예선 및 본선까지 진출하여 최종 9위를 달성하였습니다. 이 경험은 하나의 작은 회사처럼 느껴졌습니다. 제가 사수로서 새로운 분야의 개념을 이해시키기 위해 어떻게 말하고 가르쳐야 할지 고민한 결과, 팀원들이 자기 주도적으로 학습하며 기술을 적용하는 모습을 보면서 성취감과 가르침에 대한 자신감을 얻었습니다.