병목 요소 식별 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki

1. CLIP 예상 병목 지점 식별

단계 설명 병목 원인 영향
① 입력 이미지 로딩 서버로부터 전달받은 URL로 이미지 로딩 - 네트워크 지연- 외부 서버 상태 의존- 동시 요청 시 연결 대기 발생 이미지 처리 전체 파이프라인 지연의 시작점처리 속도 변동성 발생
② 이미지 전처리 CLIP 모델 추론에 활용하기 위해 이미지 리사이즈 및 정규화 - PIL or torchvision 변환 속도 제한- 배치 크기 증가 시 일시적 메모리 사용량 증가 연속 추론 시 버퍼링 지연RAM 점유율 일시 상승 가능
③ CLIP 모델 이미지 임베딩 CLIP 모델을 활용해 이미지 → 벡터 임베딩 - PyTorch 모델 실행의 CPU 병렬 연산- torch.set_num_threads() 설정 누락 시 CPU 과점유 멀티 태스크 동시 수행 시 CPU 자원 경합일시적인 처리 시간 증가
④ 중복 사진 필터링 이미지 임베딩 간 코사인 유사도 분석 및 그룹화 - cosine_similarity의 전체 임베딩 비교 (N x N 연산)- DBSCAN 클러스터링의 거리 계산 부하 이미지 수 증가 시 계산량 급증처리 시간 선형 이상으로 증가 가능
⑤ 저품질 사진 필터링 CLIP IQA 프롬프트와 유사도 비교 - 텍스트 프롬프트 수가 많을 경우 cosine_similarity 연산량 증가- numpy 변환/복사 오버헤드 기준 프롬프트 수에 비례하여 성능 저하텍스트 임베딩 고정시 캐싱 필요
⑥ 카테고리 분류 이미지 클러스터링 후 카테고리 텍스트 임베딩과 유사도 비교 - KNN 기반 군집화 시 이웃 계산 부하- 대표 벡터 평균 계산 시 메모리 복사 유사도 기반 분류 정확도는 높지만 처리 시간 증가배치 수 증가 시 확연히 느려짐
⑦ 하이라이트 스코어링 Linear Probing 방식으로 이미지마다 하이라이트 스코어링 - 선형 회귀 자체는 경량이나, 예측 대상 수가 많을 경우 batch 처리 필요- 미처리된 경우 torch → numpy 변환 비용 발생 대량 이미지 입력 시 예측 병렬화 필요전처리 단계보다 가볍지만 누적 부하 가능

[ 요약 ]

  • 핵심 병목 지점은 일반적으로 ③ 이미지 임베딩, ④ 중복 필터링, ⑥ 카테고리 분류에서 발생할 가능성이 높음
  • 특히 DBSCAN, cosine_similarity (NxN), 군집 기반 평균 연산입력 수 증가에 따라 처리 시간이 선형 이상으로 늘어나는 연산이라 최적화 우선 대상
  • 반대로 Linear Probing, IQA는 상대적으로 고정된 연산이기 때문에 확장이 쉬움

2. 예상 병목 지점 식별

단계 설명 병목 원인 영향
① GCS 이미지 다운로드 GCS URL 이용 순차적 HTTP 요청, 네트워크 지연 이미지 수 증가 시 전체 대기 시간 급증
② 얼굴 인식 (HOG) 이미지당 얼굴 탐지 CPU 단일 연산, 반복 호출 이미지 해상도 및 얼굴 수에 따라 지연
③ 임베딩 추출 얼굴 → 128D 벡터 Numpy 기반 연산 부하 탐지된 얼굴 수에 비례하여 증가
④ 거리 계산 (cosine) N x N pairwise 계산 O(n²) 복잡도, 메모리 부담 사진 장수 증가 시 처리 시간 급증
⑤ DBSCAN 클러스터링 거리 기반 그룹화 연산량 + 메모리 사용 ↑ 하이퍼파라미터 설정에 민감
⑥ GCS 업로드 결과 이미지 저장 및 업로드 순차적 HTTP PUT 요청 이미지 수만큼 반복 요청, 대기 발생

3. stable diffusion 병목 요소 식별

단계 설명 병목 원인 영향
① 입력 이미지 로딩 및 base64 변환 GCS → 이미지 로컬 로딩 → base64 인코딩 - 고해상도 이미지 I/O- CPU 연산 기반 인코딩 초기 요청 준비 시간 증가
② Gemini 프롬프트 생성 텍스트 프롬프트 생성 (Gemini API 호출) API 응답 지연 (네트워크/API 지연) 전체 처리 시간에 비례 영향
③ Stable Diffusion 서버 요청 (POST) GPU 서버로 스타일 변환 요청 네트워크 RTT + JSON payload 전송 시간 T4 서버 외부 요청 시 병목 발생 가능
④ Stable Diffusion 연산 (실제 생성) GPU에서 이미지 변환 모델 크기, ControlNet 모듈 수, 해상도 전체 시간의 대부분
⑤ base64 응답 디코딩 및 저장 응답 이미지 base64 → 디코딩, 저장, GCS 업로드 CPU 연산 + I/O 지연 마지막 단계 지연 가능