La version 23.04 du logiciel de montage vidéo opensource Kdenlive avait emmené l’évolution majeure des timelines multiples ou séquences (nested timelines en anglais) comme je l’avais rapporté dans ce post.
Je l’utilise maintenant sans cesse et il me semblait utile de vous présenter plus en avant cette fonctionnalité dans un tutoriel vidéo que voici.
Ça m’a permis de tester la fonctionnalité Whisper basée sur l’intelligence artificielle qui permet de faire du sous titrage automatique et même de la traduction en anglais. Elle se base sur PyTorch qui est une bibliothèque opensource écrite en python d »apprentissage profond (deep learning) qui peut utiliser le GPU s’il est compatible.
Pour installer PyTorch avec une carte graphique NVIDIA, il a fallu trouver la version du CUDA je me suis mélangé les pinceaux avec les commandes nvcc-version et nvidia-smi qui me donnent des résultats discordants, finalement j’ai mis le numéro de version indiqué sur le site PyTorch.
Pour savoir si tout est bien installé et prêt à l’usage, on tape la commande:
python -m torch.utils.collect_env
Et voilà le résultat
Collecting environment information... /usr/local/lib64/python3.10/site-packages/torch/cuda/__init__.py:190: UserWarning: Found GPU0 NVIDIA GeForce GTX 760 (192-bit) which is of cuda capability 3.0. PyTorch no longer supports this GPU because it is too old. The minimum cuda capability supported by this library is 3.7.
warnings.warn( PyTorch version: 2.1.2 cu118 Is debug build: False CUDA used to build PyTorch: 11.8 ROCM used to build PyTorch: N/A
OS: Mageia 9 (x86_64) GCC version: (Mageia 12.3.0-3.mga9) 12.3.0 Clang version: Could not collect CMake version: version 3.26.4 Libc version: glibc-2.36
Python version: 3.10.11 (main, Apr 16 2023, 03:21:15) [GCC 12.2.1 20230415] (64-bit runtime) Python platform: Linux-6.5.13-desktop-6.mga9-x86_64-with-glibc2.36 Is CUDA available: True CUDA runtime version: 12.1.105 CUDA_MODULE_LOADING set to: LAZY GPU models and configuration: GPU 0: NVIDIA GeForce GTX 760 (192-bit) Nvidia driver version: 470.223.02 cuDNN version: Could not collect HIP runtime version: N/A MIOpen runtime version: N/A Is XNNPACK available: True
CPU: Architecture : x86_64 Mode(s) opératoire(s) des processeurs : 32-bit, 64-bit Tailles des adresses: 39 bits physical, 48 bits virtual Boutisme : Little Endian Processeur(s) : 8 Liste de processeur(s) en ligne : 0-7 Identifiant constructeur : GenuineIntel Nom de modèle : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz Famille de processeur : 6 Modèle : 60 Thread(s) par cœur : 2 Cœur(s) par socket : 4 Socket(s) : 1 Révision : 3 multiplication des MHz du/des CPU(s) : 93% Vitesse maximale du processeur en MHz : 4000,0000 Vitesse minimale du processeur en MHz : 800,0000 BogoMIPS : 7183,94 Drapeaux : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_ good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm c puid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts vnmi md_clear flush_l1d Virtualisation : VT-x Cache L1d : 128 KiB (4 instances) Cache L1i : 128 KiB (4 instances) Cache L2 : 1 MiB (4 instances) Cache L3 : 8 MiB (1 instance) Nœud(s) NUMA : 1 Nœud NUMA 0 de processeur(s) : 0-7 Vulnérabilité Gather data sampling : Not affected Vulnérabilité Itlb multihit : KVM: Mitigation: VMX disabled Vulnérabilité L1tf : Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable Vulnérabilité Mds : Mitigation; Clear CPU buffers; SMT vulnerable Vulnérabilité Meltdown : Mitigation; PTI Vulnérabilité Mmio stale data : Unknown: No mitigations Vulnérabilité Retbleed : Not affected Vulnérabilité Spec rstack overflow : Not affected Vulnérabilité Spec store bypass : Mitigation; Speculative Store Bypass disabled via prctl Vulnérabilité Spectre v1 : Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnérabilité Spectre v2 : Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling, PBRSB-eIBRS Not affected Vulnérabilité Srbds : Mitigation; Microcode Vulnérabilité Tsx async abort : Not affected
Les premières lignes me font craindre le pire, mais je tente le coup sous Kdenlive. Dans les paramètres de configuration de kdenlive je choisis Whisper puis au niveau de Device ma carte graphique Nvidia.
Et je lance la création d’un sous titre automatique à partir de la commande Speech Recognition, mais malheureusement je n’irai pas plus loin que cette erreur
/usr/local/lib64/python3.10/site-packages/torch/cuda/__init__.py:190: UserWarning: Found GPU0 NVIDIA GeForce GTX 760 (192-bit) which is of cuda capability 3.0. PyTorch no longer supports this GPU because it is too old. The minimum cuda capability supported by this library is 3.7.
warnings.warn( Traceback (most recent call last): File "/usr/share/kdenlive/scripts/whispertosrt.py", line 54, in <module> sys.exit(main()) File "/usr/share/kdenlive/scripts/whispertosrt.py", line 33, in main result = whispertotext.run_whisper(source, model, device, task, language) File "/var/share/kdenlive/scripts/whispertotext.py", line 53, in run_whisper model = whisper.load_model(model, device) File "/home/olivier/.local/lib/python3.10/site-packages/whisper/__init__.py", line 146, in load_model checkpoint = torch.load(fp, map_location=device) File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1014, in load return _load(opened_zipfile, File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1422, in _load result = unpickler.load() File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1392, in persistent_load typed_storage = load_tensor(dtype, nbytes, key, _maybe_decode_ascii(location)) File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1366, in load_tensor wrap_storage=restore_location(storage, location), File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 1296, in restore_location return default_restore_location(storage, map_location) File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 381, in default_restore_location result = fn(storage, location) File "/usr/local/lib64/python3.10/site-packages/torch/serialization.py", line 279, in _cuda_deserialize return obj.cuda(device) File "/usr/local/lib64/python3.10/site-packages/torch/_utils.py", line 114, in _cuda untyped_storage = torch.UntypedStorage( RuntimeError: NVML_SUCCESS == r INTERNAL ASSERT FAILED at "../c10/cuda/CUDACachingAllocator.cpp":1154, please report a bug to PyTorch.
Ça marche en revanche je repasse en mode CPU
Le résultat est plutôt pas mal quand on choisit le français avec une bonne diction en revanche la traduction automatique n’a pas marché.