Spaces:
Sleeping
Sleeping
File size: 1,134 Bytes
d98e0ba 5b8ca02 a2428a8 dd1a0b9 b80b0ac a0d25c9 dd1a0b9 24b77c3 d98e0ba dd1a0b9 ad15583 d552e9c d98e0ba 5b8ca02 d552e9c 5b8ca02 a0d25c9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoTokenizer, AutoModel
import torch
import torch.nn.functional as F
import os
# 📁 Rediriger les caches HF vers un dossier autorisé
CACHE_DIR = "/data"
os.environ["HF_HOME"] = CACHE_DIR
os.environ["TRANSFORMERS_CACHE"] = CACHE_DIR
os.environ["HF_MODULES_CACHE"] = CACHE_DIR # ✅ <--- ajoute cette ligne
os.environ["HF_HUB_CACHE"] = CACHE_DIR
app = FastAPI()
# ✅ Modèle avec custom code
MODEL_NAME = "nomic-ai/nomic-embed-text-v1"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=CACHE_DIR, trust_remote_code=True)
model = AutoModel.from_pretrained(MODEL_NAME, cache_dir=CACHE_DIR, trust_remote_code=True)
class EmbedInput(BaseModel):
text: str
@app.post("/embed")
async def embed_text(payload: EmbedInput):
inputs = tokenizer(payload.text, return_tensors="pt", padding=True, truncation=True)
with torch.no_grad():
outputs = model(**inputs)
embeddings = outputs.last_hidden_state[:, 0]
normalized = F.normalize(embeddings, p=2, dim=1)
return {"embedding": normalized[0].tolist()}
|