#!/usr/bin/env python3 """ Quick setup script to optimize your existing ML microservice. Run this to set up caching and pre-download the model. """ import os import sys import logging from pathlib import Path # Configure logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def setup_cache_directory(): """Create cache directory for models""" cache_dir = Path("./model_cache") cache_dir.mkdir(exist_ok=True) logger.info(f"โœ… Cache directory created: {cache_dir.absolute()}") return cache_dir def set_environment_variables(): """Set environment variables for optimization""" env_vars = { "TRANSFORMERS_CACHE": "./model_cache", "HF_HOME": "./model_cache", "TORCH_HOME": "./model_cache", "TOKENIZERS_PARALLELISM": "false", "OMP_NUM_THREADS": "4" } for key, value in env_vars.items(): os.environ[key] = value logger.info(f"Set {key}={value}") def pre_download_model(): """Pre-download the model to cache""" try: from transformers import AutoTokenizer, AutoModelForCausalLM model_id = "deepseek-ai/deepseek-coder-1.3b-instruct" cache_dir = "./model_cache" logger.info(f"๐Ÿ”ง Pre-downloading model: {model_id}") logger.info("This may take a few minutes on first run...") # Download tokenizer logger.info("๐Ÿ“ Downloading tokenizer...") tokenizer = AutoTokenizer.from_pretrained( model_id, cache_dir=cache_dir, trust_remote_code=True ) # Download model logger.info("๐Ÿง  Downloading model...") model = AutoModelForCausalLM.from_pretrained( model_id, cache_dir=cache_dir, trust_remote_code=True, torch_dtype="auto", # Let it choose the best dtype low_cpu_mem_usage=True, ) logger.info("โœ… Model downloaded and cached successfully!") logger.info(f"๐Ÿ“ Model cached in: {Path(cache_dir).absolute()}") # Test that everything works logger.info("๐Ÿงช Testing model loading...") del model, tokenizer # Free memory return True except Exception as e: logger.error(f"โŒ Failed to pre-download model: {e}") return False def main(): """Main setup function""" logger.info("๐Ÿš€ Setting up ML Microservice Optimizations") logger.info("=" * 50) # Step 1: Setup cache directory setup_cache_directory() # Step 2: Set environment variables set_environment_variables() # Step 3: Pre-download model success = pre_download_model() if success: logger.info("\nโœ… Setup completed successfully!") logger.info("๐Ÿ“‹ Next steps:") logger.info("1. Replace your main.py with the optimized version") logger.info("2. Replace your model.py with the optimized version") logger.info("3. Run: python main.py") logger.info("\n๐Ÿš€ Your server will now start much faster!") else: logger.error("\nโŒ Setup failed!") logger.error("Please check your internet connection and try again.") sys.exit(1) if __name__ == "__main__": main()