Articlehuggingface.co·2024년 8월 9일·0

Train 400x faster Static Embedding Models with Sentence Transformers

Quick Summary

이 글은 Sentence Transformers로 정적 임베딩 모델을 현대식 대조학습과 Matryoshka Representation Learning으로 학습해 CPU 추론 속도를 기존 주요 임베딩 모델보다 100~400배 높이면서도 여러 벤치마크에서 성능의 상당 부분을 유지하는 방법을 소개한다.

Train 400x faster Static Embedding Models with Sentence Transformers 관련 대표 이미지

🖼️ 인포그래픽

Train 400x faster Static Embedding Models with Sentence Transformers 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Train 400x faster Static Embedding Models with Sentence Transformers 내용을 설명하는 본문 이미지

💡 한 줄 요약

이 글은 Sentence Transformers로 정적 임베딩 모델을 현대식 대조학습과 Matryoshka Representation Learning으로 학습해 CPU 추론 속도를 기존 주요 임베딩 모델보다 100~400배 높이면서도 여러 벤치마크에서 성능의 상당 부분을 유지하는 방법을 소개한다.

📌 핵심 요약

  • 저자는 정적 임베딩 모델을 다시 검토해, 느린 attention 기반 인코더 대신 사전 계산된 토큰 임베딩 조회 방식을 활용하면 CPU에서 추론 속도를 크게 높일 수 있다고 설명한다.
  • 공개된 두 모델은 영어 검색용 sentence-transformers/static-retrieval-mrl-en-v1과 다국어 유사도용 sentence-transformers/static-similarity-mrl-multilingual-v1이며, all-mpnet-base-v2나 multilingual-e5-small 같은 모델보다 CPU에서 100~400배 빠르다고 제시된다.
  • 품질 측면에서는 여러 벤치마크에서 비교 대상 모델 성능의 최소 85%에 도달했다고 밝히며, 온디바이스 실행, 브라우저 내 실행, 엣지 컴퓨팅, 저전력·임베디드 애플리케이션 같은 사용 사례를 가능하게 한다고 설명한다.
  • 핵심 학습 전략은 기존 GLoVe나 word2vec식 정적 임베딩과 달리 대조학습을 사용해 유사한 입력의 임베딩은 가깝게, 유사하지 않은 입력의 임베딩은 멀어지도록 학습하는 것이다.
  • 또한 Matryoshka Representation Learning을 적용해 임베딩 벡터의 앞부분에 정보가 집중되도록 학습함으로써, 임베딩 차원을 잘라 쓰는 경우에도 성능 손실을 줄이고 검색·분류·클러스터링 같은 후속 작업 속도를 높일 수 있다고 설명한다.

🧩 주요 포인트

  1. 저자는 정적 임베딩 모델을 다시 검토해, 느린 attention 기반 인코더 대신 사전 계산된 토큰 임베딩 조회 방식을 활용하면 CPU에서 추론 속도를 크게 높일 수 있다고 설명한다.
  2. 공개된 두 모델은 영어 검색용 sentence-transformers/static-retrieval-mrl-en-v1과 다국어 유사도용 sentence-transformers/static-similarity-mrl-multilingual-v1이며, all-mpnet-base-v2나 multilingual-e5-small 같은 모델보다 CPU에서 100~400배 빠르다고 제시된다.
  3. 품질 측면에서는 여러 벤치마크에서 비교 대상 모델 성능의 최소 85%에 도달했다고 밝히며, 온디바이스 실행, 브라우저 내 실행, 엣지 컴퓨팅, 저전력·임베디드 애플리케이션 같은 사용 사례를 가능하게 한다고 설명한다.
  4. 핵심 학습 전략은 기존 GLoVe나 word2vec식 정적 임베딩과 달리 대조학습을 사용해 유사한 입력의 임베딩은 가깝게, 유사하지 않은 입력의 임베딩은 멀어지도록 학습하는 것이다.
  5. 또한 Matryoshka Representation Learning을 적용해 임베딩 벡터의 앞부분에 정보가 집중되도록 학습함으로써, 임베딩 차원을 잘라 쓰는 경우에도 성능 손실을 줄이고 검색·분류·클러스터링 같은 후속 작업 속도를 높일 수 있다고 설명한다.

🧠 상세 정리

1. 문제의식과 공개 결과

