LightOnOCR-1B-Demo / docs /performance_optimization.md
DocUA's picture
feat: update ggml kernels, webui components, model templates, and build configurations
eb133b8

A newer version of the Gradio SDK is available: 6.3.0

Upgrade

Оптимізація швидкодії LightOnOCR-1B на M3 Max

Поточна ситуація

  • PyTorch на MPS: ~4 хвилини на сторінку (дуже повільно)
  • Причина: MPS backend значно повільніший за CUDA для трансформерів

Швидкі оптимізації (PyTorch)

1. Зменшення max_tokens

# У 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. Використання нижчої роздільної здатності

# Замість 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

Встановлення

# 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

Використання

# Після завантаження моделі
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