ਜਦੋਂ NVENC ਸ਼ੁਰੂ ਨਹੀਂ ਹੁੰਦਾ: ਮਾਡਲਾਂ ਨਾਲ ਭਰਿਆ GPU, ਅਤੇ ਇੱਕ ਰੈਂਡਰਰ ਜੋ ਬੈਕਅਪ 'ਤੇ ਚਲਾ ਜਾਂਦਾ ਹੈ

ਵੀਡੀਓ

ਸਾਡਾ ਵੀਡੀਓ ਰੈਂਡਰਰ ਉਸੇ ਮਸ਼ੀਨ 'ਤੇ ਚੱਲਦਾ ਹੈ ਜਿੱਥੇ ਭਾਸ਼ਾ ਮਾਡਲ (language model) ਵੀ ਚੱਲਦਾ ਹੈ ਜੋ ਇਸਦੇ ਸਕ੍ਰਿਪਟ ਲਿਖਦਾ ਹੈ। ਇੱਕ ਸ਼ਾਮ ਹਾਰਡਵੇਅਰ ਇਨਕੋਡਰ ਸਿਰਫ਼ ਖੁੱਲ੍ਹਿਆ ਹੀ ਨਹੀਂ: "CUDA_ERROR_OUT_OF_MEMORY: out of memory", ਫਿਰ "No capable devices found"।

ਕੀ ਹੋਇਆ

ਮਸ਼ੀਨ ਇੱਕ NVIDIA GB10 ਡੈਸਕਟੌਪ ਹੈ, ਜਿਸਦਾ CPU ਅਤੇ GPU ਇੱਕ ਹੀ ਮੈਮੋਰੀ ਪੂਲ ਸਾਂਝਾ ਕਰਦੇ ਹਨ। ਇਹ vLLM ਰਾਹੀਂ ਸਾਡੇ ਲੋਕਲ ਮਾਡਲ ਨੂੰ ਸੇਵਾ ਦਿੰਦਾ ਹੈ, ਅਤੇ Studio ffmpeg ਨਾਲ ਉਸੇ ਬਾਕਸ 'ਤੇ ਰੈਂਡਰ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਸੰਭਵ ਹੋਵੇ NVENC ਦੀ ਵਰਤੋਂ ਕਰਦਿਆਂ। ਇੱਕ ਟੈਸਟ ਰਨ ਦੌਰਾਨ ਇਨਕੋਡਰ ਆਪਣਾ CUDA context ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ। ਇਹ ਅਸਫਲਤਾ ਸਕਿੰਟਾਂ ਵਿੱਚ ਆਉਂਦੀ-ਜਾਂਦੀ ਰਹੀ: ਇੱਕ ਛੋਟਾ NVENC ਪ੍ਰੋਬ ਪਾਸ ਹੋਇਆ ਅਤੇ ਤੁਰੰਤ ਬਾਅਦ ਰੈਂਡਰ ਅਸਫਲ ਰਿਹਾ; ਅਗਲੇ ਰਨ ਵਿੱਚ ਪ੍ਰੋਬ ਹੀ ਅਸਫਲ ਰਿਹਾ; ਉਸ ਤੋਂ ਅਗਲੇ ਰਨ ਵਿੱਚ, ਪ੍ਰੋਬ ਅਤੇ ਰੈਂਡਰ ਦੋਵੇਂ NVENC ਰਾਹੀਂ ਚੱਲੇ।

ਕਿਉਂ

vLLM ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਮਾਡਲ ਅਤੇ ਇਸਦੇ ਕੈਸ਼ ਲਈ GPU ਦੀ ਮੈਮੋਰੀ ਦਾ ਇੱਕ ਨਿਸ਼ਚਿਤ ਹਿੱਸਾ ਰਾਖਵਾਂ ਰੱਖ ਲੈਂਦਾ ਹੈ। NVENC ਨੂੰ ਹਰ ਸੈਸ਼ਨ ਦੇ CUDA context ਲਈ ਆਪਣੀ ਥੋੜ੍ਹੀ ਮੈਮੋਰੀ ਚਾਹੀਦੀ ਹੈ। ਜਦੋਂ ਮਾਡਲ ਸਰਵਰ ਅਤੇ ਹੋਰ ਜੌਬ ਕੁਝ ਵੀ ਬਚਿਆ ਹੋਇਆ ਨਹੀਂ ਛੱਡਦੇ, ਤਾਂ ਇਨਕੋਡਰ ਸ਼ੁਰੂ ਨਹੀਂ ਹੋ ਸਕਦਾ, ਭਾਵੇਂ ਇਹ ਚਿੱਪ 'ਤੇ ਇੱਕ ਵੱਖਰਾ ਇੰਜਣ ਹੈ ਅਤੇ GPU ਦੇ ਕੰਪਿਊਟ ਨੂੰ ਲਗਭਗ ਛੂਹੇਗਾ ਹੀ ਨਹੀਂ।

ਫਿਕਸ: ਪ੍ਰੋਬ 'ਤੇ ਨਹੀਂ, ਇਨਕੋਡ 'ਤੇ ਫੈਸਲਾ ਕਰੋ