이 글의 출발점은 최신 임베딩 모델들이 높은 품질을 제공하지만 CPU 추론에서는 비용이 크다는 문제의식이다. 저자는 정적 임베딩 모델을 현대적인 학습 기법으로 다시 학습하면 속도와 품질 사이의 균형을 크게 개선할 수 있다고 주장한다. 실제 결과로 영어 검색 모델과 다국어 유사도 모델 두 가지를 공개했으며, 두 모델은 일반적인 비교 대상보다 CPU에서 100~400배 빠르다고 소개된다. 동시에 여러 벤치마크에서 최소 85% 수준의 성능을 유지했다고 밝히며, 단순한 속도 최적화가 아니라 실용 가능한 품질을 목표로 한 접근임을 강조한다.

2. 임베딩의 기본 역할

원문은 먼저 임베딩이 자연어 처리에서 매우 범용적인 도구라는 점을 설명한다. 임베딩은 텍스트, 이미지, 오디오처럼 복잡한 대상을 고정된 크기의 숫자 벡터로 표현하는 방식이다. 이렇게 만들어진 벡터 사이의 유사도를 계산하면 원래 객체 사이의 의미적 또는 기능적 유사성을 비교할 수 있다. 이 특성 때문에 임베딩은 추천 시스템, 검색, 이상치 탐지, 원샷·퓨샷 학습, 유사도 검색, 클러스터링, 패러프레이즈 탐지, 분류 등 다양한 작업의 기반으로 쓰인다.

3. 현대 임베딩 모델의 병목

현대적인 임베딩 모델은 대체로 토크나이저, 인코더, 풀러라는 여러 단계를 거쳐 추론을 수행한다. 토크나이저는 텍스트를 모델이 이해할 수 있는 단어 또는 서브워드 토큰으로 나누고, 인코더는 각 토큰의 표현을 계산하며, 풀러는 토큰별 임베딩을 하나의 문장 또는 문서 임베딩으로 결합한다. 특히 인코더는 attention layer를 가진 언어 모델인 경우가 많아, 각 토큰을 주변 문맥 안에서 계산할 수 있다. 하지만 이런 문맥 처리 능력은 계산 비용을 크게 늘리며, 원문은 전체 파이프라인에서 인코더 단계가 거의 모든 계산 시간을 차지한다고 설명한다.

4. 정적 임베딩의 속도 이점

정적 임베딩은 크고 느린 attention 기반 인코더 대신 미리 계산된 토큰 임베딩을 사용하는 모델군을 뜻한다. GLoVe와 word2vec이 대표적인 예로 언급되며, 최근에는 Model2Vec이 사전학습된 임베딩 모델을 정적 임베딩 모델로 변환하는 데 사용되었다고 설명된다. 정적 임베딩에서 인코더 단계는 사실상 토큰을 키로 삼아 사전에서 벡터를 찾아오는 작업에 가깝다. 따라서 추론이 더 이상 인코더 계산에 의해 막히지 않고, 원문은 이 구조가 여러 자릿수 규모의 속도 향상을 가능하게 하며 품질 손실도 작을 수 있다고 주장한다.

5. 대조학습을 통한 재학습 전략

저자는 정적 임베딩 모델을 단순히 과거 방식으로 되살리는 것이 아니라, 현대 임베딩 모델 파인튜닝 기법을 적용해 다시 학습하려 한다. 특히 핵심 이득은 대조학습 손실 함수에서 나온다고 설명한다. 일반적인 지도학습에서는 입력 X에 대한 정답 Y를 두고 모델 출력을 Y에 가깝게 만들지만, 임베딩 모델에서는 좋은 임베딩 벡터의 정답 자체를 미리 알기 어렵다. 대신 대조학습은 두 입력과 그 유사도를 사용해, 실제 유사도가 높으면 두 임베딩을 가깝게 하고 낮으면 멀어지게 학습한다.

6. Matryoshka Representation Learning의 역할

원문은 추가적인 속도 개선 가능성으로 Matryoshka Representation Learning을 제시한다. 이 방식은 전체 크기의 임베딩뿐 아니라 잘린 임베딩에도 같은 대조학습 목적을 적용해, 모델이 중요한 정보를 벡터의 앞부분에 우선 저장하도록 유도한다. 그 결과 사용자는 임베딩 차원을 줄여도 성능 손실을 비교적 작게 유지할 수 있다. 잘린 임베딩은 검색, 분류, 클러스터링 같은 후속 애플리케이션에서 계산량과 저장량을 줄이는 데 유리하므로, 정적 임베딩의 빠른 추론 장점과 함께 실제 배포 환경에서 의미 있는 효율 개선을 제공한다.

7. 학습 구성 요소와 모델 목표

