NVENC ಪ್ರಾರಂಭವಾಗದಿದ್ದಾಗ: ಮಾಡೆಲ್ಗಳಿಂದ ತುಂಬಿದ GPU ಮತ್ತು ಫಾಲ್ಬ್ಯಾಕ್ ಆಗುವ ರೆಂಡರರ್
ವೀಡಿಯೊ
ನಮ್ಮ ವೀಡಿಯೊ ರೆಂಡರರ್ ಅದರ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಬರೆಯುವ ಭಾಷಾ ಮಾದರಿಯೊಂದಿಗೆ ಒಂದೇ ಯಂತ್ರದಲ್ಲಿ ನಡೆಯುತ್ತದೆ. ಒಂದು ಸಂಜೆ ಹಾರ್ಡ್ವೇರ್ ಎನ್ಕೋಡರ್ ಸರಿಯಾಗಿ ತೆರೆಯಲಿಲ್ಲ: "CUDA_ERROR_OUT_OF_MEMORY: out of memory", ನಂತರ "No capable devices found".
ಏನಾಯಿತು
ಯಂತ್ರವು NVIDIA GB10 ಡೆಸ್ಕ್ಟಾಪ್ ಆಗಿದ್ದು, ಅದರ CPU ಮತ್ತು GPU ಒಂದೇ ಮೆಮೊರಿ ಪೂಲ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ. ಇದು vLLM ಮೂಲಕ ನಮ್ಮ ಸ್ಥಳೀಯ ಮಾದರಿಯನ್ನು ಸೇವೆಗೊಳಿಸುತ್ತದೆ, ಮತ್ತು Studio ffmpeg ಬಳಸಿ, ಸಾಧ್ಯವಾದಾಗ NVENC ಬಳಸಿಕೊಂಡು ಅದೇ ಬಾಕ್ಸ್ನಲ್ಲಿ ರೆಂಡರ್ ಮಾಡುತ್ತದೆ. ಪರೀಕ್ಷಾ ರನ್ ಸಮಯದಲ್ಲಿ ಎನ್ಕೋಡರ್ ತನ್ನ CUDA ಕಾಂಟೆಕ್ಸ್ಟ್ ಅನ್ನು ರಚಿಸಲು ವಿಫಲವಾಯಿತು. ವಿಫಲತೆ ಕೆಲವೇ ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಬಂದು ಹೋಯಿತು: ಒಂದು ಕಿರು NVENC ಪ್ರೋಬ್ ಉತ್ತೀರ್ಣವಾಯಿತು ಮತ್ತು ಅದರ ನಂತರದ ರೆಂಡರ್ ವಿಫಲವಾಯಿತು; ಮುಂದಿನ ರನ್ನಲ್ಲಿ ಪ್ರೋಬ್ ಸ್ವತಃ ವಿಫಲವಾಯಿತು; ಆ ನಂತರದ ರನ್ನಲ್ಲಿ, ಪ್ರೋಬ್ ಮತ್ತು ರೆಂಡರ್ ಎರಡೂ NVENC ಮೂಲಕ ಸಾಗಿದವು.
ಏಕೆ
vLLM ಪ್ರಾರಂಭವಾದಾಗ, ಮಾದರಿ ಮತ್ತು ಅದರ ಕ್ಯಾಶ್ಗಾಗಿ GPU ಮೆಮೊರಿಯ ನಿಗದಿತ ಭಾಗವನ್ನು ಮೀಸಲಿಡುತ್ತದೆ. ಪ್ರತಿ ಸೆಷನ್ನ CUDA ಕಾಂಟೆಕ್ಸ್ಟ್ಗಾಗಿ NVENC ತನ್ನದೇ ಆದ ಸ್ವಲ್ಪ ಮೆಮೊರಿಯನ್ನು ಬಯಸುತ್ತದೆ. ಮಾದರಿ ಸರ್ವರ್ ಮತ್ತು ಇತರ ಜಾಬ್ಗಳು ಏನನ್ನೂ ಉಳಿಸದಿದ್ದಾಗ, ಎನ್ಕೋಡರ್ ಪ್ರಾರಂಭವಾಗಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ, ಅದು ಚಿಪ್ನ ಮೇಲಿನ ಪ್ರತ್ಯೇಕ ಎಂಜಿನ್ ಆಗಿದ್ದರೂ ಮತ್ತು GPU ಕಂಪ್ಯೂಟ್ ಅನ್ನು ಅಪರೂಪವಾಗಿ ಮಾತ್ರ ಸ್ಪರ್ಶಿಸಿದರೂ.
ಪರಿಹಾರ: ಪ್ರೋಬ್ನಲ್ಲಿ ಅಲ್ಲ, ಎನ್ಕೋಡ್ ಸಮಯದಲ್ಲಿ ನಿರ್ಧರಿಸಿ
ಪ್ರಾರಂಭದಲ್ಲಿನ ಪ್ರೋಬ್, NVENC ಕ್ಷಣದ ಹಿಂದೆ ಕೆಲಸ ಮಾಡಿತು ಎಂದು ತಿಳಿಸುತ್ತದೆಯೇ ಹೊರತು, ಮುಂದಿನ ಫೈಲ್ಗೂ ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದು ಅಲ್ಲ. ಆದ್ದರಿಂದ Studio ಪ್ರತಿ ರೆಂಡರ್ಗೂ NVENC ಅನ್ನು ಪ್ರಯತ್ನಿಸುತ್ತದೆ ಮತ್ತು ffmpeg ವಿಫಲವಾದರೆ, libx264 ಬಳಸಿ ಅದೇ ಫಿಲ್ಟರ್ ಗ್ರಾಫ್ ಅನ್ನು ಮತ್ತೆ ನಡೆಸುತ್ತದೆ. ಲೈವ್ ಚಾನೆಲ್ ಪ್ರತಿ ಪ್ರಾರಂಭಕ್ಕೂ ಮುನ್ನ ತನ್ನ ಲೈವ್ ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಅರ್ಧ-ಸೆಕೆಂಡ್ ಪರೀಕ್ಷಾ ಎನ್ಕೋಡ್ ನಡೆಸುತ್ತದೆ ಮತ್ತು NVENC ವಿಫಲವಾದರೆ libx264 ಬಳಸುತ್ತದೆ; ಸ್ಟ್ರೀಮ್ ಸಮಯದಲ್ಲಿ NVENC ಅಥವಾ CUDA ದೋಷ ಕಂಡುಬಂದರೆ, ಮುಂದಿನ ಪ್ರಾರಂಭವನ್ನು libx264 ಗೆ ಬದಲಾಯಿಸುತ್ತದೆ. ಪ್ರತಿ ಪೂರ್ಣಗೊಂಡ ವೀಡಿಯೊ ಯಾವ ಎನ್ಕೋಡರ್ ಅದನ್ನು ತಯಾರಿಸಿತು ಎಂಬುದನ್ನು ದಾಖಲಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಫಾಲ್ಬ್ಯಾಕ್ ಗಮನಿಸದೆ ಸಾಗುವ ಬದಲು ಜಾಬ್ ಫೈಲ್ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.
ಫಾಲ್ಬ್ಯಾಕ್ನ ವೆಚ್ಚ
ನಾವು ನಿರೀಕ್ಷಿಸಿದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ. ಅದೇ ಯಂತ್ರದ 20-ಕೋರ್ Arm CPU ಮೇಲೆ, libx264 ಕ್ಯಾಮೆರಾ ಚಲನೆಗಳು, ಬರ್ನ್-ಇನ್ ಕ್ಯಾಪ್ಶನ್ಗಳು ಮತ್ತು ಲೌಡ್ನೆಸ್ ನಾರ್ಮಲೈಸೇಶನ್ನೊಂದಿಗೆ 1080p ವೀಡಿಯೊದ 12 ಸೆಕೆಂಡುಗಳನ್ನು 7.6 ಸೆಕೆಂಡುಗಳಲ್ಲಿ ರೆಂಡರ್ ಮಾಡಿತು. ದಿನಕ್ಕೆ ಒಮ್ಮೆ ತಯಾರಿಸುವ ಕಿರು ವೀಡಿಯೊಗಳಿಗೆ, CPU ಸಂಪೂರ್ಣವಾಗಿ ಒಳ್ಳೆಯ ಎನ್ಕೋಡರ್ ಆಗಿದೆ. ಎನ್ಕೋಡ್ಗಿಂತ ಇಮೇಜ್ ಮಾದರಿಗೆ GPU ಹೆಚ್ಚು ಮಹತ್ವದ್ದಾಗಿದೆ.
ಮುಖ್ಯ ಅಂಶ
ಒಂದು ಸಾಮೂಹಿಕ ಯಂತ್ರದಲ್ಲಿ, GPU ಎನ್ಕೋಡರ್ ಅನ್ನು ಐಚ್ಛಿಕವಾಗಿ ಪರಿಗಣಿಸಿ: ಅದು ತೆರೆದಾಗ ಅದನ್ನು ಬಳಸಿ, ತೆರೆಯದಿದ್ದರೆ ಬೇರೆ ವಿಧಾನಕ್ಕೆ ಬದಲಾಗಿ, ಯಾವುದನ್ನು ಬಳಸಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಲಾಗ್ ಮಾಡಿ. ಮಾದರಿ ಸರ್ವರ್ ಈಗಾಗಲೇ ಹೆಚ್ಚಿನ ಮೆಮೊರಿಯನ್ನು ತೆಗೆದುಕೊಂಡಿರುವ ಯಂತ್ರದಲ್ಲಿ, ಸ್ವಂತ ಮೆಮೊರಿ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ GPU ಫೀಚರ್ಗೂ ಇದೇ ಅನ್ವಯಿಸುತ್ತದೆ. Studio ಈ ವರ್ತನೆಯನ್ನು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಸಕ್ರಿಯಗೊಳಿಸಿ ಕಳುಹಿಸುತ್ತದೆ.