traning / testdummy.py
aikobay's picture
Create testdummy.py
e5962f6 verified
import os
import multiprocessing
import logging
from fastapi import FastAPI
from pydantic import BaseModel
from huggingface_hub import login
from sentence_transformers import SentenceTransformer
# ──────────────── Logging μ„€μ • ────────────────
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# ──────────────── Hugging Face 둜그인 ────────────────
HF_API_TOKEN = os.getenv("HF_API_TOKEN")
if multiprocessing.current_process().name == "MainProcess":
if HF_API_TOKEN and HF_API_TOKEN.startswith("hf_"):
logger.info("πŸ”‘ Hugging Face API 둜그인 쀑 (MainProcess)...")
login(token=HF_API_TOKEN)
else:
logger.warning("⚠️ HF_API_TOKEN이 μ—†κ±°λ‚˜ 잘λͺ»λœ ν˜•μ‹μž…λ‹ˆλ‹€.")
# ──────────────── FastAPI μΈμŠ€ν„΄μŠ€ ────────────────
app = FastAPI(title="FastAPI Multi-worker Example")
# ──────────────── μž„λ² λ”© λͺ¨λΈ lazy-load ────────────────
embedding_model = None
def get_embedding_model():
global embedding_model
if embedding_model is None:
logger.info("πŸ“¦ μž„λ² λ”© λͺ¨λΈ λ‘œλ“œ 쀑...")
embedding_model = SentenceTransformer("jhgan/ko-sroberta-multitask")
logger.info("βœ… μž„λ² λ”© λͺ¨λΈ λ‘œλ“œ μ™„λ£Œ!")
return embedding_model
# ──────────────── Pydantic λͺ¨λΈ ────────────────
class Query(BaseModel):
text: str
# ──────────────── ν…ŒμŠ€νŠΈ μ—”λ“œν¬μΈνŠΈ ────────────────
@app.post("/encode")
def encode_text(query: Query):
model = get_embedding_model()
embedding = model.encode(query.text).tolist()
return {"embedding": embedding}