#!/usr/bin/env python3 """ Stack 2.9 - Pure PyTorch Loading (No safetensors dependency) """ import sys import torch from pathlib import Path sys.path.insert(0, str(Path(__file__).parent / "src")) from enhancements.nlp import IntentDetector, EntityRecognizer from enhancements.knowledge_graph import RAGEngine from enhancements.emotional_intelligence import SentimentAnalyzer from enhancements.collaboration import ConversationStateManager from enhancements.learning import FeedbackCollector, PerformanceMonitor class Stack2_9Local: """Stack 2.9 - Pure local loading""" def __init__(self, model_path: str = "/Users/walidsobhi/stack-2-9-final-model"): self.model_path = Path(model_path) self._model = None self._tokenizer = None print("Loading modules...") self.intent_detector = IntentDetector() self.entity_recognizer = EntityRecognizer() self.rag_engine = RAGEngine() self.sentiment_analyzer = SentimentAnalyzer() self.conversation_manager = ConversationStateManager() self.performance_monitor = PerformanceMonitor() print("✓ Done!\n") def load_model(self): """Load model using pure torch - completely local""" if self._model is not None: return print(f"Loading model from {self.model_path}...") import json # Load config with open(self.model_path / "config.json") as f: config = json.load(f) # Load tokenizer directly with open(self.model_path / "tokenizer.json") as f: tok_json = json.load(f) from transformers import PreTrainedTokenizerFast self._tokenizer = PreTrainedTokenizerFast(tokenizer_file=str(self.model_path / "tokenizer.json")) with open(self.model_path / "tokenizer_config.json") as f: tok_config = json.load(f) self._tokenizer.pad_token = tok_config.get("pad_token", "<|endoftext|>") self._tokenizer.eos_token = tok_config.get("eos_token", "<|endoftext|>") # Load weights using PURE TORCH (no safetensors, no HF cache) print("Loading model.safetensors with torch.load...") # Use torch.load with mmap for memory efficiency with open(self.model_path / "model.safetensors", "rb") as f: # Read the safetensors file directly import struct # Parse safetensors header # Format: [8 bytes magic + 8 bytes header_size + header + weights] header_size_bytes = f.read(16) _, header_size = struct.unpack("