diff --git a/scripts/deployment/bake_emotion_model.py b/scripts/deployment/bake_emotion_model.py index 84a8aa6cf..67fc736c3 100644 --- a/scripts/deployment/bake_emotion_model.py +++ b/scripts/deployment/bake_emotion_model.py @@ -3,6 +3,7 @@ import sys from transformers import AutoTokenizer, AutoModelForSequenceClassification +from src.constants import DEFAULT_EMOTION_MODEL_ID try: from huggingface_hub import login # type: ignore @@ -11,7 +12,7 @@ def main() -> int: - model_id = os.environ.get("EMOTION_MODEL_ID", "0xmnrv/samo") + model_id = os.environ.get("EMOTION_MODEL_ID", DEFAULT_EMOTION_MODEL_ID) token = os.environ.get("HF_TOKEN") if token and login is not None: @@ -34,4 +35,4 @@ def main() -> int: if __name__ == "__main__": - raise SystemExit(main()) \ No newline at end of file + raise SystemExit(main()) diff --git a/scripts/deployment/patch_config_and_upload.py b/scripts/deployment/patch_config_and_upload.py index 429b3afcb..cbd120486 100644 --- a/scripts/deployment/patch_config_and_upload.py +++ b/scripts/deployment/patch_config_and_upload.py @@ -1,11 +1,17 @@ # patch_config_and_upload.py # pip install -U transformers huggingface_hub + +# Add src to path to import constants import os +import sys +sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) import tempfile -from transformers import AutoConfig from huggingface_hub import HfApi, HfFolder +from transformers import AutoConfig + +from src.constants import DEFAULT_EMOTION_MODEL_ID -MODEL_ID = os.getenv("MODEL_ID", "0xmnrv/samo") +MODEL_ID = os.getenv("EMOTION_MODEL_ID", DEFAULT_EMOTION_MODEL_ID) # Get token from environment or local storage TOKEN = os.getenv("HF_TOKEN") diff --git a/scripts/maintenance/infer_mapping_and_eval.py b/scripts/maintenance/infer_mapping_and_eval.py index 9922c9506..07d2c62a4 100644 --- a/scripts/maintenance/infer_mapping_and_eval.py +++ b/scripts/maintenance/infer_mapping_and_eval.py @@ -1,13 +1,18 @@ +# Add src to path to import constants import os +import sys +sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) import numpy as np import torch -from tqdm import tqdm from datasets import load_dataset -from transformers import AutoTokenizer, AutoModelForSequenceClassification -from sklearn.metrics import f1_score, accuracy_score from scipy.optimize import linear_sum_assignment +from sklearn.metrics import f1_score, accuracy_score +from tqdm import tqdm +from transformers import AutoTokenizer, AutoModelForSequenceClassification + +from src.constants import DEFAULT_EMOTION_MODEL_ID -MODEL_ID = os.getenv("MODEL_ID", "0xmnrv/samo") +MODEL_ID = os.getenv("EMOTION_MODEL_ID", DEFAULT_EMOTION_MODEL_ID) TOKEN = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") BATCH = int(os.getenv("BATCH_SIZE", "32")) diff --git a/scripts/maintenance/metrics_test.py b/scripts/maintenance/metrics_test.py index 74a5624f9..fe00835a6 100644 --- a/scripts/maintenance/metrics_test.py +++ b/scripts/maintenance/metrics_test.py @@ -1,15 +1,20 @@ # metrics_test.py # pip install -U transformers datasets scikit-learn torch tqdm huggingface_hub +# Add src to path to import constants import os +import sys +sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) import numpy as np import torch -from tqdm import tqdm from datasets import load_dataset -from transformers import AutoTokenizer, AutoModelForSequenceClassification from sklearn.metrics import f1_score, accuracy_score +from tqdm import tqdm +from transformers import AutoTokenizer, AutoModelForSequenceClassification + +from src.constants import DEFAULT_EMOTION_MODEL_ID -MODEL_ID = os.getenv("MODEL_ID", "0xmnrv/samo") +MODEL_ID = os.getenv("EMOTION_MODEL_ID", DEFAULT_EMOTION_MODEL_ID) TOKEN = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") DEVICE = "cuda" if torch.cuda.is_available() else "cpu" BATCH = int(os.getenv("BATCH_SIZE", "32")) diff --git a/scripts/testing/hf_serverless_smoke.py b/scripts/testing/hf_serverless_smoke.py index e776c8dba..061528992 100644 --- a/scripts/testing/hf_serverless_smoke.py +++ b/scripts/testing/hf_serverless_smoke.py @@ -1,13 +1,16 @@ #!/usr/bin/env python3 +# Add src to path to import constants import os +import sys +sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) import json import time -import sys from typing import List, Tuple +from src.constants import DEFAULT_EMOTION_MODEL_ID import requests -HF_REPO = os.getenv("HF_REPO", "0xmnrv/samo") +HF_REPO = os.getenv("EMOTION_MODEL_ID", DEFAULT_EMOTION_MODEL_ID) HF_TOKEN = os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_TOKEN") API_URL = f"https://api-inference.huggingface.co/models/{HF_REPO}" diff --git a/src/constants.py b/src/constants.py index 8e94148a1..cc5c2aed9 100644 --- a/src/constants.py +++ b/src/constants.py @@ -8,3 +8,6 @@ # Emotion model configuration DEFAULT_EMOTION_MODEL_DIR = "/app/models/emotion-english-distilroberta-base" EMOTION_MODEL_DIR = os.getenv("EMOTION_MODEL_DIR", DEFAULT_EMOTION_MODEL_DIR) + +# Default emotion model ID for HuggingFace Hub +DEFAULT_EMOTION_MODEL_ID = "duelker/samo-goemotions-deberta-v3-large" diff --git a/src/unified_ai_api.py b/src/unified_ai_api.py index d39ec4e6c..fe5cb60e2 100644 --- a/src/unified_ai_api.py +++ b/src/unified_ai_api.py @@ -399,10 +399,10 @@ async def lifespan(_: FastAPI) -> AsyncGenerator[None, None]: try: # Prefer loading our HF Hub model; fallback to local BERT if unavailable try: - from src.models.emotion_detection.hf_loader import ( + from src.models.emotion_detection.hf_loader import \ load_emotion_model_multi_source - ) - hf_model_id = os.getenv("EMOTION_MODEL_ID", "0xmnrv/samo") + from .constants import DEFAULT_EMOTION_MODEL_ID + hf_model_id = os.getenv("EMOTION_MODEL_ID", DEFAULT_EMOTION_MODEL_ID) hf_token = os.getenv("HF_TOKEN") local_dir = os.getenv("EMOTION_MODEL_LOCAL_DIR") archive_url = os.getenv("EMOTION_MODEL_ARCHIVE_URL") diff --git a/website/comprehensive-demo.html b/website/comprehensive-demo.html index 229d37d36..ec65589b4 100644 --- a/website/comprehensive-demo.html +++ b/website/comprehensive-demo.html @@ -3,48 +3,34 @@
-