Երբ 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-ի հիշողության ֆիքսված մասը մոդելի և դրա քեշի համար։ NVENC-ին անհրաժեշտ է մի փոքր հիշողություն յուրաքանչյուր սեսիայի CUDA համատեքստի համար։ Երբ մոդելի սերվերը և այլ առաջադրանքները ոչինչ չեն թողնում, կոդավորիչը չի կարողանում մեկնարկել, չնայած որ այն չիպի վրա առանձին շարժիչ է և գրեթե չի ծանրաբեռնում GPU-ի հաշվողական հզորությունը։
Ուղղումը. որոշում կայացնել կոդավորման ժամանակ, ոչ թե ստուգման
Մեկնարկի ժամանակ ստուգումը ցույց է տալիս, որ NVENC-ը աշխատել է մի պահ առաջ, ոչ թե որ այն կաշխատի հաջորդ ֆայլի համար։ Ուստի Studio-ն յուրաքանչյուր ռենդերի համար փորձում է NVENC, և եթե ffmpeg-ը ձախողվում է, նույն ֆիլտրային գրաֆը կրկին գործարկում է libx264-ով։ Էթերային ալիքը յուրաքանչյուր մեկնարկից առաջ կատարում է կես վայրկյանանոց փորձնական կոդավորում իր էթերային կարգավորումներով և օգտագործում է libx264, եթե NVENC-ը ձախողվում է. էթերի ընթացքում NVENC-ի կամ CUDA-ի սխալը հաջորդ մեկնարկը փոխում է libx264-ի։ Յուրաքանչյուր ավարտված տեսանյութ գրանցում է, թե որ կոդավորիչն է պատրաստել այն, ուստի պահուստային ռեժիմը երևում է առաջադրանքի ֆայլում՝ առանց աննկատ մնալու։
Ի՞նչ է արժենում պահուստային ռեժիմը
Ավելի քիչ, քան սպասում էինք։ Նույն մեքենայի 20 միջուկանոց Arm CPU-ի վրա libx264-ը 1080p տեսանյութի 12 վայրկյանը, տեսախցիկի շարժումներով, այրված ենթագրերով և հնչողության նորմալացմամբ, ռենդերել է 7.6 վայրկյանում։ Օրական մեկ անգամ պատրաստվող կարճ տեսանյութերի համար CPU-ն բավականին լավ կոդավորիչ է։ GPU-ն շատ ավելի կարևոր է պատկերի մոդելի համար, քան կոդավորման համար։
Հիմնական եզրակացությունը
Ընդհանուր օգտագործվող մեքենայի դեպքում GPU կոդերը համարեք ոչ պարտադիր. օգտագործեք այն, երբ այն հասանելի է, և վերադարձեք այլընտրանքին, երբ այն հասանելի չէ, ինչպես նաև գրանցեք, թե որն եք օգտագործել։ Նույնը վերաբերում է ցանկացած GPU հատկանիշի, որին անհրաժեշտ է իր սեփական հիշողությունը այնպիսի սարքի վրա, որտեղ մոդելների սերվերն արդեն զբաղեցրել է դրա մեծ մասը։ Studio-ն այս վարքագիծը նախապես միացված է ուղարկում։