granite-embedding-278m-multilingual 모델은 Granite 278M 매개변수 모델로, 고품질의 텍스트 임베딩을 생성하는 데 사용할 수 있습니다. 이 모델은 768 크기의 임베딩 벡터를 생성하며, 기업 친화적인 개방형 소스 관련성 쌍 데이터 세트와 IBM 수집하고 생성한 데이터 세트를 조합하여 훈련됩니다. 이 모델은 성능 향상을 위해 대비적 미세 조정, 지식 증류, 모델 병합을 사용하여 개발되었습니다.
- 개발자 : Granite, IBM
- GitHub 저장소: ibm-granite/granite-embedding-models
- 웹사이트 : Granite
- 종이: 출시 예정
- 출시일 : 20 18th
- 라이센스: Apache 2.0
지원 언어
영어, 독일어, 스페인어, 프랑스어, 일본어, 포르투갈어, 아랍어, 체코어, 이탈리아어, 한국어, 네덜란드어, 중국어. 사용자는 이 12개 언어 이외의 언어에 대해 Granite-Embedding-278M-Multilingual 미세 조정할 수 있습니다.
의도된 사용
이 모델은 주어진 텍스트에 대해 고정 길이의 벡터 표현을 생성하도록 설계되어 있으며, 텍스트 유사성, 검색, 검색 응용 프로그램에 사용할 수 있습니다.
문장 변환기를 사용한 사용법
이 모델은 SentenceTransformer 라이브러리와 호환되며 사용이 매우 쉽습니다.
먼저, 문장 변환기 라이브러리를 설치합니다.
pip install sentence_transformers
그런 다음 이 모델을 사용하여 텍스트 쌍을 인코딩하고 표현 간의 유사성을 찾을 수 있습니다.
from sentence_transformers import SentenceTransformer, util
model_path = "ibm-granite/granite-embedding-278m-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-278m-multilingual 사용하는 방법에 대한 간단한 예제입니다.
먼저, 필요한 라이브러리를 설치합니다.
pip install transformers torch
그런 다음 이 모델을 사용하여 텍스트 쌍을 인코딩할 수 있습니다.
import torch
from transformers import AutoModel, AutoTokenizer
model_path = "ibm-granite/granite-embedding-278m-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-278m-multilingual uses CLS Pooling
query_embeddings = model_output[0][:, 0]
# normalize the embeddings
query_embeddings = torch.nn.functional.normalize(query_embeddings, dim=1)
평가
Granite-Embedding-278M-Multilingual 평균 성능(18개 언어에 걸친 Multilingual Miracl, 8개 언어에 걸친 Mintaka Retrieval, 15개 작업에 걸친 영어 MTEB 검색)), 독일어(4개 작업), 스페인어(2개 작업), 프랑스어(5개 작업), 일본어(2개 작업), 아랍어(1개 작업), 한국어(1개 작업), 중국어(8개 작업)가 아래에 보고되어 있습니다.
모델 | 매개변수(M) | 차원 내장 | 미라클 (18) | 민타카 검색 (8) | MTEB 영어 (15) | MTEB 독일어 (4) | MTEB 스페인어 (2) | MTEB 프랑스어 (5) | MTEB 일본어 (2) | MTEB 아랍어 (1) | MTEB 한국어 (1) | MTEB 중국어 (8) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
granite-embedding-278M-multilingual | 278 | 768 | 58.3 | 23.2 | 48.2 | 71.2 | 52.6 | 54.1 | 61.7 | 64.2 | 71.8 | 45.2 |
모델 아키텍처
granite-embedding-278m-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