Trois ajouts pour rendre le pipeline utilisable sur CPU quand la VRAM est saturée par d'autres process : 1. Variable QWEN_DEVICE=cpu pour forcer le device CPU. Le défaut "auto" choisit CUDA si dispo, fallback CPU sinon. 2. Sur CPU, détection automatique du support AVX-512 BF16 via /proc/cpuinfo (Zen 4/5, Intel Sapphire Rapids+). Si présent, bfloat16 au lieu de float32 — divise par 2 la RAM et ~2x plus rapide sur matmul. 3. Appel explicite de torch.set_num_threads(N) et set_num_interop_threads(N) (OMP_NUM_THREADS seul ne suffit pas). Configurable via TORCH_NUM_THREADS, défaut = os.cpu_count(). Mesure sur Ryzen 9 9950X (Zen 5, 16c/32t, AVX-512 BF16 natif) : - AVANT : 645% CPU (~6.5 cores), 15 Go RAM (float32) - APRÈS : 2433% CPU (~24 cores), 8 Go RAM (bfloat16) Appel `torch.cuda.empty_cache()` en fin d'inférence pour réduire la fragmentation VRAM quand d'autres process GPU tournent en parallèle. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.0 KiB
5.0 KiB