LightOnOCR-1B-Demo / docs /performance_optimization.md
DocUA's picture
feat: update ggml kernels, webui components, model templates, and build configurations
eb133b8
# Оптимізація швидкодії 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`