Benchmark GPU minimo per l'editing video su droplet GPU
Introduzione
Con il lancio di GPU Droplet basate su GPU NVIDIA H100, DigitalOcean fornisce una soluzione ideale per l'editing video ad alte prestazioni. NVIDIA H100, dotato di 640 Tensor Core e 128 RT Core, supporta un'elaborazione dei dati più rapida, consentendo attività di ridimensionamento e codifica video ad alta risoluzione.
Questo tutorial ti guiderà attraverso la configurazione di un Droplet GPU per l'editing video, utilizzando FFmpeg con supporto CUDA per ridimensionare e codificare un file video di esempio con risoluzione da 720p a 4K. Questo tutorial è pensato su misura per gli editor video e gli sviluppatori che cercano un modo efficiente per gestire l'elaborazione video sull'infrastruttura cloud.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account DigitalOcean Cloud.
- Una gocciolina GPU distribuita e in esecuzione.
- Familiarità con la riga di comando di Linux. Per saperne di più, puoi visitare questa guida sul primer della riga di comando di Linux.
Comprensione dei benchmark GPU per l'editing video
Un editing video efficace richiede GPU con funzionalità specifiche:
- VRAM: con 80 GB HBM2e, NVIDIA H100 può gestire video 4K e 8K.
- CUDA Core: 18.432 CUDA core per elaborazione e codifica ad alta velocità.
- Tensor Core: 640 Tensor Core per supportare attività potenziate dall'intelligenza artificiale, come la riduzione del rumore.
- RT Core: 128 RT Core per elaborazione in tempo reale ed effetti visivi.
- Larghezza di banda della memoria: fino a 2 TB/s, per una riproduzione fluida e trasferimenti rapidi dei dati.
Per l'editing video, queste specifiche si traducono in un'elaborazione più rapida, un ridimensionamento efficiente e il rendering degli effetti in tempo reale.
Obiettivi minimi di benchmark
Ecco gli obiettivi di riferimento in base alla risoluzione:
Resolution | VRAM Required | CUDA Cores | Tensor Cores | Memory Bandwidth | RT Cores |
---|---|---|---|---|---|
1080p | 8GB | 2,000+ | 100+ | 300+ GB/s | 20+ |
4K | 16GB | 4,000+ | 200+ | 500+ GB/s | 40+ |
8K | 32GB+ | 8,000+ | 400+ | 1+ TB/s | 80+ |
NVIDIA H100 soddisfa e supera questi parametri di riferimento per l'editing video 4K e 8K, rendendo GPU Droplet una scelta eccellente per progetti video avanzati.
Droplet GPU DigitalOcean: specifiche NVIDIA H100
NVIDIA H100 offre core CUDA, Tensor e RT estesi, fornendo le risorse necessarie per carichi di lavoro di editing video ad alta risoluzione.
GPU Model | VRAM | CUDA Cores | Tensor Cores | Memory Bandwidth | RT Cores |
---|---|---|---|---|---|
NVIDIA H100 | 80GB | 18,432 | 640 | 2TB/s | 128 |
L'H100 è in grado di gestire anche le attività di editing più impegnative con un ritardo minimo e un'elaborazione ad alta velocità.
Configurazione del carico di lavoro di editing video sui droplet GPU DigitalOcean
In questa sezione, configuriamo e distribuiamo un carico di lavoro di editing video su un droplet GPU DigitalOcean.
Passaggio 1: configurare il droplet GPU
1.Crea un nuovo progetto: dovrai creare un nuovo progetto dal pannello di controllo cloud e collegarlo a un Droplet GPU.
2.Crea un droplet GPU: accedi al tuo account DigitalOcean, crea un nuovo droplet GPU e scegli AI/ML Ready come sistema operativo. Questa immagine del sistema operativo installa tutti i driver GPU NVIDIA necessari. Puoi fare riferimento alla nostra documentazione ufficiale su come creare un Droplet GPU.
3.Aggiungi una chiave SSH per l'autenticazione: è necessaria una chiave SSH per l'autenticazione con GPU Droplet e aggiungendo la chiave SSH, puoi accedere a GPU Droplet dal tuo terminale.
4.Finalizza e crea il droplet GPU: una volta completati tutti i passaggi precedenti, finalizza e crea un nuovo droplet GPU.
Passaggio 2: installare le dipendenze
Una volta che la GPU Droplet è pronta e distribuita. Puoi accedere tramite SSH alla GPU Droplet dal tuo terminale.
ssh root@<your-droplet-ip>
Assicurati che il tuo Droplet GPU basato su Ubuntu sia aggiornato:
sudo apt update && sudo apt upgrade -y
Successivamente, riavvia la GPU Droplet utilizzando il comando seguente e attendi che sia online. Il riavvio dopo l'esecuzione di sudo apt update && sudo apt upgrade—y
è spesso necessario per garantire che tutti i componenti di sistema aggiornati, in particolare il kernel e i driver hardware, siano completamente caricati e applicati.
Nota: sulla maggior parte dei sistemi Linux, puoi verificare se è necessario un riavvio eseguendo:
[ -f /var/run/reboot-required ] && echo "Reboot is required"
Se è necessario un riavvio dopo un aggiornamento del kernel e dei driver hardware, osserverai il seguente output del comando precedente:
Reboot is required
Ora verifichiamo il driver NVIDIA e la versione CUDA con quanto segue:
nvidia-smi
Questo comando dovrebbe visualizzare i dettagli della tua GPU NVIDIA e la versione del driver.
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.183.06 Driver Version: 535.183.06 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA H100 80GB HBM3 Off | 00000000:00:09.0 Off | 0 |
| N/A 28C P0 67W / 700W | 0MiB / 81559MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
Verifica l'installazione di CUDA:
nvcc --version
Dovresti vedere le informazioni sulla versione installata di CUDA.
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:16:06_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0
Nota: dagli output precedenti, assicurati che la versione del driver CUDA dall'output del comando nvidia-smi
e del comando nvcc -v
partite. Se è presente una mancata corrispondenza di versione tra l'output di entrambi i comandi, è necessario reinstallarli entrambi e riavviare nuovamente GPU Droplet.
Successivamente, installerai FFmpeg. FFmpeg abilita l'elaborazione video accelerata dalla GPU, che utilizzerai per ridimensionare il video.
sudo apt install -y ffmpeg
Esegui quanto segue per verificare se FFmpeg rileva il supporto CUDA.
ffmpeg -hwaccels
Questo comando dovrebbe elencare cuda
, vdpau
e vappi
, indicando che l'accelerazione GPU è disponibile.
ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
configuration: --prefix=/usr --extra-version=0ubuntu0.22.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Hardware acceleration methods:
vdpau
cuda
vaapi
qsv
drm
opencl
Passaggio 3: scaricare dati video di esempio per i test
Per questo tutorial utilizzerai un video di esempio della Blender Foundation per dimostrare l'elaborazione video accelerata dalla GPU. Blender è una suite di creazione 3D gratuita e open source che supporta l'intera pipeline 3D: modellazione, rigging, animazione, simulazione, rendering, ecc.
Scaricalo con il comando seguente:
wget https://download.blender.org/demo/movies/ToS/tears_of_steel_720p.mov
Passaggio 4: migliora il video a 4K con FFmpeg
Ora puoi elaborare il video con FFmpeg installato e la GPU configurata.
La sintassi di base del comando ffmpeg
è:
ffmpeg -i <input_file> -vf "scale=width:height" -c:v <codec_name> -preset <encoding_preset> -b:v <bitrate> <output_file>
Ecco cosa significa ciascuno dei parametri:
input_file
: il nome del file video di input.scale=width:height
: il filtro di ridimensionamento, dove larghezza e altezza sono le dimensioni desiderate per il ridimensionamento.codec_name
: il codec da utilizzare per codificare il video (ad esempio,libx264
perH.264
).encoding_preset
: la velocità rispetto all'efficienza di compressione preimpostata per la codifica (ad es. veloce, media, lenta).bitrate
: il bitrate del video di destinazione (ad esempio, 10 M per 10 Mbps).output_file
: il nome del file di output, inclusi formato ed estensione.
In questo esempio, eseguirai l'upscaling del video dalla risoluzione 720p a 4K.
Esegui il seguente comando FFmpeg per eseguire l'upscaling del video a 4K (risoluzione 3840x2160):
ffmpeg -i tears_of_steel_720p.mov -vf "scale=3840:2160" -c:v libx264 -preset fast -b:v 10M tears_of_steel_4k.mov
Una volta terminata l'elaborazione, dovresti osservare il seguente output:
Output #0, mov, to 'tears_of_steel_4k.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf58.76.100
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p(tv, progressive), 3840x2160 [SAR 120:89 DAR 640:267], q=2-31, 10000 kb/s, 24 fps, 12288 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : FFMP
encoder : Lavc58.134.100 libx264
Side data:
cpb: bitrate max/min/avg: 0/0/10000000 buffer size: 0 vbv_delay: N/A
Stream #0:1(eng): Audio: aac (LC) (.mov / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
encoder : Lavc58.134.100 aac
frame=17620 fps= 69 q=-1.0 Lsize= 949201kB time=00:12:14.07 bitrate=10592.7kbits/s speed=2.88x
video:937125kB audio:11532kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.057354%
[libx264 @ 0x564504ee7f40] frame I:223 Avg QP:22.07 size:180259
[libx264 @ 0x564504ee7f40] frame P:5973 Avg QP:25.97 size: 92140
[libx264 @ 0x564504ee7f40] frame B:11424 Avg QP:27.21 size: 32306
[libx264 @ 0x564504ee7f40] consecutive B-frames: 8.2% 14.4% 5.4% 72.0%
[libx264 @ 0x564504ee7f40] mb I I16..4: 20.9% 75.8% 3.2%
[libx264 @ 0x564504ee7f40] mb P I16..4: 9.4% 21.2% 1.1% P16..4: 29.5% 4.3% 1.4% 0.0% 0.0% skip:33.0%
[libx264 @ 0x564504ee7f40] mb B I16..4: 0.9% 1.4% 0.1% B16..8: 25.0% 1.3% 0.2% direct: 1.8% skip:69.3% L0:44.6% L1:53.4% BI: 2.0%
[libx264 @ 0x564504ee7f40] final ratefactor: 25.73
[libx264 @ 0x564504ee7f40] 8x8 transform intra:66.4% inter:91.8%
[libx264 @ 0x564504ee7f40] coded y,uvDC,uvAC intra: 30.5% 41.4% 7.3% inter: 6.3% 10.8% 0.3%
[libx264 @ 0x564504ee7f40] i16 v,h,dc,p: 31% 23% 7% 38%
[libx264 @ 0x564504ee7f40] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 34% 16% 23% 3% 5% 6% 4% 5% 3%
[libx264 @ 0x564504ee7f40] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 37% 17% 10% 4% 8% 9% 6% 6% 4%
[libx264 @ 0x564504ee7f40] i8c dc,h,v,p: 55% 16% 22% 6%
[libx264 @ 0x564504ee7f40] Weighted P-Frames: Y:2.2% UV:1.1%
[libx264 @ 0x564504ee7f40] ref P L0: 62.5% 12.6% 18.5% 6.3% 0.1%
[libx264 @ 0x564504ee7f40] ref B L0: 90.1% 8.2% 1.7%
[libx264 @ 0x564504ee7f40] ref B L1: 96.5% 3.5%
[libx264 @ 0x564504ee7f40] kb/s:10456.65
[aac @ 0x564504f67ec0] Qavg: 259.313
Ecco la ripartizione del comando:
-i Tears_of_steel_720p.mov
: specifica il file video di input.-vf "scale=3840:2160"
: imposta il filtro di scala per eseguire l'upscaling del video alla risoluzione 4K (3840x2160).-c:v libx264
: utilizza il codec libx264 per codificare il video.-preset medium
: specifica il bilanciamento tra velocità/qualità della codifica (veloce è un buon equilibrio).-b:v 10M
: imposta il bitrate del video di destinazione su 10 Mbps per mantenere la qualità.
Per saperne di più sul comando FFmpeg puoi fare riferimento alla sua documentazione ufficiale.
Passaggio 5: scarica il video elaborato sul tuo sistema locale
Una volta elaborato il video, scaricalo dal droplet sul tuo computer locale utilizzando scp
. Sostituisci
con l'indirizzo IP del tuo droplet.
scp root@<your_droplet_ip>:~/tears_of_steel_4k.mov ~/Downloads/
Questo comando copia il file video in scala 4K nella cartella Download
sul desktop locale.
Conclusione
Le GPU Droplet di DigitalOcean, basate sulle GPU NVIDIA H100, offrono un ambiente ad alte prestazioni per l'editing video. Con il ridimensionamento e la codifica accelerati dalla GPU tramite FFmpeg, puoi ottenere miglioramenti significativi nei tempi di elaborazione, consentendo regolazioni in tempo reale ed esportazioni video veloci. Questa configurazione è ideale per gli editor video e gli sviluppatori che gestiscono carichi di lavoro ad alta risoluzione.