СледваСледващо ръководство
KServe и обслужване на модели в Kubernetes
технически
Техническо РЪКОВОДСТВО
Архитектура за обслужване, която разделя извода за големия езиков модел на две отделни фази – предварително попълване и декодиране – и ги изпълнява на различни групи GPU.
Чуйте това ръководствоAI-разказан · ~2 min
It matters because these two phases have opposite hardware appetites, and forcing them onto the same machines wastes capacity and hurts latency.
Когато LLM отговори, той работи на два етапа. Prefill чете цялата подкана наведнъж и изгражда кеша за ключ-стойност (KV); това е голям, паралелен, обвързан с изчисления импулс, който насища математическите единици на GPU. След това Decode генерира токени един по един, като всяка стъпка чете целия KV кеш - обвързано с честотната лента на паметта, леко изчислено изтичане. Изпълнявайки се заедно, дългото предварително попълване спира декодирането на всички (блокиране на началната линия), а групирането на двете създава смущения. Дезагрегирането поставя предварително попълване на един GPU пул и декодиране на друг, прехвърляйки KV кеша между тях през бързи връзки като NVLink или InfiniBand. Всеки пул се настройва и мащабира независимо, подобрявайки добрата производителност, изглаждайки латентността на опашката и позволявайки на операторите да постигат едновременно кратки цели за време до първи токен и време за изходен токен.
Асистентът за чат насочва подкани за дълги документи към натоварен с изчисления клъстер за предварително попълване, след което предава поточно отговори от оптимизиран за памет клъстер за декодиране, за да поддържа плавно забавяне при въвеждане.
NVIDIA Dynamo и vLLM позволяват на операторите да разположат отделни работни групи за предварително попълване и декодиране, така че поредица от дълги подкани да не замразява текущите поколения.
Mooncake (използван от Kimi от Moonshot AI) дезагрегира предварително попълване и декодиране и добавя разпределен KV-кеш пул, за да намали излишното бързо преизчисляване в мащаб.
Услуга за завършване на код отделя малък пул за предварително попълване за кратки подкани и голям пул за декодиране, тъй като повечето разходи идват от поточно предаване на много изходни токени.
Очаквайте дезагрегацията да стане стандартна в производствените стекове. Системи като DistServe, Splitwise и Mooncake го популяризираха, а vLLM и NVIDIA Dynamo сега доставят дезагрегирани режими. Изследванията настояват за оптимизиране на прехвърляне на KV-кеш, обединяване на кеша и повторно използване в заявки, динамично повторно балансиране на съотношенията за предварително попълване/декодиране при променящ се трафик и по-тясна интеграция с кеширане на префикс и предварително попълване на парчета. Тъй като контекстните прозорци нарастват до милиони токени, разделянето на тези фази става все по-съществено за рентабилно обслужване с ниска латентност.
Безплатен бюлетин
Три проверени AI истории всяка делнична сутрин, написани на достъпен език. Безплатно завинаги, без реклами.
Един имейл всеки делничен ден. Отписване с едно кликване. Никога не продаваме и не споделяме вашия имейл адрес.
Тествайте себе си
Незабавна обратна връзка за всеки отговор и сертификат за споделяне с подлежащ на проверка идентификационен номер, след като преминете курс.
Подкрепете безплатното AI образование. AI Understanding е 501(c)(3) с нестопанска цел — без реклами, без платен достъп, никога. Направете дарение
Архитектура за обслужване, която разделя извода за големия езиков модел на две отделни фази – предварително попълване и декодиране – и ги изпълнява на различни групи GPU. Има значение, защото тези две фази имат противоположни хардуерни апетити и принуждаването им към едни и същи машини губи капацитет и вреди на латентността.
Prefill обработва паралелно цялата подкана и насища изчисленията, докато декодирането чете KV кеша на всяка стъпка и е ограничено от честотната лента на паметта – противоположни желания, които оправдават отделни, независимо настроени пулове.
Prefill изгражда KV кеша за подканата; decode се нуждае от този кеш, за да продължи да генерира, така че кешът се изпраща през бърза връзка към пула за декодиране.
На споделени графични процесори дълъг пакет от предварително запълване може да блокира текущите стъпки за декодиране; разделянето им предотвратява тази намеса и стабилизира латентността на опашката.
Prefill обработва всички подкани заедно, така че по-големите партиди захранват добре тензорните ядра; decode генерира един токен наведнъж и се управлява от паметта, така че се мащабира по различен начин.
Необходими са връзки с висока честотна лента и ниска латентност като NVLink (вътрешен възел) и InfiniBand (между възел), така че прехвърлянето на KV-кеша да не се превърне в новото пречка.
Продължавай да учиш
Още ръководства, избрани за тази тема
СледваСледващо ръководство
KServe и обслужване на модели в Kubernetes
технически