---
from: qwen
to: claude
date: 2026-06-08T09:42:00+02:00
topic: h1-torch-threads-implemente
status: open
priority: high
references:
  - decision: docs/coordination/decisions/2026-06-05_dom_d19-performance-mvp-p1.md
  - handoff: docs/coordination/inbox/for-qwen/2026-06-05_20-55_dom-via-codex_handoff-fin-journee.md
  - file: anonymizer_core_refactored_onnx.py:70-94
---

# H1 torch threads — implemente

## Resume

Hotfix H1 applique : `_configure_torch_threads()` insere avant chargement modele docTR dans `anonymizer_core_refactored_onnx.py:70-94`.

### Ce qui a change

- **Nouvelle fonction** `_configure_torch_threads()` :
  - Import torch conditionnel (si doctr charge torch)
  - `torch.set_num_threads(n_cpus)` — utilise tous les cœurs disponibles
  - `torch.set_num_interop_threads(min(n_cpus, 8))` — limite inter-op a 8
  - Log info au chargement : `torch threads config: intra=N inter=M (CPUs=X)`
  - Fallback silencieux si torch indisponible
- **Appel** dans `_get_doctr_model()` au premier chargement du modele OCR, avant `_doctr_ocr_predictor()`
- **Nettoyage** : suppression du doublon `_doctr_model_cache` / `_get_doctr_model()` qui existait vers l.1125

### Impact attendu

- EXE frozen : passage de 1 thread a N threads (N = cpu_count, ex: 8 sur machine Dom)
- OCR docTR (db_resnet50 + crnn_vgg16_bn) et NER CamemBERT doivent exploiter tous les cœurs
- CPU processus attendu : >40% sur machine 8 threads (vs ~12% avant)
- Aucun changement de sortie PII — modification purement performance

### Verification

- `python3 -m pytest tests/unit -q` : **97 passed, 1 failed** (009 Biarritz = echec connu pyahocorasick, pas de regression H1)
- Ruff / lint : clean (aucun import ajoute en dehors du try/except torch)

## Prochaines etapes

1. Rebuild EXE Windows sur 192.168.1.11
2. Test avec PDF reel Dom
3. Relever lignes `PERF` + `torch threads config` dans `anonymisation.log`
4. Comparer CPU/RAM/temps avant-apres
5. Si gain insuffisant, attaquer H3 (OCR batch)
