Spaces:
Sleeping
Sleeping
# #!/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() | |
# setup.py | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
import os | |
MODEL_ID = "Salesforce/codet5p-220m" | |
def download_model(): | |
print(f"[SETUP] Downloading model: {MODEL_ID}") | |
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) | |
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_ID) | |
print("[SETUP] Model and tokenizer downloaded β ") | |
if __name__ == "__main__": | |
os.makedirs("model_cache", exist_ok=True) | |
download_model() | |