전체 글

Kyeong6's Journey
[EATceed] CH07. AWS Lambda와 Slack을 활용한 데이터 파이프라인 구축기
·Project/EATceed
들어가며 이전 포스팅에서 언급했듯이 EATceed 서비스는 AI 영양사와 푸드렌즈 기능을 제공하고 있다. 이러한 기능이 안정적으로 동작하기 위해서는 정확하고 신뢰할 수 있는 음식 데이터가 필수적으로 요구된다. 특히, 공공데이터 포털에서 제공하는 전국통합식품영양성분정보(음식)표준데이터는 서비스의 핵심 기반이 되는 정보로, 이를 정기적으로 갱신하고 관리하는 작업은 매우 중요하다.  초기에는 데이터를 수작업으로 수집하고 내부 저장소(관계형 데이터베이스, 벡터 데이터베이스)에 직접 적재했지만, 시간이 지날수록 다음과 같은 문제들이 발생했다.새로운 데이터가 등록되었는지 매번 공공데이터 포털에서 수동으로 확인해야하는 모니터링 부담영양 성분 단위 변환 등 반복적 작업에서 발생하는 사소한 실수지속적인 운영 리소스 낭비..
[EATceed] CH06. LLM 응답의 품질 검증과 안정적인 운영을 위한 Fallback 패턴
·Project/EATceed
들어가며이전 포스팅에서는 실서비스 운영을 고려한 성능 최적화에 대해 다뤘다. 물론 빠른 응답 속도와 정확도도 중요하지만 실제 사용자에게 AI 기반 서비스를 제공할 때 가장 중요한 요소는 신뢰할 수 있는 품질의 응답을 일관되게 제공하는 것이다. EATceed의 AI 영양사 기능은 사용자의 건강에 직접적인 영향을 주는 정보를 제공하기 때문에 응답의 정확성과 안정성은 곧 서비스의 핵심 경쟁력이라고 볼 수 있다. 하지만 현실적으로 LLM 기반의 응답은 품질이 항상 일정하지 않고, OpenAI와 같은 외부 API에 대한 높은 의존도 역시 시스템 안정성을 위협할 수 있는 요소이다. 이를 해결하기 위해 두 가지 전략을 도입하게 되었다. Testing ChainLLM이 생성한 답변을 스스로 평가(G-Eval)하고 기준..
[EATceed] CH05. 실서비스를 고려한 성능 최적화
·Project/EATceed
들어가며EATceed의 AI 기능은 음식 이미지 판별인 푸드렌즈 기능과 식습관 분석, 일명 AI 영양사 기능을 핵심으로 삼고있다. 유저 관점에서 생각했을 때 보다 정확하고 빠른 서비스를 제공하기 위해 내부적으로 여러 가지 성능 최적화와 안정성 개선을 위해 작업을 진행했는데, 이번 포스팅에서 작업에 대한 과정을 중심으로 어떻게 테스트·구현했는지 공유하고자 합니다. 푸드렌즈: 성능 최적화 푸드렌즈 기능은 사용자가 업로드한 음식 사진을 인식해 정확한 음식명을 찾아주는 것이 핵심이다. 본 서비스에서는 편의성을 위해 음식명에 따른 영양성분 정보도 함께 제공해야 하므로 AI 모델이 탐지한 음식명과 DB에 사전 적재해둔 음식명 같의 불일치 문제가 발생한다. 예를 들어, AI 모델은 "김치"라고 탐지했는데 DB에는 "..
[EATceed] CH04. 돌고 돌아 마침내 정식 출시까지
·Project/EATceed
최종 출시 버전 여러 번의 수정과 방향 전환을 거쳐 2월 8일에 드디어 EATceed 서비스를 구글 플레이스토어에 정식 출시했다!👏이전 글에 작성했듯이 EATceed는 기존 시장 트렌드인 체중 감량과는 반대로, 저체중 사용자를 위한 체중 증가 앱이라는 독특한 목표로 시작했다. 사실 이는 팀원 모두가 체중 증량에 관심이 있었기에 “우리가 직접 사용해보자”라는 의도로 기획이 이루어졌다. 초기 Version 1에서는 챗봇 중심의 음식 추천을 구현했고, 이를 위해 GPT-3.5-turbo 모델에 Fine-Tuning까지 시도했는데 동아리 발표회 후 얻은 사용자 피드백과 팀원들과의 의논 끝에 서비스에서 “현재 서비스와 챗봇이 잘 어울리지 않는다”라는 결론에 도달했다.  이후 Version 2에서는 음식 이미지 ..
[인턴] CH03. 스마트유량계 프로젝트 진행 과정에서 마주한 문제와 해결 과정
·Intern
프로젝트 개요 이전 포스팅인 [인턴] CH01. 프로젝트 소개와 방향성에서 다룬 바와 같이 본 프로젝트인 "인공지능 스마트 유량계 프로젝트"는 인공지능(AI)과 사물인터넷(IoT)를 결합한 개념인 AIoT 기술과 LSTM 기반 알고리즘을 활용해 상수관망 내 유량과 수압 데이터를 예측하고 이상징후를 감지하는 시스템이다. 이를 통해 상수관망의 문제를 신속하게 감지하고 대응할 수 있도록 지원하는 것이 프로젝트의 핵심 목표이다.기존에 회사가 보유하고 있는 LSTM 코드를 기반으로 다양하고 복잡한 요구사항을 반영한 파이프라인을 구축해야하다보니 진행 과정에서 많은 문제가 발생했다.이번 포스팅에서는 요구사항 및 문제 상황을 정리하고, 이를 해결하기 위해 적용한 방법과 결과를 공유하고자 한다. 1️⃣ 데이터 손실 문제..
[Landscape Analysis] 첫 외주를 맡다!
·Project
어떻게 맡게 되었나?이번 프로젝트는 교수님의 연구를 돕기 위한 목적으로 진행되었다. 교수님과는 주전공인 "조경학과" 졸업작품을 통해 인연이 있는데, 당시 나는 한국 도시공원 평가 지표 프로젝트 Parkscore를 진행하며 개발을 활용한 경험이 있었다. 이를 계기로 교수님께서 조경과 컴퓨팅을 접목한 연구를 도와달라는 요청을 주셨다.교수님께서는 대륙 별 경관 사진을 분석하는 연구를 진행 중이었으며, 이를 위해 데이터 수집과 이미지 분석이 필요했다. 특히, 단순한 데이터 수집이 아닌 자동화된 분석 프로세스를 원하셨고, 이를 위해 나는 크롤링부터 분석까지 한 번에 수행하는 파이프라인을 구축하는 것이 더 효율적이라고 판단했다.교수님도 제안에 긍정적으로 동의해주셨고, 결과적으로 이미지 수집부터 분석까지 자동으로 진..
[견고한 데이터 엔지니어링] Chapter01. 데이터 엔지니어링 상세 및 수명주기
·Book
1.1 데이터 엔지니어링이란?1.1.1 데이터 엔지니어링 정의데이터 엔지니어링이란 다양한 의견이 있지만, 공통적으로 보이는 패턴은 “데이터 엔지니어가 데이터를 가져와 저장하고, 데이터 과학자나 분석가 등이 사용할 수 있도록 준비하는 것”이다.1.1.2 데이터 엔지니어링 수명 주기현재 봤을 때 이전에 알고 있는 개념인 ETL이 위에 존재함을 알 수 있다. 드러난 요소를 아는 것도 중요하지만, 드러나지 않은 요소가 데이터 엔지니어링 수명 주기에 존재함을 알아야 한다.현재의 “데이터 엔지니어링”이란 데이터 수명 주기를 위한 엔지니어링이라고 할 수 있다.데이터 수명 주기 엔지니어는 더 강화된 추상화와 단순화 덕분에 더는 과거 빅데이터 프레임워크의 끔찍한 세부 사항의 방해를 받지 않는다. 데이터 엔지니어는 여전히..
[데이터 파이프라인 핵심 가이드] 1. 데이터 파이프라인(패턴) 소개 및 데이터 인프라
·Book
1. 데이터 파이프라인 소개이번 방학에 데이터 파이프라인 핵심 가이드 책을 통해 데이터 파이프라인에 관한 내용을 학습하고자 한다. 데이터 파이프라인이란 데이터가 발생하는 소스에서 자유롭게 필요한 데이터를 가져와서 데이터를 활용할 수 있게 파이프라인, 즉 흐름을 구축하는 것이라고 할 수 있다. 이번 포스트에서는 책에서 알게된 내용을 정리하고자 한다. 1.1 우수한 데이터 엔지니어가 보유하고 있는 공통적인 기술SQL과 데이터웨어하우징 기초고성능의 SQL 활용 능력 /  데이터 웨어하우징 및 데이터 모델링의 기본사항 이해Python / Java / Scala와 같은 프로그래밍 능력분산 컴퓨팅데이터 양이 많아지고 데이터를 신속하게 처리하고자 하는 요구사항이 늘어나면서 데이터 엔지니어들은 분산 컴퓨팅 플랫폼 사..
[인턴] CH02. 효율적인 설계의 첫걸음: 디자인 패턴 도입기
·Intern
디자인 패턴 도입기존에 회사에 존재하던 코드인 LSTM 예측 코드는 프로젝트의 다양한 요구사항 중 하나에 해당할 뿐이기 때문에 새로운 요구사항을 충족하기 위해서는 단순히 기능을 구현하는 것 뿐만 아니라 프로젝트 설계를 해야했다. 즉, 요구사항을 파악했으니 이를 기반으로 설계와 구상을 진행해야했다. 이전 글에서도 언급했듯이 해당 프로젝트의 최종 목표는 상업화이기 때문에 복잡한 요구사항을 효율적으로 설계하고, 유지보수 가능한 구조를 만드는 것을 목표로 두었다. 왜냐하면 내가 회사를 떠나게 된다해도 이후에 다른 담당자가 코드를 쉽게 이해하고 수정할 수 있어야하기 때문이다. 그래서 나는 문서화와 함께 디자인 패턴 도입을 하기로 결정했다.이 중 이번 글에서는 도입한 디자인 패턴과 왜 이 패턴을 선택했는지에 대해 ..
Kyeong6
Kyeong6's Journey