ਸ਼ੁਰੂਆਤ 'ਤੇ ਇੱਕ ਪ੍ਰੋਬ ਤੁਹਾਨੂੰ ਦੱਸਦਾ ਹੈ ਕਿ NVENC ਇੱਕ ਪਲ ਪਹਿਲਾਂ ਕੰਮ ਕਰ ਰਿਹਾ ਸੀ, ਇਹ ਨਹੀਂ ਕਿ ਅਗਲੀ ਫਾਈਲ ਲਈ ਵੀ ਕੰਮ ਕਰੇਗਾ। ਇਸ ਲਈ Studio ਹਰ ਰੈਂਡਰ ਲਈ NVENC ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ, ਅਤੇ ਜੇ ffmpeg ਅਸਫਲ ਹੋਵੇ, ਤਾਂ ਉਹੀ ਫਿਲਟਰ ਗ੍ਰਾਫ libx264 ਨਾਲ ਦੁਬਾਰਾ ਚਲਾਉਂਦਾ ਹੈ। ਲਾਈਵ ਚੈਨਲ ਹਰ ਸ਼ੁਰੂਆਤ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੀਆਂ ਲਾਈਵ ਸੈਟਿੰਗਾਂ ਨਾਲ ਅੱਧੇ ਸਕਿੰਟ ਦਾ ਟੈਸਟ ਇਨਕੋਡ ਚਲਾਉਂਦਾ ਹੈ ਅਤੇ ਜੇ NVENC ਇਸ ਵਿੱਚ ਅਸਫਲ ਹੋਵੇ ਤਾਂ libx264 ਵਰਤਦਾ ਹੈ; ਸਟ੍ਰੀਮ ਦੌਰਾਨ NVENC ਜਾਂ CUDA ਅਸਫਲਤਾ ਅਗਲੀ ਸ਼ੁਰੂਆਤ ਨੂੰ libx264 'ਤੇ ਬਦਲ ਦਿੰਦੀ ਹੈ। ਹਰ ਪੂਰੀ ਹੋਈ ਵੀਡੀਓ ਰਿਕਾਰਡ ਕਰਦੀ ਹੈ ਕਿ ਉਸਨੂੰ ਕਿਹੜੇ ਇਨਕੋਡਰ ਨੇ ਬਣਾਇਆ ਸੀ, ਤਾਂ ਜੋ ਬੈਕਅਪ ਨੋਟਿਸ ਤੋਂ ਬਿਨਾਂ ਨਾ ਲੰਘੇ, ਸਗੋਂ ਜੌਬ ਫਾਈਲ ਵਿੱਚ ਦਿਖਾਈ ਦੇਵੇ।

ਬੈਕਅਪ ਦੀ ਕੀਮਤ

ਸਾਡੀ ਉਮੀਦ ਤੋਂ ਘੱਟ। ਉਸੇ ਮਸ਼ੀਨ ਦੇ 20-ਕੋਰ Arm CPU 'ਤੇ, libx264 ਨੇ 1080p ਵੀਡੀਓ ਦੇ 12 ਸਕਿੰਟ, ਕੈਮਰਾ ਮੂਵ, ਬਰਨ-ਇਨ ਕੈਪਸ਼ਨ ਅਤੇ ਲਾਊਡਨੈੱਸ ਨੌਰਮਲਾਈਜ਼ੇਸ਼ਨ ਦੇ ਨਾਲ, 7.6 ਸਕਿੰਟਾਂ ਵਿੱਚ ਰੈਂਡਰ ਕੀਤੇ। ਰੋਜ਼ਾਨਾ ਇੱਕ ਵਾਰ ਬਣਾਈਆਂ ਜਾਣ ਵਾਲੀਆਂ ਛੋਟੀਆਂ ਵੀਡੀਓਜ਼ ਲਈ, CPU ਇੱਕ ਬਿਲਕੁਲ ਵਧੀਆ ਇਨਕੋਡਰ ਹੈ। ਇਮੇਜ ਮਾਡਲ ਲਈ GPU ਦੀ ਲੋੜ ਇਨਕੋਡ ਨਾਲੋਂ ਕਿਤੇ ਵੱਧ ਹੈ।

ਸਿੱਖ

ਸਾਂਝੀ ਮਸ਼ੀਨ 'ਤੇ, GPU ਇਨਕੋਡਰ ਨੂੰ ਵਿਕਲਪਿਕ ਵਜੋਂ ਦੇਖੋ: ਜਦੋਂ ਇਹ ਖੁੱਲ੍ਹੇ ਤਾਂ ਇਸਦਾ ਉਪਯੋਗ ਕਰੋ, ਜਦੋਂ ਨਾ ਖੁੱਲ੍ਹੇ ਤਾਂ ਬੈਕਅਪ ਵਿਕਲਪ ਵਰਤੋ, ਅਤੇ ਦਰਜ ਕਰੋ ਕਿ ਤੁਸੀਂ ਕਿਹੜਾ ਵਰਤਿਆ। ਇਹੀ ਨਿਯਮ ਕਿਸੇ ਵੀ GPU ਫੀਚਰ ਲਈ ਲਾਗੂ ਹੁੰਦਾ ਹੈ ਜਿਸਨੂੰ ਆਪਣੀ ਮੈਮੋਰੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਖਾਸ ਕਰਕੇ ਉਸ ਬਾਕਸ 'ਤੇ ਜਿੱਥੇ ਇੱਕ ਮਾਡਲ ਸਰਵਰ ਪਹਿਲਾਂ ਹੀ ਜ਼ਿਆਦਾਤਰ ਮੈਮੋਰੀ ਲੈ ਚੁੱਕਾ ਹੈ। Studio ਵਿੱਚ ਇਹ ਵਿਵਹਾਰ ਡਿਫੌਲਟ ਤੌਰ 'ਤੇ ਚਾਲੂ ਹੁੰਦਾ ਹੈ।

ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ: