Release complete SpliNet Embedder
Browse files- .gitattributes +1 -0
- MANIFEST.json +62 -0
- README.md +75 -0
- api.py +106 -0
- evaluation/FINAL_EVALUATION_SUMMARY.json +28 -0
- evaluation/STSBenchmark.json +5 -0
- evaluation/SciFact.json +9 -0
- evaluation/TwentyNewsgroupsClustering.json +99 -0
- evaluation/inference_vram_autotune.json +127 -0
- model_info.json +48 -0
- requirements.txt +7 -0
- spiece.model +3 -0
- splinet_embedder.ts +3 -0
- splinet_embedder_full_qqp.pt +3 -0
- training/TRAINING_COMPLETE.json +9 -0
- training/embedder_config.json +9 -0
- training/vram_autotune.json +95 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
splinet_embedder.ts filter=lfs diff=lfs merge=lfs -text
|
MANIFEST.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"README.md": {
|
| 3 |
+
"size_bytes": 1886,
|
| 4 |
+
"sha256": "467819dc02f633b6f433c85c72c185731ede2d646b2d016fb1e401b1df803643"
|
| 5 |
+
},
|
| 6 |
+
"api.py": {
|
| 7 |
+
"size_bytes": 3460,
|
| 8 |
+
"sha256": "c91422223e045a612ff8b84321430dbd5ee956545df71479ba96822044fd50c2"
|
| 9 |
+
},
|
| 10 |
+
"evaluation/FINAL_EVALUATION_SUMMARY.json": {
|
| 11 |
+
"size_bytes": 756,
|
| 12 |
+
"sha256": "4d3547d01b74bf724d7983f3beaa207fbee977cb41d373d33ae07133cf4fe74d"
|
| 13 |
+
},
|
| 14 |
+
"evaluation/STSBenchmark.json": {
|
| 15 |
+
"size_bytes": 85,
|
| 16 |
+
"sha256": "eee9ba254e1f81a6c0ecce23663eb9d675c91976e1557fa7a8006367b33751e1"
|
| 17 |
+
},
|
| 18 |
+
"evaluation/SciFact.json": {
|
| 19 |
+
"size_bytes": 220,
|
| 20 |
+
"sha256": "ba66fde9c4a72ebfd50d5306bb334708c788f562f11790027e9e2e65cb6be2be"
|
| 21 |
+
},
|
| 22 |
+
"evaluation/TwentyNewsgroupsClustering.json": {
|
| 23 |
+
"size_bytes": 2581,
|
| 24 |
+
"sha256": "bd71ae025dbf831dcb03ea42429d527822968e134735187c9910f9ab80e2c91f"
|
| 25 |
+
},
|
| 26 |
+
"evaluation/inference_vram_autotune.json": {
|
| 27 |
+
"size_bytes": 3081,
|
| 28 |
+
"sha256": "bb6dd07068b2fff8370c406140802d091328577d845baf7adac2e995e1f67dd6"
|
| 29 |
+
},
|
| 30 |
+
"model_info.json": {
|
| 31 |
+
"size_bytes": 1336,
|
| 32 |
+
"sha256": "9a7d6ec81e4c52246801790973abd4b626c8df1787e65019551768002edaf73f"
|
| 33 |
+
},
|
| 34 |
+
"requirements.txt": {
|
| 35 |
+
"size_bytes": 115,
|
| 36 |
+
"sha256": "bdaa62a067a12591d656fc74e410ee9552f53c8cf9b4941a0b92200e3dc83bd2"
|
| 37 |
+
},
|
| 38 |
+
"spiece.model": {
|
| 39 |
+
"size_bytes": 806898,
|
| 40 |
+
"sha256": "119ec6b2af9cbbc56f297bd606b69f79f6e3130a34ee56122ee813a58d15bb9d"
|
| 41 |
+
},
|
| 42 |
+
"splinet_embedder.ts": {
|
| 43 |
+
"size_bytes": 329392397,
|
| 44 |
+
"sha256": "7800d07a6bf69a0fa06ae72cfc553aea4ef263634ec5eb462008927110ea7aea"
|
| 45 |
+
},
|
| 46 |
+
"splinet_embedder_full_qqp.pt": {
|
| 47 |
+
"size_bytes": 329128162,
|
| 48 |
+
"sha256": "ae6a2f15ac997d3ca165de09fee89789c181dc2f62ccc6ef2820c6db5f475b05"
|
| 49 |
+
},
|
| 50 |
+
"training/TRAINING_COMPLETE.json": {
|
| 51 |
+
"size_bytes": 381,
|
| 52 |
+
"sha256": "6186b759a19b1ad12082e6c61b19884728eb2e5909366ff4a76761b39287cf9f"
|
| 53 |
+
},
|
| 54 |
+
"training/embedder_config.json": {
|
| 55 |
+
"size_bytes": 218,
|
| 56 |
+
"sha256": "3eaa07d108097256de4e5f929c32d4b4444479a2ddeb55dbc907ca021049264c"
|
| 57 |
+
},
|
| 58 |
+
"training/vram_autotune.json": {
|
| 59 |
+
"size_bytes": 2696,
|
| 60 |
+
"sha256": "1df1f89009031834701cfbd8ed7ef9735f68cbc589456a357db9073245af18d6"
|
| 61 |
+
}
|
| 62 |
+
}
|
README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: agpl-3.0
|
| 3 |
+
pipeline_tag: feature-extraction
|
| 4 |
+
language:
|
| 5 |
+
- en
|
| 6 |
+
tags:
|
| 7 |
+
- sentence-embeddings
|
| 8 |
+
- sentence-similarity
|
| 9 |
+
- splinet
|
| 10 |
+
- torchscript
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# SpliNet Embedder
|
| 14 |
+
|
| 15 |
+
Sentence-embedding version of SpliNet.
|
| 16 |
+
|
| 17 |
+
The complete encoder was fine-tuned end-to-end on **134,378 positive QQP duplicate pairs** using symmetric contrastive learning.
|
| 18 |
+
|
| 19 |
+
## Model
|
| 20 |
+
|
| 21 |
+
| Property | Value |
|
| 22 |
+
|---|---:|
|
| 23 |
+
| Encoder parameters | **82,270,464** |
|
| 24 |
+
| Embedding dimension | **768** |
|
| 25 |
+
| Maximum input length | **512 tokens** |
|
| 26 |
+
| Pooling | Masked mean |
|
| 27 |
+
| Output | L2-normalized |
|
| 28 |
+
| Fine-tuning pairs | **134,378** |
|
| 29 |
+
| Epochs | **1** |
|
| 30 |
+
| Optimization steps | **8,958** |
|
| 31 |
+
|
| 32 |
+
## Full evaluation
|
| 33 |
+
|
| 34 |
+
| Benchmark | Metric | Score |
|
| 35 |
+
|---|---|---:|
|
| 36 |
+
| STSBenchmark | Pearson | **0.5257** |
|
| 37 |
+
| STSBenchmark | Spearman | **0.5174** |
|
| 38 |
+
| SciFact | nDCG@10 | **0.1928** |
|
| 39 |
+
| SciFact | MAP@10 | **0.1686** |
|
| 40 |
+
| SciFact | MRR@10 | **0.1766** |
|
| 41 |
+
| SciFact | Recall@10 | **0.2614** |
|
| 42 |
+
| SciFact | Recall@100 | **0.4413** |
|
| 43 |
+
| Twenty Newsgroups | Mean V-measure | **0.1532** |
|
| 44 |
+
| Twenty Newsgroups | Mean homogeneity | **0.1510** |
|
| 45 |
+
| Twenty Newsgroups | Mean completeness | **0.1555** |
|
| 46 |
+
|
| 47 |
+
Twenty Newsgroups evaluation used **59,545 texts** across all ten subsets.
|
| 48 |
+
|
| 49 |
+
## Files
|
| 50 |
+
|
| 51 |
+
- `splinet_embedder.ts` — complete deployable TorchScript encoder
|
| 52 |
+
- `splinet_embedder_full_qqp.pt` — original trained checkpoint
|
| 53 |
+
- `spiece.model` — tokenizer
|
| 54 |
+
- `api.py` — Python/FastAPI interface
|
| 55 |
+
- `model_info.json` — metadata
|
| 56 |
+
- `evaluation/` — benchmark results
|
| 57 |
+
- `training/` — final training metadata
|
| 58 |
+
|
| 59 |
+
## Usage
|
| 60 |
+
|
| 61 |
+
Install `requirements.txt`, then:
|
| 62 |
+
|
| 63 |
+
from api import encode, similarity
|
| 64 |
+
z = encode(['first sentence', 'second sentence'])
|
| 65 |
+
print(z.shape)
|
| 66 |
+
|
| 67 |
+
To serve:
|
| 68 |
+
|
| 69 |
+
python api.py
|
| 70 |
+
|
| 71 |
+
Endpoints: `/health`, `/model-info`, `/embed`, `/similarity`.
|
| 72 |
+
|
| 73 |
+
Base model: https://huggingface.co/Angshul/SpliNet
|
| 74 |
+
|
| 75 |
+
Source: https://github.com/AngshulMajumdar/SpliNet
|
api.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
import os
|
| 3 |
+
import json
|
| 4 |
+
import unicodedata
|
| 5 |
+
import numpy as np
|
| 6 |
+
import sentencepiece as spm
|
| 7 |
+
import torch
|
| 8 |
+
from fastapi import FastAPI, HTTPException
|
| 9 |
+
from pydantic import BaseModel
|
| 10 |
+
|
| 11 |
+
ROOT = Path(__file__).resolve().parent
|
| 12 |
+
DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 13 |
+
MODEL = torch.jit.load(str(ROOT / "splinet_embedder.ts"), map_location=DEVICE).eval()
|
| 14 |
+
SP = spm.SentencePieceProcessor(model_file=str(ROOT / "spiece.model"))
|
| 15 |
+
|
| 16 |
+
PAD_ID = 3
|
| 17 |
+
CLS_ID = 4
|
| 18 |
+
SEP_ID = 5
|
| 19 |
+
MAX_LENGTH = 512
|
| 20 |
+
DEFAULT_BATCH = int(os.environ.get("SPLINET_BATCH_SIZE", "256" if DEVICE.type == "cuda" else "8"))
|
| 21 |
+
|
| 22 |
+
def normalize_text(text):
|
| 23 |
+
text = unicodedata.normalize("NFKC", text or "").lower()
|
| 24 |
+
return " ".join(text.split())
|
| 25 |
+
|
| 26 |
+
def tokenize(texts):
|
| 27 |
+
ids = torch.full((len(texts), MAX_LENGTH), PAD_ID, dtype=torch.long)
|
| 28 |
+
mask = torch.zeros((len(texts), MAX_LENGTH), dtype=torch.long)
|
| 29 |
+
for i, text in enumerate(texts):
|
| 30 |
+
pieces = list(SP.encode(normalize_text(text), out_type=int))[:MAX_LENGTH - 2]
|
| 31 |
+
seq = [CLS_ID] + pieces + [SEP_ID]
|
| 32 |
+
n = len(seq)
|
| 33 |
+
ids[i, :n] = torch.tensor(seq, dtype=torch.long)
|
| 34 |
+
mask[i, :n] = 1
|
| 35 |
+
return ids, mask
|
| 36 |
+
|
| 37 |
+
def encode(texts, batch_size=None):
|
| 38 |
+
if isinstance(texts, str):
|
| 39 |
+
texts = [texts]
|
| 40 |
+
if not texts:
|
| 41 |
+
return np.empty((0, 768), dtype=np.float32)
|
| 42 |
+
bs = max(1, int(batch_size or DEFAULT_BATCH))
|
| 43 |
+
output = []
|
| 44 |
+
start = 0
|
| 45 |
+
while start < len(texts):
|
| 46 |
+
current = min(bs, len(texts) - start)
|
| 47 |
+
try:
|
| 48 |
+
ids, mask = tokenize(texts[start:start + current])
|
| 49 |
+
ids = ids.to(DEVICE)
|
| 50 |
+
mask = mask.to(DEVICE)
|
| 51 |
+
with torch.inference_mode():
|
| 52 |
+
if DEVICE.type == "cuda":
|
| 53 |
+
with torch.autocast(device_type="cuda", dtype=torch.float16):
|
| 54 |
+
z = MODEL(ids, mask)
|
| 55 |
+
else:
|
| 56 |
+
z = MODEL(ids, mask)
|
| 57 |
+
output.append(z.float().cpu().numpy())
|
| 58 |
+
start += current
|
| 59 |
+
except torch.OutOfMemoryError:
|
| 60 |
+
if DEVICE.type != "cuda" or current == 1:
|
| 61 |
+
raise
|
| 62 |
+
torch.cuda.empty_cache()
|
| 63 |
+
bs = max(1, current // 2)
|
| 64 |
+
return np.concatenate(output, axis=0).astype(np.float32)
|
| 65 |
+
|
| 66 |
+
def similarity(text_a, text_b):
|
| 67 |
+
z = encode([text_a, text_b])
|
| 68 |
+
return float(np.dot(z[0], z[1]))
|
| 69 |
+
|
| 70 |
+
class EmbedRequest(BaseModel):
|
| 71 |
+
texts: list[str]
|
| 72 |
+
batch_size: int | None = None
|
| 73 |
+
|
| 74 |
+
class SimilarityRequest(BaseModel):
|
| 75 |
+
text_a: str
|
| 76 |
+
text_b: str
|
| 77 |
+
|
| 78 |
+
app = FastAPI(title="SpliNet Embedder API", version="1.0.0")
|
| 79 |
+
|
| 80 |
+
@app.get("/health")
|
| 81 |
+
def health():
|
| 82 |
+
return {"status": "ok", "device": str(DEVICE)}
|
| 83 |
+
|
| 84 |
+
@app.get("/model-info")
|
| 85 |
+
def model_info():
|
| 86 |
+
with open(ROOT / "model_info.json", "r", encoding="utf-8") as f:
|
| 87 |
+
return json.load(f)
|
| 88 |
+
|
| 89 |
+
@app.post("/embed")
|
| 90 |
+
def embed_endpoint(req: EmbedRequest):
|
| 91 |
+
try:
|
| 92 |
+
z = encode(req.texts, req.batch_size)
|
| 93 |
+
return {"count": len(req.texts), "dimension": 768, "embeddings": z.tolist()}
|
| 94 |
+
except Exception as e:
|
| 95 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 96 |
+
|
| 97 |
+
@app.post("/similarity")
|
| 98 |
+
def similarity_endpoint(req: SimilarityRequest):
|
| 99 |
+
try:
|
| 100 |
+
return {"cosine_similarity": similarity(req.text_a, req.text_b)}
|
| 101 |
+
except Exception as e:
|
| 102 |
+
raise HTTPException(status_code=500, detail=str(e))
|
| 103 |
+
|
| 104 |
+
if __name__ == "__main__":
|
| 105 |
+
import uvicorn
|
| 106 |
+
uvicorn.run(app, host="0.0.0.0", port=int(os.environ.get("PORT", "8000")))
|
evaluation/FINAL_EVALUATION_SUMMARY.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model": "SpliNet Sentence Embedder",
|
| 3 |
+
"base_model": "Angshul/SpliNet",
|
| 4 |
+
"embedding_dimension": 768,
|
| 5 |
+
"sequence_length": 512,
|
| 6 |
+
"inference_batch": 527,
|
| 7 |
+
"measured_peak_reserved_gb": 14.041015625,
|
| 8 |
+
"STSBenchmark": {
|
| 9 |
+
"pairs": 1379,
|
| 10 |
+
"pearson": 0.525678022791122,
|
| 11 |
+
"spearman": 0.5173543800911169
|
| 12 |
+
},
|
| 13 |
+
"SciFact": {
|
| 14 |
+
"nDCG@10": 0.19278095226166866,
|
| 15 |
+
"MAP@10": 0.16858928571428572,
|
| 16 |
+
"MRR@10": 0.17657539682539683,
|
| 17 |
+
"Recall@10": 0.2613888888888889,
|
| 18 |
+
"Recall@100": 0.44133333333333336,
|
| 19 |
+
"corpus_documents": 5183,
|
| 20 |
+
"queries": 300
|
| 21 |
+
},
|
| 22 |
+
"TwentyNewsgroups": {
|
| 23 |
+
"total_texts": 59545,
|
| 24 |
+
"mean_homogeneity": 0.15101690743103127,
|
| 25 |
+
"mean_completeness": 0.15554516291013415,
|
| 26 |
+
"mean_v_measure": 0.15324401136971566
|
| 27 |
+
}
|
| 28 |
+
}
|
evaluation/STSBenchmark.json
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"pairs": 1379,
|
| 3 |
+
"pearson": 0.525678022791122,
|
| 4 |
+
"spearman": 0.5173543800911169
|
| 5 |
+
}
|
evaluation/SciFact.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"nDCG@10": 0.19278095226166866,
|
| 3 |
+
"MAP@10": 0.16858928571428572,
|
| 4 |
+
"MRR@10": 0.17657539682539683,
|
| 5 |
+
"Recall@10": 0.2613888888888889,
|
| 6 |
+
"Recall@100": 0.44133333333333336,
|
| 7 |
+
"corpus_documents": 5183,
|
| 8 |
+
"queries": 300
|
| 9 |
+
}
|
evaluation/TwentyNewsgroupsClustering.json
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"num_subsets": 10,
|
| 3 |
+
"total_texts": 59545,
|
| 4 |
+
"mean_homogeneity": 0.15101690743103127,
|
| 5 |
+
"mean_completeness": 0.15554516291013415,
|
| 6 |
+
"mean_v_measure": 0.15324401136971566,
|
| 7 |
+
"subsets": [
|
| 8 |
+
{
|
| 9 |
+
"subset": 0,
|
| 10 |
+
"num_texts": 1000,
|
| 11 |
+
"num_classes": 20,
|
| 12 |
+
"homogeneity": 0.18848367785332787,
|
| 13 |
+
"completeness": 0.19373099116017206,
|
| 14 |
+
"v_measure": 0.19107131509256678,
|
| 15 |
+
"inertia": 770.6087646484375
|
| 16 |
+
},
|
| 17 |
+
{
|
| 18 |
+
"subset": 1,
|
| 19 |
+
"num_texts": 2101,
|
| 20 |
+
"num_classes": 20,
|
| 21 |
+
"homogeneity": 0.16526631539460462,
|
| 22 |
+
"completeness": 0.1681524678928551,
|
| 23 |
+
"v_measure": 0.16669690003158819,
|
| 24 |
+
"inertia": 1623.0032958984375
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"subset": 2,
|
| 28 |
+
"num_texts": 3202,
|
| 29 |
+
"num_classes": 20,
|
| 30 |
+
"homogeneity": 0.1594426468684236,
|
| 31 |
+
"completeness": 0.16370453150846842,
|
| 32 |
+
"v_measure": 0.1615454848726722,
|
| 33 |
+
"inertia": 2477.881591796875
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"subset": 3,
|
| 37 |
+
"num_texts": 4303,
|
| 38 |
+
"num_classes": 20,
|
| 39 |
+
"homogeneity": 0.14095093771777503,
|
| 40 |
+
"completeness": 0.1450873980629758,
|
| 41 |
+
"v_measure": 0.1429892587802194,
|
| 42 |
+
"inertia": 3356.320068359375
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"subset": 4,
|
| 46 |
+
"num_texts": 5404,
|
| 47 |
+
"num_classes": 20,
|
| 48 |
+
"homogeneity": 0.15037425141416783,
|
| 49 |
+
"completeness": 0.15393466315321286,
|
| 50 |
+
"v_measure": 0.15213362889000107,
|
| 51 |
+
"inertia": 4200.5
|
| 52 |
+
},
|
| 53 |
+
{
|
| 54 |
+
"subset": 5,
|
| 55 |
+
"num_texts": 6505,
|
| 56 |
+
"num_classes": 20,
|
| 57 |
+
"homogeneity": 0.13539065429544844,
|
| 58 |
+
"completeness": 0.1427104755759666,
|
| 59 |
+
"v_measure": 0.1389542334616076,
|
| 60 |
+
"inertia": 5078.7021484375
|
| 61 |
+
},
|
| 62 |
+
{
|
| 63 |
+
"subset": 6,
|
| 64 |
+
"num_texts": 7606,
|
| 65 |
+
"num_classes": 20,
|
| 66 |
+
"homogeneity": 0.13514684478067546,
|
| 67 |
+
"completeness": 0.1389571821370939,
|
| 68 |
+
"v_measure": 0.13702552958899597,
|
| 69 |
+
"inertia": 5929.64111328125
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
"subset": 7,
|
| 73 |
+
"num_texts": 8707,
|
| 74 |
+
"num_classes": 20,
|
| 75 |
+
"homogeneity": 0.15154795648155694,
|
| 76 |
+
"completeness": 0.15817573965897352,
|
| 77 |
+
"v_measure": 0.15479093404206168,
|
| 78 |
+
"inertia": 6761.9462890625
|
| 79 |
+
},
|
| 80 |
+
{
|
| 81 |
+
"subset": 8,
|
| 82 |
+
"num_texts": 9808,
|
| 83 |
+
"num_classes": 20,
|
| 84 |
+
"homogeneity": 0.14624533873516948,
|
| 85 |
+
"completeness": 0.1495133374423665,
|
| 86 |
+
"v_measure": 0.1478612831399018,
|
| 87 |
+
"inertia": 7655.23095703125
|
| 88 |
+
},
|
| 89 |
+
{
|
| 90 |
+
"subset": 9,
|
| 91 |
+
"num_texts": 10909,
|
| 92 |
+
"num_classes": 20,
|
| 93 |
+
"homogeneity": 0.13732045076916352,
|
| 94 |
+
"completeness": 0.1414848425092566,
|
| 95 |
+
"v_measure": 0.139371545797542,
|
| 96 |
+
"inertia": 8504.7734375
|
| 97 |
+
}
|
| 98 |
+
]
|
| 99 |
+
}
|
evaluation/inference_vram_autotune.json
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"gpu": "Tesla T4",
|
| 3 |
+
"total_vram_gb": 14.56317138671875,
|
| 4 |
+
"target_vram_gb": 13.5,
|
| 5 |
+
"hard_ceiling_fraction": 0.965,
|
| 6 |
+
"hard_ceiling_gb": 14.053460388183593,
|
| 7 |
+
"selected_inference_batch": 527,
|
| 8 |
+
"selected_peak_reserved_gb": 14.041015625,
|
| 9 |
+
"selected_peak_allocated_gb": 12.066949844360352,
|
| 10 |
+
"measurements": [
|
| 11 |
+
{
|
| 12 |
+
"batch_size": 64,
|
| 13 |
+
"success": true,
|
| 14 |
+
"peak_allocated_gb": 2.224550247192383,
|
| 15 |
+
"peak_reserved_gb": 2.7890625,
|
| 16 |
+
"above_target": false,
|
| 17 |
+
"below_ceiling": true
|
| 18 |
+
},
|
| 19 |
+
{
|
| 20 |
+
"batch_size": 128,
|
| 21 |
+
"success": true,
|
| 22 |
+
"peak_allocated_gb": 3.584657669067383,
|
| 23 |
+
"peak_reserved_gb": 4.666015625,
|
| 24 |
+
"above_target": false,
|
| 25 |
+
"below_ceiling": true
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"batch_size": 256,
|
| 29 |
+
"success": true,
|
| 30 |
+
"peak_allocated_gb": 6.304872512817383,
|
| 31 |
+
"peak_reserved_gb": 8.41796875,
|
| 32 |
+
"above_target": false,
|
| 33 |
+
"below_ceiling": true
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"batch_size": 512,
|
| 37 |
+
"success": true,
|
| 38 |
+
"peak_allocated_gb": 11.745302200317383,
|
| 39 |
+
"peak_reserved_gb": 13.666015625,
|
| 40 |
+
"above_target": true,
|
| 41 |
+
"below_ceiling": true
|
| 42 |
+
},
|
| 43 |
+
{
|
| 44 |
+
"batch_size": 520,
|
| 45 |
+
"success": true,
|
| 46 |
+
"peak_allocated_gb": 11.916261672973633,
|
| 47 |
+
"peak_reserved_gb": 13.86328125,
|
| 48 |
+
"above_target": true,
|
| 49 |
+
"below_ceiling": true
|
| 50 |
+
},
|
| 51 |
+
{
|
| 52 |
+
"batch_size": 524,
|
| 53 |
+
"success": true,
|
| 54 |
+
"peak_allocated_gb": 12.001253128051758,
|
| 55 |
+
"peak_reserved_gb": 13.962890625,
|
| 56 |
+
"above_target": true,
|
| 57 |
+
"below_ceiling": true
|
| 58 |
+
},
|
| 59 |
+
{
|
| 60 |
+
"batch_size": 526,
|
| 61 |
+
"success": true,
|
| 62 |
+
"peak_allocated_gb": 12.04667854309082,
|
| 63 |
+
"peak_reserved_gb": 14.013671875,
|
| 64 |
+
"above_target": true,
|
| 65 |
+
"below_ceiling": true
|
| 66 |
+
},
|
| 67 |
+
{
|
| 68 |
+
"batch_size": 527,
|
| 69 |
+
"success": true,
|
| 70 |
+
"peak_allocated_gb": 12.066949844360352,
|
| 71 |
+
"peak_reserved_gb": 14.041015625,
|
| 72 |
+
"above_target": true,
|
| 73 |
+
"below_ceiling": true
|
| 74 |
+
},
|
| 75 |
+
{
|
| 76 |
+
"batch_size": 527,
|
| 77 |
+
"success": true,
|
| 78 |
+
"peak_allocated_gb": 12.066949844360352,
|
| 79 |
+
"peak_reserved_gb": 14.041015625,
|
| 80 |
+
"above_target": true,
|
| 81 |
+
"below_ceiling": true
|
| 82 |
+
},
|
| 83 |
+
{
|
| 84 |
+
"batch_size": 528,
|
| 85 |
+
"success": true,
|
| 86 |
+
"peak_allocated_gb": 12.086244583129883,
|
| 87 |
+
"peak_reserved_gb": 14.0625,
|
| 88 |
+
"above_target": true,
|
| 89 |
+
"below_ceiling": false
|
| 90 |
+
},
|
| 91 |
+
{
|
| 92 |
+
"batch_size": 544,
|
| 93 |
+
"success": false,
|
| 94 |
+
"above_target": false,
|
| 95 |
+
"below_ceiling": false,
|
| 96 |
+
"error": "CUDA OOM"
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"batch_size": 576,
|
| 100 |
+
"success": false,
|
| 101 |
+
"above_target": false,
|
| 102 |
+
"below_ceiling": false,
|
| 103 |
+
"error": "CUDA OOM"
|
| 104 |
+
},
|
| 105 |
+
{
|
| 106 |
+
"batch_size": 640,
|
| 107 |
+
"success": false,
|
| 108 |
+
"above_target": false,
|
| 109 |
+
"below_ceiling": false,
|
| 110 |
+
"error": "CUDA OOM"
|
| 111 |
+
},
|
| 112 |
+
{
|
| 113 |
+
"batch_size": 768,
|
| 114 |
+
"success": false,
|
| 115 |
+
"above_target": false,
|
| 116 |
+
"below_ceiling": false,
|
| 117 |
+
"error": "CUDA OOM"
|
| 118 |
+
},
|
| 119 |
+
{
|
| 120 |
+
"batch_size": 1024,
|
| 121 |
+
"success": false,
|
| 122 |
+
"above_target": false,
|
| 123 |
+
"below_ceiling": false,
|
| 124 |
+
"error": "CUDA OOM"
|
| 125 |
+
}
|
| 126 |
+
]
|
| 127 |
+
}
|
model_info.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"name": "SpliNet Embedder",
|
| 3 |
+
"base_model": "Angshul/SpliNet",
|
| 4 |
+
"encoder_parameters": 82270464,
|
| 5 |
+
"embedding_dimension": 768,
|
| 6 |
+
"maximum_sequence_length": 512,
|
| 7 |
+
"pooling": "masked mean",
|
| 8 |
+
"output_normalization": "L2",
|
| 9 |
+
"fine_tuning": {
|
| 10 |
+
"dataset": "QQP positive duplicate pairs",
|
| 11 |
+
"pairs": 134378,
|
| 12 |
+
"epochs": 1,
|
| 13 |
+
"steps": 8958
|
| 14 |
+
},
|
| 15 |
+
"files": {
|
| 16 |
+
"deployment_model": "splinet_embedder.ts",
|
| 17 |
+
"original_checkpoint": "splinet_embedder_full_qqp.pt",
|
| 18 |
+
"tokenizer": "spiece.model"
|
| 19 |
+
},
|
| 20 |
+
"evaluation": {
|
| 21 |
+
"model": "SpliNet Sentence Embedder",
|
| 22 |
+
"base_model": "Angshul/SpliNet",
|
| 23 |
+
"embedding_dimension": 768,
|
| 24 |
+
"sequence_length": 512,
|
| 25 |
+
"inference_batch": 527,
|
| 26 |
+
"measured_peak_reserved_gb": 14.041015625,
|
| 27 |
+
"STSBenchmark": {
|
| 28 |
+
"pairs": 1379,
|
| 29 |
+
"pearson": 0.525678022791122,
|
| 30 |
+
"spearman": 0.5173543800911169
|
| 31 |
+
},
|
| 32 |
+
"SciFact": {
|
| 33 |
+
"nDCG@10": 0.19278095226166866,
|
| 34 |
+
"MAP@10": 0.16858928571428572,
|
| 35 |
+
"MRR@10": 0.17657539682539683,
|
| 36 |
+
"Recall@10": 0.2613888888888889,
|
| 37 |
+
"Recall@100": 0.44133333333333336,
|
| 38 |
+
"corpus_documents": 5183,
|
| 39 |
+
"queries": 300
|
| 40 |
+
},
|
| 41 |
+
"TwentyNewsgroups": {
|
| 42 |
+
"total_texts": 59545,
|
| 43 |
+
"mean_homogeneity": 0.15101690743103127,
|
| 44 |
+
"mean_completeness": 0.15554516291013415,
|
| 45 |
+
"mean_v_measure": 0.15324401136971566
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
}
|
requirements.txt
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
torch>=2.6
|
| 2 |
+
numpy>=1.26
|
| 3 |
+
sentencepiece>=0.2
|
| 4 |
+
fastapi>=0.115
|
| 5 |
+
uvicorn[standard]>=0.30
|
| 6 |
+
pydantic>=2
|
| 7 |
+
huggingface_hub>=0.34
|
spiece.model
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:119ec6b2af9cbbc56f297bd606b69f79f6e3130a34ee56122ee813a58d15bb9d
|
| 3 |
+
size 806898
|
splinet_embedder.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7800d07a6bf69a0fa06ae72cfc553aea4ef263634ec5eb462008927110ea7aea
|
| 3 |
+
size 329392397
|
splinet_embedder_full_qqp.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ae6a2f15ac997d3ca165de09fee89789c181dc2f62ccc6ef2820c6db5f475b05
|
| 3 |
+
size 329128162
|
training/TRAINING_COMPLETE.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"training_complete": true,
|
| 3 |
+
"global_step": 8958,
|
| 4 |
+
"epochs": 1,
|
| 5 |
+
"training_pairs": 134378,
|
| 6 |
+
"final_model": "/content/drive/MyDrive/SpliNet_Embedder/final_embedder_full_qqp/splinet_embedder_full_qqp.pt",
|
| 7 |
+
"log_file": "/content/drive/MyDrive/SpliNet_Embedder/training_full_qqp.jsonl",
|
| 8 |
+
"checkpoint_directory": "/content/drive/MyDrive/SpliNet_Embedder/checkpoints_full_qqp"
|
| 9 |
+
}
|
training/embedder_config.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"base_model": "Angshul/SpliNet",
|
| 3 |
+
"base_parameters": 82894592,
|
| 4 |
+
"embedding_dimension": 768,
|
| 5 |
+
"pooling": "masked_mean",
|
| 6 |
+
"normalization": "L2",
|
| 7 |
+
"required_sequence_length": 512,
|
| 8 |
+
"training_precision": "fp16"
|
| 9 |
+
}
|
training/vram_autotune.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"gpu": "Tesla T4",
|
| 3 |
+
"total_vram_gb": 14.56317138671875,
|
| 4 |
+
"safety_fraction": 0.92,
|
| 5 |
+
"safe_vram_ceiling_gb": 13.39811767578125,
|
| 6 |
+
"sequence_length": 512,
|
| 7 |
+
"precision": "fp16",
|
| 8 |
+
"optimizer": "AdamW",
|
| 9 |
+
"full_encoder_finetuning": true,
|
| 10 |
+
"temperature": 0.05,
|
| 11 |
+
"optimal_micro_batch_pairs": 15,
|
| 12 |
+
"sentences_per_micro_batch": 30,
|
| 13 |
+
"measurements": [
|
| 14 |
+
{
|
| 15 |
+
"pair_batch_size": 1,
|
| 16 |
+
"sentence_batch_size": 2,
|
| 17 |
+
"success": true,
|
| 18 |
+
"within_safety_margin": true,
|
| 19 |
+
"loss": 0.0,
|
| 20 |
+
"peak_allocated_gb": 1.8602900505065918,
|
| 21 |
+
"peak_reserved_gb": 2.072265625,
|
| 22 |
+
"vram_fraction": 0.14229494180710217
|
| 23 |
+
},
|
| 24 |
+
{
|
| 25 |
+
"pair_batch_size": 2,
|
| 26 |
+
"sentence_batch_size": 4,
|
| 27 |
+
"success": true,
|
| 28 |
+
"within_safety_margin": true,
|
| 29 |
+
"loss": 0.342132568359375,
|
| 30 |
+
"peak_allocated_gb": 2.849968910217285,
|
| 31 |
+
"peak_reserved_gb": 3.099609375,
|
| 32 |
+
"vram_fraction": 0.21283889976236678
|
| 33 |
+
},
|
| 34 |
+
{
|
| 35 |
+
"pair_batch_size": 4,
|
| 36 |
+
"sentence_batch_size": 8,
|
| 37 |
+
"success": true,
|
| 38 |
+
"within_safety_margin": true,
|
| 39 |
+
"loss": 0.7950439453125,
|
| 40 |
+
"peak_allocated_gb": 4.306286811828613,
|
| 41 |
+
"peak_reserved_gb": 4.677734375,
|
| 42 |
+
"vram_fraction": 0.32120300247691774
|
| 43 |
+
},
|
| 44 |
+
{
|
| 45 |
+
"pair_batch_size": 8,
|
| 46 |
+
"sentence_batch_size": 16,
|
| 47 |
+
"success": true,
|
| 48 |
+
"within_safety_margin": true,
|
| 49 |
+
"loss": 1.4732666015625,
|
| 50 |
+
"peak_allocated_gb": 7.2357072830200195,
|
| 51 |
+
"peak_reserved_gb": 7.658203125,
|
| 52 |
+
"vram_fraction": 0.5258609489402899
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"pair_batch_size": 12,
|
| 56 |
+
"sentence_batch_size": 24,
|
| 57 |
+
"success": true,
|
| 58 |
+
"within_safety_margin": true,
|
| 59 |
+
"loss": 1.0550334453582764,
|
| 60 |
+
"peak_allocated_gb": 10.169827461242676,
|
| 61 |
+
"peak_reserved_gb": 10.623046875,
|
| 62 |
+
"vram_fraction": 0.7294459834955973
|
| 63 |
+
},
|
| 64 |
+
{
|
| 65 |
+
"pair_batch_size": 14,
|
| 66 |
+
"sentence_batch_size": 28,
|
| 67 |
+
"success": true,
|
| 68 |
+
"within_safety_margin": true,
|
| 69 |
+
"loss": 0.9702497720718384,
|
| 70 |
+
"peak_allocated_gb": 11.684922218322754,
|
| 71 |
+
"peak_reserved_gb": 12.13671875,
|
| 72 |
+
"vram_fraction": 0.8333843245893807
|
| 73 |
+
},
|
| 74 |
+
{
|
| 75 |
+
"pair_batch_size": 15,
|
| 76 |
+
"sentence_batch_size": 30,
|
| 77 |
+
"success": true,
|
| 78 |
+
"within_safety_margin": true,
|
| 79 |
+
"loss": 0.7030029296875,
|
| 80 |
+
"peak_allocated_gb": 12.402628898620605,
|
| 81 |
+
"peak_reserved_gb": 12.9140625,
|
| 82 |
+
"vram_fraction": 0.8867616920156075
|
| 83 |
+
},
|
| 84 |
+
{
|
| 85 |
+
"pair_batch_size": 16,
|
| 86 |
+
"sentence_batch_size": 32,
|
| 87 |
+
"success": true,
|
| 88 |
+
"within_safety_margin": false,
|
| 89 |
+
"loss": 1.680816650390625,
|
| 90 |
+
"peak_allocated_gb": 13.109440803527832,
|
| 91 |
+
"peak_reserved_gb": 13.408203125,
|
| 92 |
+
"vram_fraction": 0.9206925311081587
|
| 93 |
+
}
|
| 94 |
+
]
|
| 95 |
+
}
|