# Оптимізація швидкодії LightOnOCR-1B на M3 Max ## Поточна ситуація - **PyTorch на MPS**: ~4 хвилини на сторінку (дуже повільно) - **Причина**: MPS backend значно повільніший за CUDA для трансформерів ## Швидкі оптимізації (PyTorch) ### 1. Зменшення max_tokens ```python # У backends/pytorch_backend.py, рядок ~95 generated_ids = self.model.generate( **inputs, max_new_tokens=1024, # Було 2048, зменшити до 512-1024 temperature=temperature, do_sample=temperature > 0, pad_token_id=self.processor.tokenizer.eos_token_id ) ``` ### 2. Використання нижчої роздільної здатності ```bash # Замість scale=1.5, використовуйте scale=1.0 python ocr_cli.py document.pdf --scale 1.0 ``` ## Рекомендоване рішення: GGUF + llama.cpp ### Чому GGUF швидший? - Оптимізований для Apple Silicon (Metal) - Квантизація (Q8_0) зменшує розмір і прискорює - Спеціалізований inference engine ### Встановлення ```bash # 1. Встановити llama-cpp-python з Metal support CMAKE_ARGS="-DLLAMA_METAL=on" pip install llama-cpp-python # 2. Завантажити GGUF модель git lfs install git clone https://huggingface.co/ggml-org/LightOnOCR-1B-1025-GGUF # Або git clone https://huggingface.co/Mungert/LightOnOCR-1B-1025-GGUF ``` ### Використання ```bash # Після завантаження моделі python ocr_cli.py document.pdf --backend gguf --model-path path/to/model.gguf ``` ## Очікувані результати - **PyTorch оптимізований**: ~2-3 хвилини на сторінку - **GGUF Q8_0**: ~30-60 секунд на сторінку (орієнтовно) ## Примітка GGUF backend у поточній версії є заглушкою. Для повної підтримки потрібно: 1. Завантажити GGUF модель 2. Реалізувати vision model support у `backends/gguf_backend.py`