granite-embedding-107m-multilingual 모델은 Granite 107M 매개 변수 밀도 비엔코더 임베딩 모델로, 고품질의 텍스트 임베딩을 생성하는 데 사용할 수 있습니다. 이 모델은 384 크기의 임베딩 벡터를 생성하며, 기업 친화적인 개방형 소스 관련성 쌍 데이터 세트와 IBM 수집하고 생성한 데이터 세트를 조합하여 훈련됩니다. 이 모델은 성능 향상을 위해 대비적 미세 조정, 지식 증류, 모델 병합을 사용하여 개발되었습니다.
- 개발자 : Granite, IBM
- GitHub 저장소: ibm-granite/granite-embedding-models
- 웹사이트 : Granite
- 종이: 출시 예정
- 출시일 : 20 18th
- 라이센스: Apache 2.0
지원 언어
영어, 독일어, 스페인어, 프랑스어, 일본어, 포르투갈어, 아랍어, 체코어, 이탈리아어, 한국어, 네덜란드어, 중국어. 사용자는 이 12개 언어를 넘어서는 언어에 대해 granite-embedding-107m-multilingual 미세 조정할 수 있습니다.
의도된 사용
이 모델은 주어진 텍스트에 대해 고정 길이의 벡터 표현을 생성하도록 설계되어 있으며, 텍스트 유사성, 검색, 검색 응용 프로그램에 사용할 수 있습니다.
문장 변환기를 사용한 사용법
이 모델은 SentenceTransformer 라이브러리와 호환되며 사용이 매우 쉽습니다
먼저, 문장 변환기 라이브러리를 설치합니다.
pip install sentence_transformers
그런 다음 이 모델을 사용하여 텍스트 쌍을 인코딩하고 표현 간의 유사성을 찾을 수 있습니다.
from sentence_transformers import SentenceTransformer, util
model_path = "ibm-granite/granite-embedding-107m-multilingual"
# Load the Sentence Transformer model
model = SentenceTransformer(model_path)
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define'
]
input_passages = [
"Achy Breaky Heart is a country song written by Don Von Tress. Originally titled Don't Tell My Heart and performed by The Marcy Brothers in 1991. ",
"Definition of summit for English Language Learners. : 1 the highest point of a mountain : the top of a mountain. : 2 the highest level. : 3 a meeting or series of meetings between the leaders of two or more governments."
]
# encode queries and passages
query_embeddings = model.encode(input_queries)
passage_embeddings = model.encode(input_passages)
# calculate cosine similarity
print(util.cos_sim(query_embeddings, passage_embeddings))
Huggingface Transformers 사용법
이것은 Transformers 라이브러리와 PyTorch 사용하여 granite-embedding-107m-multilingual 사용하는 방법에 대한 간단한 예제입니다.
먼저, 필요한 라이브러리를 설치합니다.
pip install transformers torch
그런 다음 이 모델을 사용하여 텍스트 쌍을 인코딩할 수 있습니다.
import torch
from transformers import AutoModel, AutoTokenizer
model_path = "ibm-granite/granite-embedding-107m-multilingual"
# Load the model and tokenizer
model = AutoModel.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.eval()
input_queries = [
' Who made the song My achy breaky heart? ',
'summit define'
]
# tokenize inputs
tokenized_queries = tokenizer(input_queries, padding=True, truncation=True, return_tensors='pt')
# encode queries
with torch.no_grad():
# Queries
model_output = model(**tokenized_queries)
# Perform pooling. granite-embedding-107m-multilingual uses CLS Pooling
query_embeddings = model_output[0][:, 0]
# normalize the embeddings
query_embeddings = torch.nn.functional.normalize(query_embeddings, dim=1)
평가
다국어 미라클(18개 언어), 민타카 검색(8개 언어), 영어 MTEB 검색(15개 작업)에서 granite-embedding-107m-multilingual 의 평균 성능), 독일어(4개 작업), 스페인어(2개 작업), 프랑스어(5개 작업), 일본어(2개 작업), 아랍어(1개 작업), 한국어(1개 작업), 중국어(8개 작업)가 아래에 보고되어 있습니다. granite-embedding-107m-multilingual 모델은 비슷한 크기의 다른 모델보다 두 배나 빠릅니다.
모델 | 매개변수(M) | 차원 내장 | 미라클 (18) | 민타카 검색 (8) | MTEB 영어 (15) | MTEB 독일어 (4) | MTEB 스페인어 (2) | MTEB 프랑스어 (5) | MTEB 일본어 (2) | MTEB 아랍어 (1) | MTEB 한국어 (1) | MTEB 중국어 (8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
granite-embedding-107m-multilingual | 107 | 384 | 55.9 | 22.6 | 45.3 | 70.3 | 48.7 | 51.1 | 59.0 | 63.2 | 70.5 | 40.8 |
모델 아키텍처
granite-embedding-107m-multilingual 모델은 IBM 내부적으로 훈련된 인코더 전용 XLM-RoBERTa 와 같은 트랜스포머 아키텍처를 기반으로 합니다.
모델 | granite-embedding-30m-english | granite-embedding-125m-english | granite-embedding-107m-multilingual | granite-embedding-278m-multilingual |
---|---|---|---|---|
내장 크기 | 384 | 768 | 384 | 768 |
레이어 수 | 6 | 12 | 6 | 12 |
주의 머리의 수 | 12 | 12 | 12 | 12 |
중간 크기 | 1536 | 3072 | 1536 | 3072 |
활성화 함수 | GeLU | GeLU | GeLU | GeLU |
단어 수 | 50265 | 50265 | 250002 | 250002 |
최대 시퀀스 길이 | 512 | 512 | 512 | 512 |
매개변수의 수 | 30M | 125M | 107M | 278M |
훈련 데이터
전반적으로, 훈련 데이터는 네 가지 주요 소스로 구성되어 있습니다: (1) 웹에서 수집한 감독되지 않은 제목-본문 쌍 데이터, (2) 공개적으로 이용 가능하고, 기업 친화적인 라이선스를 가진 쌍, (3) 특정 기술 영역을 대상으로 하는 IBM 쌍 데이터, (4) IBM 합성 데이터. 데이터는 아래와 같습니다:
데이터 세트 | 숫자. 쌍 |
---|---|
MC4 | 52,823,484 |
다국어 웹호스 | 12,369,322 |
영어 위키백과 | 20,745,403 |
다국어 위키미디어 | 2,911,090 |
미라클 코퍼스(제목-본문) | 10,120,398 |
스택 교환 중복 질문(제목) | 304,525 |
스택 교환 중복 질문(제목) | 304,525 |
스택 교환 중복 질문(본문) | 250,519 |
스택 익스체인지의 기계 번역 중복 질문(제목) | 187,195 |
스택 교환(제목, 답변) 쌍 | 4,067,139 |
스택 익스체인지(제목, 본문) 쌍 | 23,978,013 |
스택 익스체인지(제목, 본문) 쌍 | 23,978,013 |
스택 익스체인지의 기계 번역(제목+본문, 답변) 쌍 | 1,827,15 |
SearchQA | 582,261 |
S2ORC (제목, 초록) | 41,769,185 |
WikiAnswers 중복 질문 쌍 | 77,427,422 |
CC뉴스 | 614,664 |
XSum | 226,711 |
SimpleWiki | 102,225 |
기계 번역 교차 언어 병렬 코퍼라 | 28,376,115 |
SPECTER 인용 삼중항 | 684,100 |
SPECTER 인용 3중주 기계 번역 | 4,104,600 |
자연스러운 질문(NQ) | 100,231 |
SQuAD2.0 | 87,599 |
HotpotQA | 85,000 |
열 | 109,810 |
PubMed | 20,000,000 |
다국어 Miracl 트리플 | 81,409 |
다국어 MrTydi 트리플 | 48,715 |
Sadeem 질문 답변 | 4,037 |
DBPedia 제목-본문 쌍 | 4,635,922 |
종합: 영어 검색어-위키피디아 구절 | 1,879,093 |
종합: 영어 사실 확인 | 9,888 |
종합: 다국어 검색 - 위키피디아 구절 | 300,266 |
종합: 다국어 뉴스 요약 | 37,489 |
IBM 내부 트리플 | 40,290 |
IBM 내부 제목-본문 쌍 | 1,524,586 |
특히, 우리는 상업적 라이선스 때문에 인기 있는 MS-MARCO 검색 데이터 세트를 훈련 코퍼스에 사용하지 않지만, 다른 오픈 소스 모델은 이 데이터 세트의 높은 품질 때문에 이 데이터 세트를 사용하여 훈련합니다.
인프라
우리는 NVIDIA A100 80gb GPU가 장착된 IBM 의 컴퓨팅 클러스터인 Cognitive Compute Cluster를 사용하여 Granite Embedding Models를 훈련합니다. 이 클러스터는 여러 GPU를 통해 모델을 훈련할 수 있는 확장 가능하고 효율적인 인프라를 제공합니다.
윤리적 고려사항과 한계
기본 언어 모델을 훈련하는 데 사용된 영어 데이터는 혐오, 욕설, 욕설이 포함된 텍스트를 제거하기 위해 필터링되었습니다.
자원
- Granite 의 최신 업데이트에 대해 알아보세요: IBM Granite 웹사이트
- 튜토리얼, 모범 사례 및 신속한 엔지니어링 조언을 통해 시작하세요: IBM Granite 문서
- 최신 Granite 학습 자료에 대해 알아보세요: IBM