저자는 Sentence Transformers의 학습 흐름을 기준으로 필요한 구성 요소를 정리한다. 학습에는 데이터셋, 손실 함수, 선택적인 학습 인자, 선택적인 평가기, 그리고 트레이너가 필요하다고 설명한다. 모델 목표는 두 가지 사용 패턴을 반영한다. 하나는 검색에 특화된 모델이고, 다른 하나는 분류, 클러스터링, 의미 텍스트 유사도처럼 다양한 작업에 쓰이는 일반 유사도 모델이다. 검색 모델은 다국어 검색 학습 데이터가 제한적이라는 이유로 영어 전용으로 설정했고, 일반 유사도 모델은 다국어 데이터를 확보하기 쉬워 다국어 모델로 학습하기로 했다고 밝힌다.

8. StaticEmbedding 구현과 초기화 선택

구현 측면에서 원문은 Sentence Transformers의 StaticEmbedding 모듈을 사용한다. 이 모듈은 패딩을 피하는 효율적인 tokenize 메서드와 임베딩 계산 및 풀링을 처리하는 forward 메서드를 제공한다고 설명된다. 구조적으로는 torch의 EmbeddingBag처럼 효율적인 임베딩 조회 테이블에 평균 풀링을 결합한 형태로 이해할 수 있다. 초기화 방법으로는 Model2Vec 모델을 불러오는 방식, Model2Vec 스타일의 distillation을 수행하는 방식, 토크나이저와 임베딩 차원을 지정해 랜덤 가중치로 시작하는 방식이 언급된다. 저자는 많은 데이터로 완전 학습할 때 마지막 방식이 가장 잘 작동했다고 말하며, 1024차원 임베딩을 선택한다.

9. 사용 예시와 배포 가능성

공개된 모델의 사용법은 일반적인 Sentence Transformers 흐름과 동일하다고 제시된다. 예시에서는 SentenceTransformer로 모델을 불러오고 CPU 장치에서 문장 목록을 encode해 1024차원 임베딩을 얻은 뒤, similarity 메서드로 문장 간 유사도를 계산한다. 영어 검색 예시는 의학 관련 문장들의 임베딩과 유사도 계산을 보여주고, 다국어 유사도 예시는 의미가 가까운 문장과 무관한 문장 사이의 유사도 차이를 보여준다. 원문은 이런 단순한 사용법과 빠른 CPU 추론이 온디바이스, 브라우저 내 실행, 엣지 환경, 저전력 및 임베디드 애플리케이션을 여는 요소라고 설명한다.

🧾 핵심 주장 / 시사점

  • 이 글의 핵심은 정적 임베딩을 과거의 낡은 방식으로 취급하지 않고, 대조학습과 차원 절단 친화 학습을 결합해 현대적인 경량 임베딩 모델로 재해석했다는 점이다.
  • 인코더 병목을 제거하는 접근은 GPU가 없는 환경이나 CPU 중심 배포에서 특히 중요하며, 원문이 강조한 온디바이스·브라우저·엣지 실행 가능성과 직접 연결된다.
  • 성능의 절대 최고치를 추구하기보다 충분한 품질과 압도적인 추론 효율을 맞바꾸는 전략은 검색, 유사도 계산, 클러스터링처럼 대량 임베딩을 반복 처리하는 작업에서 실용적 가치가 크다.

✅ 액션 아이템

  • 영문 검색에 sentence-transformers/static-retrieval-mrl-en-v1을 넣고 기존 모델과 CPU 지연·처리량을 동일 워크로드에서 비교해 100~400배 속도 구간을 점검한다.
  • 다국어 유사도는 sentence-transformers/static-similarity-mrl-multilingual-v1로 전환해 multilingual-e5-small 대비 성능 저하가 최소 85% 범위인지 도메인별로 검증한다.
  • 대조학습 기반 정적 임베딩에 Matryoshka 학습을 결합해 검색·분류·클러스터링에서 앞부분 차원 축소 시 품질 손실 임계값을 실측해 설정한다.

❓ 열린 질문

  • CPU 기반 온디바이스, 브라우저, 엣지 환경에서 정적 임베딩의 처리 이점은 어떤 구간에서 가장 크게 드러나는가?
  • 사전 계산된 토큰 임베딩 조회 방식은 긴 문맥·도메인 특화 텍스트에서 기존 attention 인코더와 어떤 오차 패턴 차이가 나타나는가?
  • 정확도 감소를 15% 이내로 유지하려면 Matryoshka 차원 컷오프를 어디까지 두어야 다국어·임베디드 시나리오에서도 안정적인가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.