[AI]2단계_모델_추론성능_최적화_성향기반_장소추천 - 100-hours-a-week/12-marong-Wiki GitHub Wiki
1.기존 모델 추론의 성능 지표 수집 및 문서화
MBTI 키워드 벡터 및 분위기 벡터 임베딩 후, 아래 4개 모델의 학습 결과를 비교함평점이 높아질 수록 두 벡터의 유사도는 높게, 낮을 수록 두 벡터의 유사도가 낮아지도록 학습함최적 평균 손실과 임베딩 벡터 공간 차원을 고려할 때 손실이 가장 낮고 차원 수가 비교적 적은 'snunlp/KR-SBERT-V40K-klueNLI-augSTS' Model을 초기 MVP에서 사용할 임베딩 모델로 선정
모델명 |
평균 학습 시간 |
최적 평균 손실(Optimal Avg Loss) |
학습 양상 |
임베딩 벡터 공간 차원 |
GPU 예약 메모리 |
snunlp/KR-SBERT-V40K-klueNLI-augSTS |
약 1분 |
0.1148 |
최적의 Avg Loss 값으로 적절하게 수렴 |
768 |
2.3GB |
unsloth/llama-2-7b-bnb-4bit |
약 1분 |
0.1153 |
최적의 Avg Loss 값으로 적절하게 수렴 |
4096 |
7.2GB |
google/gemma-2b-it |
약 1분 |
0.1291 |
최적의 Avg Loss 값으로 적절하게 수렴 |
2048 |
5.0GB |
sentence-transformers/all-MiniLM-L6-v2 |
약 1분 |
0.1291 |
최적의 Avg Loss 값으로 적절하게 수렴 |
384 |
1.2GB |
2.식별된 성능 병목 요소 및 원인 분석
- 초기 MVP 단계에서 데이터셋 수집의 한계로 인한 사용자에게 개인화된 서비스 제공의 어려움
- 사용자의 MBTI와 더불어 좋아하는 음식, 싫어하는 음식, 취미, 기타 행동 기반 요소(예시: 해당 장소 방문 횟수, 유사 성향의 사용자가 방문하는 장소 등)에 대한 데이터 부재
3.적용할 최적화 기법 구체 계획 수립
추가 데이터 수집
- BeautifulSoup, Selenium을 이용하여 1차적으로 '판교역' 주변 식당과 카페의 상호명, 주소, 판매 음식, 영업 시간, 별점, 리뷰 데이터 수집
- '판교역' 인근에서 확장하여 경기도 성남시 내 데이터를 수집하는 것으로 확장 예정
4.최적화 적용 후 기대 성능 지표 정의
- 상위 K개 정밀도(Top K Precision): 모델이 추천한 상위 K개 중 실제로 사용자가 좋아한(클릭, 좋아요, 찜, 방문 리뷰 등) 장소가 몇 개나 포함되었는지를 평가
- 상위 K개 재현율(Top K Recall): 사용자가 좋아한 장소 중 모델이 추천한 장소가 몇 개나 포함되었는지를 평가
- AP(Average Precision): 모델이 추천한 항목 중에서 사용자가 좋아한 장소가 얼마나 위에 잘 나왔는지 평균낸 값
Average Precision(AP) 계산 예시
가정
- 유저 A에게 5개 장소 추천:
["a", "b", "c", "d", "e"]
- 유저 A가 실제 좋아한 장소:
["b", "e"]
k |
장소 |
rel(k) |
P(k) = 정밀도 k |
누적합 |
1 |
"a" |
0 |
0 / 1 = 0.00 |
0.00 |
2 |
"b" |
1 |
1 / 2 = 0.50 |
0.50 |
3 |
"c" |
0 |
1 / 3 = 0.33 |
0.50 |
4 |
"d" |
0 |
1 / 4 = 0.25 |
0.50 |
5 |
"e" |
1 |
2 / 5 = 0.40 |
0.90 |
rel(k)
: k번째 항목이 실제 관련(relevant) 항목이면 1, 아니면 0
P(k)
: 추천 리스트 상위 k개까지 중 사용자가 좋아한 항목의 비율