granite-embedding-278m-multilingualは、高品質なテキスト埋め込みを生成するために使用できる Graniteの 278Mメータモデルです。 このモデルは、サイズ768の埋め込みベクトルを生成し、オープンソースの関連性ペアデータセットと、企業に優しい寛容なライセンス、および IBMが収集・生成したデータセットを組み合わせてトレーニングされています。 このモデルは、コントラスト・ファインチューニング、知識の蒸留、モデルの統合を用いて開発され、パフォーマンスが向上しています。
- 開発者 Granite 組み込みチーム IBM
- GitHub リポジトリ: ibm-granite/granite-embedding-models
- ウェブサイト Granite
- 紙媒体 :まもなく公開
- 公開日 : 18th
- ライセンス: Apache 2.0
サポートされている言語
英語、ドイツ語、スペイン語、フランス語、日本語、ポルトガル語、アラビア語、チェコ語、イタリア語、韓国語、オランダ語、中国語。 ユーザーは Granite-Embedding-278M-Multilingualを、これら12言語以外の言語向けに微調整することができます。
用途
このモデルは、与えられたテキストに対して固定長のベクトル表現を生成するように設計されており、テキストの類似性、検索、検索アプリケーションに使用することができます。
文変換器との併用
このモデル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との併用
これは、Transformerライブラリと 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)、Mintaka Retrieval(8言語を対象としたMintaka Retrieval)、英語(15タスクを対象としたMTEB Retrieval)、ドイツ語(4タスク)、スペイン語(2タスク)、フランス語(5タスク)、日本語(2タスク)、アラビア語(1タスク)、韓国語(1タスク)、中国語(8タスク)の翻訳結果は以下に報告されています。
モデル | パラメータ(M) | 埋め込み寸法 | Miracl (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 |
データの学習
全体として、トレーニングデータは4つの主要なソースで構成されています。(1)ウェブから収集した教師なしのタイトルのペアデータ、(2)企業に配慮した寛容なライセンスで公開されているペアデータ、(3)特定の技術領域を対象とした IBMのペアデータ、(4) IBM合成データ。 データは以下に列挙されています
データ・セット | 番号 ペア |
---|---|
MC4 | 52,823,484 |
多言語ウェブホスティング | 12,369,322 |
英語版ウィキペディア | 20,745,403 |
多言語ウィキメディア | 2,911,090 |
ミラクルコーパス タイトル ・本文) | 10,120,398 |
Stack Exchange 重複した質問(タイトル) | 304,525 |
Stack Exchange 重複した質問(タイトル) | 304,525 |
Stack Exchange 重複した質問(本文) | 250,519 |
Stack Exchangeの機械翻訳 重複した質問(タイトル) | 187,195 |
Stack Exchange タイトル、回答)のペア | 4,067,139 |
Stack Exchange タイトル、本文) のペア | 23,978,013 |
Stack Exchange タイトル、本文) のペア | 23,978,013 |
Stack Exchangeの機械翻訳 タイトル 本文、回答)のペア | 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引用トリプレットの機械翻訳 | 4,104,600 |
自然な質問(NQ) | 100,231 |
SQuAD2.0 | 87,599 |
HotpotQA | 85,000 |
熱 | 109,810 |
PubMed | 20,000,000 |
多言語ミラクルトリプルズ | 81,409 |
多言語 MrTydi トリプル | 48,715 |
Sadeeem 質問 回答 | 4,037 |
DBPediaのタイトルのペア | 4,635,922 |
合成:英語クエリ-ウィキペディアの文章 | 1,879,093 |
合成:英語のファクト・ベリフィケーション | 9,888 |
合成:多言語クエリ-Wikipediaの文章 | 300,266 |
合成:多言語ニュース要約 | 37,489 |
IBM 社内での3倍 | 40,290 |
IBM 社内タイトルの組み合わせ | 1,524,586 |
注目すべきは、その非商用ライセンスのため、私たちはトレーニング用コーパスに人気の高いMS-MARCO検索用データセットを使用していないことです。一方、他のオープンソースモデルは、その質の高さから、このデータセットを使用してトレーニングを行っています。
インフラストラクチャー
私たちは、 NVIDIA A100 80gb GPU を搭載した IBM のコンピューティング クラスターである Cognitive Compute Cluster を使用して Granite Embedding モデルをトレーニングします。 このクラスタは、複数のGPU上でモデルをトレーニングするためのスケーラブルで効率的なインフラストラクチャを提供します。
倫理的な考慮事項と制限
基本言語モデルのトレーニングに使用された英語のデータは、憎悪、虐待、冒涜的な表現を含むテキストを削除するようフィルタリングされました。
リソース
- Granite の最新のアップデートについて学ぶ: IBM Granite Web サイト
- チュートリアル、ベスト プラクティス、迅速なエンジニアリング アドバイスを活用して始めましょう: IBM Granite ドキュメント
- Graniteの最新の学習リソースについて学ぼう IBM