| import logging | |
| import os | |
| import sys | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger("ATOM_MODEL_DOWNLOADER") | |
| def download_models(): | |
| """ | |
| Pre-download AI models to local cache to avoid runtime delays. | |
| """ | |
| logger.info("Starting model download...") | |
| try: | |
| from sentence_transformers import SentenceTransformer | |
| model_name = "sentence-transformers/all-MiniLM-L6-v2" | |
| logger.info(f"Downloading/Loading model: {model_name}") | |
| # This triggers the download and caches it in ~/.cache/torch/sentence_transformers | |
| model = SentenceTransformer(model_name) | |
| # Test encoding to ensure it works | |
| embedding = model.encode("Test sentence for warm-up") | |
| logger.info(f"Model loaded successfully. Embedding dimension: {len(embedding)}") | |
| logger.info("✅ Model cached successfully.") | |
| except ImportError: | |
| logger.error("❌ sentence_transformers not installed. Skipping.") | |
| except Exception as e: | |
| logger.error(f"❌ Failed to download model: {e}") | |
| sys.exit(1) | |
| if __name__ == "__main__": | |
| download_models() | |