CoolFace
Modelpublic

vectoriseai/e5-large-v2

sourceHugging Facemitupdated 3y agoView on Hugging Face
0likes73downloads
handler.py29 linesDownload Raw Back to root
1from typing import Dict, List, Any2from transformers import pipeline3 4import torch.nn.functional as F5from torch import Tensor6from transformers import AutoTokenizer, AutoModel7 8def average_pool(last_hidden_states: Tensor,9                 attention_mask: Tensor) -> Tensor:10    last_hidden = last_hidden_states.masked_fill(~attention_mask[..., None].bool(), 0.0)11    return last_hidden.sum(dim=1) / attention_mask.sum(dim=1)[..., None]12 13class EndpointHandler():14    def __init__(self, path=""):15        self.pipeline = pipeline("feature-extraction", model=path)16        self.tokenizer = AutoTokenizer.from_pretrained(path)17        self.model = AutoModel.from_pretrained(path)18 19    def __call__(self, data: Dict[str, Any]) -> List[List[int]]:20        inputs = data.pop("inputs",data)21 22        batch_dict = self.tokenizer(inputs, max_length=512, padding=True, truncation=True, return_tensors='pt')23 24        outputs = self.model(**batch_dict)25 26        embeddings = average_pool(outputs.last_hidden_state, batch_dict['attention_mask'])27        embeddings = F.normalize(embeddings, p=2, dim=1).tolist()28 29        return embeddings