Ախտանիշի քարտ

thinking stream starts immediately — it is just not addressed to the user

Հոսքի առաջին թոքենը reasoning-բլոկն է, ոչ թե պատասխանը. time-to-first-token-ն ակնթարթային է թվում, պատասխանն ուշանում է կամ չի էլ գալիս։ Կլիենտում չափեք ժամանակը մինչև պատասխանի առաջին թոքենը, դատարկ պատասխանը հաշվեք ձախողում, reasoning-ն անջատեք, որտեղ workload-ը թույլ է տալիս։

Պլատֆորմ:
Ցանկացած լոկալ ստեկ
Runtime:
llama.cpp server (Vulkan)
Հրապարակվել է:
02.09.2026

Ինչ եք տեսնում

Reasoning-մոդել՝ հոսքային չաթ endpoint-ի հետևում։ Առաջին թոքենը գալիս է անմիջապես, միայն թե հոսում է ոչ թե պատասխանը, այլ reasoning-բլոկը։ Պատասխանը սկսվում է շատ ավելի ուշ. փոքր թոքենային բյուջեի դեպքում այն հաճախ ընդհանրապես չի սկսվում, և հարցումն ավարտվում է հաջողության ստատուսով ու դատարկ պատասխանի դաշտով։ Երկու հաշվետվություններն էլ ախտանիշը երեք նախադասության մեջ են տեղավորում.

thinking stream starts immediately — it is just not addressed to the user
The user watches tokens stream for that entire time — they are the model thinking out loud, not the reply.
the caller gets HTTP 200 and an empty string

Որտեղ ենք հանդիպել

Պատճառ

Մոդելը reasoning-բլոկը գրում է պատասխանից առաջ, և հոսքը սկսվում է հենց դրանով, ուստի առաջին թոքենը, ինչ էլ այն լինի, նույն պահին է հասնում՝ անկախ նրանից՝ տուփն անմիջապես է պատասխանում, թե ընդհանրապես չի պատասխանում։ Պատասխանի առաջին թոքենը գալիս է միայն բլոկի ավարտից հետո։ Երբ բյուջեն reasoning-անցման պահանջածից պակաս է, անցումն ուտում է ամբողջ բյուջեն դեռ պատասխանի սկսվելուց առաջ, endpoint-ը վերադարձնում է հաջողություն դատարկ պատասխանով, և ստատուս-կոդի ստուգումը դա գրանցում է որպես հաջողություն։ Սերվերային կողմի չափումն այս ամենը թաքցնում է։

Լուծում

Չափեք ժամանակը մինչև պատասխանի առաջին թոքենը՝ կլիենտային կողմում։ Ժամանակը մինչև առաջին թոքենը, ինչ էլ այն լինի, reasoning-մոդելի համար պիտանի թիվ չէ։

Դատարկ պատասխանները հաշվեք որպես ձախողում՝ և՛ սխալների բաժնում, և՛ հապաղման յուրաքանչյուր վիճակագրության հայտարարում։ Թոքենային բյուջեն կոռեկտության կարգավորում է. եթե reasoning-ը մնում է միացրած, անցման համար բյուջե նախատեսեք։

Reasoning-ն անջատեք այնտեղ, որտեղ workload-ը թույլ է տալիս։ Մեր տուփի վրա այն անջատված էր chat template-ի միջոցով. սկզբնաղբյուր էջերը նշում են կարգավորումը, ոչ թե դրոշը։ Ստուգեք աշխատող սերվերի վրա, ոչ թե փաստաթղթերով. հարցրեք նրան, թե ինչ template և կարգավորումներ է փաստացի կիրառել, հետո ուղարկեք մեկ հարցում և նայեք՝ reasoning-բլոկ հայտնվո՞ւմ է։ Անջատած reasoning-ով պատասխանը սկսվում էր հոսքի հետ միասին և այնուամենայնիվ անցնում էր լեզվի ու կրկնությունների gate-երը. բառերի բյուջեի gate-ը ձախողվում էր ամեն ռեժիմում՝ միացրած թե անջատած, ինչը հաշվետվությունը վերագրում է մոդելի շատախոսությանը, ոչ թե փոխարկիչին։ Առօրյա չաթի և խիստ JSON ավտոմատացման վրա reasoning-ը ոչինչ չգնեց, որ մեր gate-երը կարողանային նկատել. բարդ բազմաքայլ խնդիրները մեր կորպուսներից դուրս են՝ մեր կողմից չփորձարկված։

Բա՞ց է դեռ upstream-ում

Մենք չենք հետևում։ Սկզբնաղբյուր էջերը upstream issue չեն նշում. թերությունը մետրիկայի մեջ է, ոչ թե runtime-ում։

Ապացույցներ

Աղբյուրներ

Այս քարտը փաստագրում է լաբորատորիայի սեփական երկաթի վրա դիտարկված մեկ խափանում; թվերը, եթե կան, ապրում են հղված աղբյուր էջում, ոչ թե այստեղ։

← Բոլոր ախտանիշների քարտերը