| --- |
| license: apache-2.0 |
| language: |
| - en |
| pipeline_tag: sentence-similarity |
| datasets: |
| - sentence-transformers/msmarco-msmarco-distilbert-base-v3 |
| - microsoft/ms_marco |
| tags: |
| - taylor-m1 |
| --- |
| |
| # constructai/taylor-m1 |
|
|
| --- |
|
|
| This model is a fine-tuned version of a custom BERT-like encoder (hidden_size=384, 6 layers) trained on MS MARCO passage ranking dataset. |
| It uses **triplet hard negatives** from [`sentence-transformers/msmarco-msmarco-distilbert-base-v3`](https://huggingface.co/datasets/sentence-transformers/msmarco-msmarco-distilbert-base-v3) (Apache-2.0 license). The base MS MARCO data is subject to [Microsoft Research License](https://github.com/microsoft/MSMARCO-Passage-Ranking/blob/master/LICENSE). |
| |
| The model produces **384-dimensional** embeddings (CLS token) optimized for cosine similarity. |
| |
| --- |
| |
| # Training details |
| |
| * ~22 417 920M parameters |
| |
| * Vocab Size: 30 522 |
| |
| * **Max sequence length: 128 tokens** |
| |
| * Loss: MultipleNegativesSymmetricRankingLoss (InfoNCE) |
| |
| * Batch size: 128 (32 + gradient accumulation) |
| |
| * Learning rate: 2e-5 |
| |
| * Data: ~500k triplets from MS MARCO |
| |
| |
| |
| --- |
| |
| # Evaluation |
| |
| On a small test set, the model achieves: |
| |
| * Positive pair similarity: 0.58 |
| |
| * Negative pair similarity: 0.14 |
| |
| * Margin: 0.44 |
| |
| --- |
| |
| # Usage |
| |
| **Option 1: Via custom Python package (recommended)** |
| |
| Install the package directly from GitHub: |
| |
| ```bash |
| pip install git+https://github.com/PSYCHOxSPEED/constructai-taylor-model |
| ``` |
| |
| **Then load the model and get embeddings:** |
| |
| ```python |
| from taylor_model import load_taylor_model, embed_texts |
| import torch |
| |
| device = "cuda" if torch.cuda.is_available() else "cpu" |
| model, tokenizer, _ = load_taylor_model("constructai/taylor-m1", device=device) |
|
|
| texts = ["What is a neural network?", "How to make pizza at home?"] |
| embeddings = embed_texts(model, tokenizer, texts, device=device) |
| print(embeddings.shape) # (2, 384) |
| ``` |
| |
| **Compute similarity between queries and documents:** |
| |
| ```python |
| from taylor_model import load_taylor_model, embed_texts |
| import torch |
| |
| device = "cuda" if torch.cuda.is_available() else "cpu" |
| model, tokenizer, _ = load_taylor_model("constructai/taylor-m1", device=device) |
|
|
| queries = [ |
| "What is a neural network?", |
| "How to make pizza at home?" |
| ] |
| documents = [ |
| "A neural network is a computing system inspired by biological neural networks.", |
| "For pizza you need dough, tomato sauce, mozzarella cheese and toppings." |
| ] |
| |
| q_emb = embed_texts(model, tokenizer, queries, device=device) |
| d_emb = embed_texts(model, tokenizer, documents, device=device) |
|
|
| similarities = q_emb @ d_emb.T |
| print("Similarity matrix:") |
| print(similarities) |
| ``` |
| |
| --- |
| |
| **Requirements:** |
| |
| * Python ≥ 3.9 |
| * transformers ≥ 4.30.0 |
| * torch ≥ 2.0.0 |
| * huggingface_hub ≥ 0.20.0 |
| * numpy |
| |
| --- |
| |
| # Model details |
| |
| This model was **fully created by me** (Construct AI). I designed the architecture, trained a custom WordPiece tokenizer, pre‑trained the model with MLM, and fine‑tuned it on the *MS MARCO* passage ranking dataset for semantic search. No parts of this model have been taken from other pre‑trained checkpoints – it is built from scratch. |
| |
| --- |
| |
| # License |
| |
| This model is released under the **Apache 2.0** License. |
| |
| --- |
| |
| **I apologize if this model does not show the best quality or if you are unhappy with its maximum sequence length.** |
| |
| **This is my first custom model, I tried not to do everything at once.** |