반응형

분류 전체보기 102

6편. 성능 최적화 - CPU에서 27배 빠르게

이번 편에서 다루는 것이전 편에서 LLM을 활용해 강좌 설명을 보강했다. 하지만 심각한 성능 문제가 있었다.1개 강좌 보강: 32초1,200개 보강 예상: 10시간 40분 이번 편에서는 이 문제를 어떻게 27배 빠르게 개선했는지 다룬다.문제 현상 분석증상LLM 추론이 비정상적으로 느렸다.import timestart = time.time()result = model.generate(**inputs, max_new_tokens=150)elapsed = time.time() - startprint(f"추론 시간: {elapsed:.2f}초") # 32.14초 비슷한 크기의 다른 모델은 1~2초대였다. 뭔가 잘못되었다.가설 수립느린 원인으로 생각할 수 있는 것들:모델 크기가 큼토큰 생성량이 많음CPU 성능 ..

5편. LLM으로 강좌 설명 보강하기

이번 편에서 다루는 것이전 편에서 언급한 문제:강좌 설명이 부족하면 임베딩 품질이 떨어진다. 실제 데이터를 보니, 상당수의 강좌가 설명이 없거나 너무 짧았다.이 문제를 LLM(Large Language Model)을 활용해 해결했다.문제 분석데이터 현황강좌 설명을 분석해보니:상태비율예시설명 없음15%NULL 또는 빈 문자열이름과 동일20%"데이터베이스" → "데이터베이스"너무 짧음25%"SQL 기초 학습" (10자 미만)충분함40%2줄 이상의 설명 60%의 강좌가 불충분한 설명을 가지고 있었다.임베딩에 미치는 영향# 설명이 부족한 강좌course_1 = "데이터베이스"# 설명이 충분한 강좌 course_2 = "데이터베이스 설계 원리와 SQL 쿼리 작성법을 학습합니다. 정규화, 인덱스, 트랜잭션 처리를..

📝 로그 설정 문제: 에러 추적이 어려운 경우

🚨 이런 상황, 겪어보셨나요?"서버에서 간헐적으로 500 에러가 나는데, 로그에 아무것도 없습니다.""고객이 '결제가 안 된다'고 하는데, 재현이 안 됩니다. 로그라도 있으면...""로그가 너무 많이 쌓여서 디스크가 꽉 찼습니다.""개발 환경에서는 콘솔에 다 보이는데, 프로덕션에서는 어디에 로그가 남는지 모르겠습니다." Django 프로젝트에서 로그는 "잘 될 때는 필요 없지만, 문제가 생기면 가장 먼저 찾는 것"입니다. 그런데 정작 문제가 생겼을 때 로그가 없거나, 너무 많거나, 쓸모없는 내용만 있다면 장애 해결 시간이 기하급수적으로 늘어납니다.🔥 실제 상황: 장애는 발생했는데 단서가 없다새벽 3시, 모니터링 시스템에서 알람이 왔습니다. "주문 성공률 60%로 하락." 정상적으로 99% 이상이어야 ..

4편. 추천 알고리즘 설계 - 가중치 기반 개인화

이번 편에서 다루는 것임베딩이 준비되었으니, 이제 실제로 "이 학생에게 어떤 강좌를 추천할것인가?"를 결정하는 알고리즘을 설계한다.핵심은 학과 기반 추천과 관심분야 기반 추천을 어떻게 결합할 것인가였다.추천 전략의 고민옵션 1: 학과 기반만 (100%)학생의 소속 학과에 개설된 강좌만 추천 장점:전공 학점 취득에 유리단순하고 명확한 로직단점:학생의 개인적 관심사 반영 불가모든 학생에게 동일한 추천 결과차별화된 가치 제공 불가옵션 2: 관심분야 기반만 (100%)학생이 선택한 관심분야와 가장 유사한 강좌만 추천 장점:개인화된 추천학생 만족도 높음단점:전공과 무관한 강좌가 추천될 수 있음학점 인정 문제 발생 가능옵션 3: 하이브리드 방식 (선택)두 기준을 가중치로 결합최종 점수 = (학과 점수 × W1) +..

3편. XLM-R로 강좌 임베딩 구축하기

이번 편에서 다루는 것추천 시스템의 핵심은 "이 강좌와 이 학생이 얼마나 잘 맞는가?"를 계산하는 것이다.이를 위해 텍스트(강좌 설명, 학과 정보, 관심분야)를 수치로 변환해야 한다. 이것이 임베딩(Embedding)이다.임베딩이란?임베딩은 텍스트를 고정 길이의 숫자 배열(벡터)로 변환하는 기술이다."파이썬 프로그래밍 기초" → [0.23, -0.45, 0.12, ..., 0.67] (768차원)"웹 개발 입문" → [0.21, -0.42, 0.15, ..., 0.63] (768차원) 의미가 비슷한 텍스트는 비슷한 벡터를 가진다. 이 성질을 이용해 코사인 유사도로 두 텍스트의 유사성을 측정한다.모델 선택: 왜 XLM-R인가?고려한 옵션들모델특징검토 결과OpenAI text-embedd..

🎭 Mock 처리 부족: 외부 의존성 때문에 테스트가 불안정한 경우

