Train 400x faster Static Embedding Models with Sentence Transformers
임베딩이란 무엇인가?
임베딩은 자연어 처리에서 가장 다용도로 사용되는 도구 중 하나로, 다양한 작업을 해결하는 데 유용합니다.
본질적으로 임베딩은 텍스트, 이미지, 오디오 등과 같은 더 복잡한 객체를 수치적으로 표현한 것입니다.
임베딩 모델은 항상 동일한 고정 크기의 임베딩을 생성합니다.
그런 다음 각 임베딩의 유사성을 계산하여 복잡한 객체들의 유사성을 계산할 수 있습니다.
이것은 매우 많은 사용 사례를 가지고 있으며, 추천 시스템, 검색, 이상치 탐지, 원샷 또는 퓨샷 학습, 유사성 검색, 군집화, 패러프레이즈 탐지, 분류 등 많은 분야의 핵심 역할을 합니다.
현대 임베딩
오늘날의 많은 임베딩 모델은 몇 가지 변환 단계로 구성됩니다. 이러한 단계를 따르는 것을 "추론"이라고 합니다.
토크나이저와 풀러는 각각 인코더의 전처리 및 후처리를 담당합니다.
전자는 텍스트를 인코더가 이해할 수 있는 토큰(즉, 단어 또는 서브워드)으로 분할하는 역할을 하며,
후자는 모든 토큰의 임베딩을 결합하여 전체 텍스트에 대한 하나의 임베딩을 생성합니다.
이 파이프라인 내에서 인코더는 종종 어텐션 레이어를 가진 언어 모델로, 각 토큰이 다른 토큰들의 문맥을 고려하여 계산될 수 있게 합니다.
예를 들어, "bank"는 하나의 토큰일 수 있지만, 그 토큰의 임베딩은 텍스트가 "강가"를 의미하는지 아니면 금융 기관을 의미하는지에 따라 다를 수 있습니다.
어텐션 레이어가 많은 대형 인코더 모델은 문맥을 잘 활용하여 유용한 임베딩을 생성하는 데 효과적이지만, 추론 속도가 느려지는 큰 대가를 치르게 됩니다.
특히 파이프라인에서 인코더 단계는 대부분의 계산 시간을 차지하는 경우가 많습니다.
정적 임베딩
정적 임베딩은 대형의 느린 어텐션 기반 모델을 사용하지 않고, 대신 미리 계산된 토큰 임베딩을 사용하는 인코더 모델 그룹을 말합니다.
정적 임베딩은 트랜스포머 아키텍처가 개발되기 수년 전에 사용되었습니다.
일반적인 예로는 GLoVe와 word2vec이 있습니다.
최근에는 Model2Vec가 사전 학습된 임베딩 모델을 정적 임베딩 모델로 변환하는 데 사용되었습니다.
정적 임베딩에서는 인코더 단계가 사전 계산된 토큰 임베딩을 반환하는 간단한 사전 조회와 같습니다.
따라서 추론이 더 이상 인코더 단계에 의해 병목되지 않게 되어 몇 배 빠른 속도를 달성할 수 있습니다.
--------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------
우리의 방법
우리는 정적 임베딩 모델을 현대적인 기법을 사용해 다시 훈련하는 방식을 탐구했습니다.
대부분의 성능 향상은 곧 설명할 대조 학습 손실 함수(Contrastive Learning Loss Function)를 사용한 데서 나옵니다.
선택적으로, Matryoshka Representation Learning을 사용하여 임베딩 벡터의 단축 버전을 활용하면 추가적인 속도 향상을 얻을 수 있습니다.
훈련에는 Sentence Transformers 라이브러리를 사용할 예정입니다.
훈련 세부 사항
이 재구성된 정적 임베딩의 목표는 이러한 고효율 임베딩 모델에 현대적인 임베딩 모델 미세 조정(finetuning) 기법을 실험적으로 적용하는 것입니다. 특히, GLoVe와 word2vec과는 달리 다음을 사용할 예정입니다:
대조 학습(Contrastive Learning)
대부분의 머신러닝에서는 입력 $X$에 대해 출력 $Y$를 기대하며, 모델이 $X$를 입력받아 $Y$에 가까운 결과를 생성하도록 훈련합니다.
하지만 임베딩 모델에서는 $Y$, 즉 사전에 정의된 "좋은 임베딩"이 무엇인지 알 수 없습니다.
대신 대조 학습에서는 여러 입력 $X_1$, $X_2$와 이들 간의 유사도 정보를 사용합니다.
두 입력을 모델에 넣어 각각 임베딩을 생성한 후, 두 임베딩의 유사성을 비교하여 예측된 유사도를 계산합니다.
실제 유사도가 낮다면 임베딩을 더 멀리 떨어뜨리고, 실제 유사도가 높다면 임베딩을 더 가깝게 당기는 방식으로 학습합니다.
Matryoshka Representation Learning (MRL)
Matryoshka 임베딩 모델은 모델의 임베딩 차원을 작게 축소(truncate)해도 성능 손실을 최소화할 수 있는 독창적인 훈련 기법입니다.
이는 대조 손실 함수를 일반 크기의 임베딩뿐만 아니라 축소된 버전에도 적용하는 방식입니다.
결과적으로 모델은 정보를 임베딩의 앞부분에 우선적으로 저장하는 법을 학습합니다.
축소된 임베딩은 검색, 분류, 군집화와 같은 후속 애플리케이션에서 더 빠르게 작동합니다.
Hugging Face가 제안한 이 방법으로 학습된 모델은 CPU에서 기존의 SotA(State-of-the-Art) 임베딩 모델보다 100배 ~ 400배 가량 빠르게 동작합니다.
이 모델은 85% 이상의 성능을 유지하며 저전력 장치, 브라우저 내 실행, 엣지 컴퓨팅, 임베디드 애플리케이션에서 유용하게 사용할 수 있습니다.
다음과 같은 중요한 결론을 도출할 수 있습니다:
- **static-retrieval-mrl-en-v1**은 GloVe나 Model2Vec 같은 다른 정적 임베딩(Static Embedding) 모델을 모두 능가합니다.
- **static-retrieval-mrl-en-v1**은 정적 임베딩 모델 중 BM25를 능가하는 유일한 모델입니다.
- **static-retrieval-mrl-en-v1**의 성능은 다음과 같은 특징이 있습니다:
- 일반적으로 사용되는 **all-mpnet-base-v2**의 87.4% 수준의 성능을 보여줍니다.
- GPU에서 24배 더 빠릅니다.
- CPU에서 397배 더 빠릅니다.
- **static-retrieval-mrl-en-v1**은 CPU에서 GPU보다 더 빠르게 작동합니다. 이 모델은 소비자용 PC, 소형 서버, 휴대폰, 또는 브라우저 내에서도 매우 빠르게 실행될 수 있습니다.
정적 임베딩 모델(Static Embedding Model)의 주요 특징
- 고속 추론: CPU에서 100~400배 빠른 속도로 실행.
- 낮은 리소스 사용: 엣지 디바이스나 브라우저에서도 사용 가능.
- 현대적 학습 기법:
- 대조학습: 임베딩 간의 유사도를 학습.
- MRL: 임베딩 벡터를 작은 차원으로 줄여도 성능 유지.
- 다양한 데이터셋 활용: 30개의 학습 데이터셋과 13개의 평가 데이터셋 사용.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/static-similarity-mrl-multilingual-v1", device="cpu")
sentences = ["문장 A", "문장 B", "문장 C"]
embeddings = model.encode(sentences)
print(embeddings.shape)
https://discuss.pytorch.kr/t/hugging-face-400-cpu-static-embedding-feat-sentence-transformers/5886
https://huggingface.co/blog/static-embeddings?utm_source=pytorchkr&ref=pytorchkr
'AI 논문 > AI trend research' 카테고리의 다른 글
Don't Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks (0) | 2025.01.14 |
---|---|
AI 경량화 - 더 빠르고 저렴한 AI 서비스를 위해(NAVER 강의) (0) | 2025.01.06 |
네이버 검색에서 LLM의 활용(LLM으로 학습 데이터를 만드는 사례) (0) | 2025.01.03 |
MobileCLIP: Fast Image-Text Models through Multi-Modal Reinforced Training (0) | 2025.01.02 |
Dataset Decomposition: Faster LLM Training with Variable Sequence Length Curriculum (0) | 2024.12.31 |