🚨 이런 상황, 겪어보셨나요?"테스트를 돌리는데 외부 API가 실제로 호출되어서 결제가 됐습니다.""테스트가 네트워크 상태에 따라 될 때도 있고 안 될 때도 있습니다.""CI 서버에서 외부 API 호출이 차단돼서 테스트가 전부 실패합니다.""이메일 발송 테스트를 돌렸더니 고객한테 실제로 메일이 갔습니다." Django 프로젝트는 결제 시스템, 이메일 서비스, SMS 발송, 외부 API, AWS S3 등 수많은 외부 서비스와 연동됩니다. 이런 외부 의존성을 Mock으로 대체하지 않으면, 테스트가 느리고, 불안정하고, 심지어 실제 결제나 실제 메일 발송 같은 사고가 발생합니다.🔥 실제 상황: 테스트가 실제 결제를 일으키다한 스타트업에서 주문 기능을 개발하고 있었습니다.# services.pyimport ..

2편. 추천을 위한 데이터 파이프라인 설계

이번 편에서 다루는 것AI 추천 시스템의 첫 번째 단계는 데이터 확보다. 아무리 좋은 알고리즘도 데이터가 없으면 무용지물이다.이번 편에서는 외부 학사 API에서 데이터를 가져와 PostgreSQL에 저장하는 파이프라인을 어떻게 설계하고 구현했는지 다룬다.데이터 소스 분석필요한 데이터추천 시스템에 필요한 데이터를 먼저 정리했다.데이터 용도 특징학생 정보추천 대상 식별, 학과 정보5,000건+, 학기마다 변동강좌 정보추천 후보군2,000건+, 매 학기 갱신학과 정보학과 기반 필터링50건, 거의 고정비교과 활동추천 후보군500건+, 수시 등록관심분야개인화 요소100건, 고정학생별 관심분야개인화 매칭10,000건+, 학생이 직접 선택외부 API 구조학사 시스템은 REST API를 제공했다. 각 데이터별로 별도 ..

🧪 테스트 DB 오염: 테스트 간 데이터가 남아서 실패하는 경우

🚨 이런 상황, 겪어보셨나요?"테스트를 하나씩 돌리면 통과하는데, 전체를 돌리면 랜덤하게 실패합니다.""분명히 어제까지 통과하던 테스트가 오늘 갑자기 실패합니다. 코드를 안 바꿨는데요.""CI에서만 테스트가 실패하고, 로컬에서는 항상 통과합니다.""테스트 실행 순서를 바꾸면 결과가 달라집니다." Django 테스트를 작성하다 보면, 테스트 하나만 돌리면 당연히 통과하는데 여러 테스트를 함께 돌리면 예측 불가능하게 실패하는 경험을 하게 됩니다. 원인은 대부분 테스트 DB 오염 — 이전 테스트가 만든 데이터가 다음 테스트에 영향을 주는 것입니다.🔥 실제 상황: 통과했다 실패했다 들쪽날쪽 테스트E커머스 프로젝트에서 테스트를 작성하고 있었습니다.class ProductTest(TestCase): def..

📨 응답 형식 불일치: 프론트엔드에서 예상하는 JSON 구조와 다름

🚨 이런 상황, 겪어보셨나요?"백엔드에서는 성공이라고 하는데, 프론트에서는 에러로 처리됩니다.""같은 API인데 상품 목록은 배열로 오고, 상품 상세는 객체로 와요. 프론트에서 매번 분기 처리해야 합니다.""에러가 났는데 500 에러만 돌아와요. 어디서 뭔 문제인지 메시지가 없습니다.""성공할 때는 data에 담기고, 실패할 때는 error에 담기고, 어떤 API는 그냥 바로 배열이 오고... 프론트 개발자가 멘붕했습니다." Django REST Framework(DRF)로 API를 만들다 보면, 응답 형식의 일관성을 생각하지 않는 경우가 많습니다. DRF가 기본으로 제공하는 응답을 그대로 쓰면 되니까 편하긴 하죠. 그런데 API가 10개, 20개, 50개로 늘어나면서, 각각의 API가 제각각의 형식으..

1편. 프로젝트 소개 - 왜 AI 추천이 필요했나

프로젝트 배경대학에는 수많은 교과와 비교과가 있다. 매 학기 수강신청 때마다 학생들은 뭘 들어야 할지 몰라 선배들이 추천하는 강의에 몰리고, 막상 수강한 강의에 대한 만족도는 낮은 경우가 많다.학생들이 자신에게 맞는 교과를 찾을 수 있도록 AI 기반 추천 시스템을 만들어달라는 의뢰를 받았다.이후 비슷한 요청이 이어져, 현재 몇몇 교육기관에서 이 솔루션을 사용 중이다.해결하고자 한 것대학에서는 이 문제를 AI 기반 개인화 추천 시스템으로 해결하고자 했다.목표학과 기반 추천: 학생의 전공/학과에 적합한 강좌 우선 추천관심사 반영: 학생이 선택한 관심 분야를 추천에 반영자동화: 매 학기 새로운 강좌가 개설되어도 자동으로 추천 갱신설명 가능성: 왜 이 강좌를 추천하는지 근거 제공기술적 도전 과제이 프로젝트에서 ..

반응형