{"id":490474,"date":"2026-08-10T19:15:53","date_gmt":"2026-08-10T19:15:53","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=490474"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=490474","title":{"rendered":"\u0422\u043e\u043f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 NLP \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b LLM, \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041d\u0430 NLP\/LLM \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043e\u0432, \u043d\u043e \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 GPT-like \u043c\u043e\u0434\u0435\u043b\u0438: \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 LLM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 decoder-only \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u0447\u0435\u043c LLaMA \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e Transformer, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b RoPE, RMSNorm, SwiGLU \u0438 GQA. \u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0435\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c.<\/p>\n<blockquote>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 &#8212; \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u043c LLM \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u0438 \u0441\u0445\u0435\u043c\u0430\u043c\u0438. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043b\u0435\u043a\u0446\u0438\u044f \u0441 \u043d\u0443\u043b\u044f, \u0430 \u0442\u0440\u0435\u043d\u0430\u0436\u0451\u0440 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e: \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c, \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430\u0445.<\/p>\n<\/blockquote>\n<p>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:<\/p>\n<ul>\n<li>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b LLM \u0438 \u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/p>\n<ul>\n<li>\n<p>Pre-Norm, RMSNorm<\/p>\n<\/li>\n<li>\n<p>SwiGLU, MoE<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0434\u043e\u0440\u043e\u0433\u043e\u0439<\/p>\n<ul>\n<li>\n<p>compute \/ memory bound<\/p>\n<\/li>\n<li>\n<p>prefill, decode stage<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430<\/p>\n<ul>\n<li>\n<p>kv-cache, paged attention<\/p>\n<\/li>\n<li>\n<p>continuous batching, speculative decoding<\/p>\n<\/li>\n<li>\n<p>\u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u0441\u043e\u0431\u0435\u0441\u043e\u0432 <\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0435\u0440\u0438\u0438<\/summary>\n<div class=\"spoiler__content\">\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/1019194\/\" rel=\"noopener noreferrer nofollow\">\u0422\u043e\u043f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e\u00a0\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0434\u043b\u044f\u00a0ML \u0438 Data Science \u0441\u043e\u0431\u0435\u0441\u043e\u0432:\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0430\u043b\u0433\u0435\u0431\u0440\u0430 \u0438 \u043c\u0430\u0442\u0430\u043d<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/926398\/\" rel=\"noopener noreferrer nofollow\">classic ML: \u043e\u0441\u043d\u043e\u0432\u044b \u043c\u043b,\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0438\u0438<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/955636\/\" rel=\"noopener noreferrer nofollow\">classic ML: \u0414\u0435\u0440\u0435\u0432\u044c\u044f \u0438 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u0438, \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/972178\/\" rel=\"noopener noreferrer nofollow\">NLP: \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b \u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/1044418\/\" rel=\"noopener noreferrer nofollow\">NLP: GPT, \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 LLM<\/a><\/p>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/1044420\/\" rel=\"noopener noreferrer nofollow\">NLP: LLM \u0438 Alignment<\/a><\/p>\n<p>NLP: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b LLM, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u00a0<em>[\u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c]<\/em><\/p>\n<p>NLP: LLM \u0438 \u0430\u0433\u0435\u043d\u0442\u044b\u00a0<em>[Soon\u2026 Stay fine\u2011tuned\u2026]<\/em><\/p>\n<p><a href=\"https:\/\/nlp:%20LLM,%20RAG%20%D0%B8%20%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%8B%20%5BSoon%E2%80%A6%20Stay%20fine-tuned%E2%80%A6%5D\/\" rel=\"noopener noreferrer nofollow\">NLP: LLM \u0438 RAG<\/a><\/p>\n<\/div>\n<\/details>\n<h3>\u041a\u0430\u043a\u0438\u0435 LLM \u0431\u044b\u0432\u0430\u044e\u0442?<\/h3>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 LLM &#8212; \u044d\u0442\u043e decoder-only \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0438\u0445 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439: GPT, LLaMA, Mistral, Qwen, Gemma \u0438 \u0434\u0440.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/92f\/fd6\/1ac\/92ffd61ac19270619c2bac506b17a587.png\" alt=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 LLM\" title=\"\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 LLM\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/92f\/fd6\/1ac\/92ffd61ac19270619c2bac506b17a587.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/92f\/fd6\/1ac\/92ffd61ac19270619c2bac506b17a587.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 LLM<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 (\u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0436\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430) \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c:<\/p>\n<ul>\n<li>\n<p><strong>\u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c<\/strong><\/p>\n<ul>\n<li>\n<p>\u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0441\u043b\u0443\u0436\u0431\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f llm \u043f\u043e api \u0438\u0437-\u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c open-source \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>LLM \u0431\u044b\u0432\u0430\u044e\u0442 \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043e\u0442\u0435\u043d \u043c\u043b\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043e \u0441\u043e\u0442\u0435\u043d \u043c\u043b\u0440\u0434. \u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043d\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443.<\/p>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438<\/summary>\n<div class=\"spoiler__content\">\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0420\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/th>\n<th>\n<p align=\"left\">FP16\/BF16 \u0432\u0435\u0441\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">INT8 \u0432\u0435\u0441\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">1B<\/p>\n<\/td>\n<td>\n<p align=\"left\">~2 GB<\/p>\n<\/td>\n<td>\n<p align=\"left\">~1 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">7B<\/p>\n<\/td>\n<td>\n<p align=\"left\">~14 GB<\/p>\n<\/td>\n<td>\n<p align=\"left\">~7 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">13B<\/p>\n<\/td>\n<td>\n<p align=\"left\">~26 GB<\/p>\n<\/td>\n<td>\n<p align=\"left\">~13 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">30B<\/p>\n<\/td>\n<td>\n<p align=\"left\">~60 GB<\/p>\n<\/td>\n<td>\n<p align=\"left\">~30 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">70B<\/p>\n<\/td>\n<td>\n<p align=\"left\">~140 GB<\/p>\n<\/td>\n<td>\n<p align=\"left\">~70 GB<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<\/details>\n<ul>\n<li>\n<p><strong>\u0434\u0435\u0442\u0430\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/strong> (\u0440\u0430\u0441\u043a\u0440\u043e\u0435\u043c \u043d\u0438\u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435)<\/p>\n<ul>\n<li>\n<p>Dense \u0438\u043b\u0438 MoE<\/p>\n<\/li>\n<li>\n<p>\u0442\u0438\u043f attention<\/p>\n<\/li>\n<li>\n<p>\u0442\u0438\u043f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p>\u0442\u0438\u043f positional encoding<\/p>\n<\/li>\n<li>\n<p>\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 MLP<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \/ \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c LLM. \u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\/\u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440.<\/p>\n<ul>\n<li>\n<p><strong>\u0434\u043b\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430<\/strong><\/p>\n<ul>\n<li>\n<p>\u0423 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 4k, 8k, 32k, 128k \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u0432\u0430\u0436\u043d\u0430:<\/p>\n<ul>\n<li>\n<p>\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e: \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0431\u0435\u0437 \u043d\u0430\u0440\u0435\u0437\u043a\u0438 \u043d\u0430 \u0447\u0430\u043d\u043a\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0438 \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430<\/p>\n<\/li>\n<li>\n<p>\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c: \u0441 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0441\u0442\u0435\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e \u0438\u0437-\u0437\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/strong><\/p>\n<ul>\n<li>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e, \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043d\u0430 \u0444\u043e\u0442\u043e, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439<\/p>\n<\/li>\n<li>\n<p>\u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: vision encoder, projection layer, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0432 LLM<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/strong><\/p>\n<ul>\n<li>\n<p>\u043a\u043e\u0434<\/p>\n<\/li>\n<li>\n<p>\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u0449\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<li>\n<p>\u0441\u0438\u043b\u0430 \u0430\u043b\u0430\u0439\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \/ \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f<\/strong><\/p>\n<ul>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \/ \u0442\u0438\u043f\u0430 \u0437\u0430\u0434\u0430\u0447<\/p>\n<\/li>\n<li>\n<p>\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 \u0440\u0435\u0441\u0435\u0440\u0447<\/p>\n<\/li>\n<li>\n<p>\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \/ \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0441\u043e\u0432<\/strong> (\u0440\u0430\u0441\u043a\u0440\u043e\u0435\u043c \u043d\u0438\u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435)<\/p>\n<ul>\n<li>\n<p>\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u0442\u0440\u0435\u0439\u0434 \u043e\u0444\u0444 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u0427\u0435\u043c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e Transformer?<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0433\u0440\u0443\u0431\u043e \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e:<\/p>\n<ul>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>Pre-Norm \u0432\u043c\u0435\u0441\u0442\u043e Post-Norm<\/p>\n<\/li>\n<li>\n<p>RMSNorm \u0432\u043c\u0435\u0441\u0442\u043e LayerNorm<\/p>\n<\/li>\n<li>\n<p>SwiGLU \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 gated FFN \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e ReLU\/GELU FFN<\/p>\n<\/li>\n<li>\n<p>RoPE \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>MQA\/GQA \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e Multi-Head Attention<\/p>\n<\/li>\n<li>\n<p>\u0438\u043d\u043e\u0433\u0434\u0430 MoE \u0432\u043c\u0435\u0441\u0442\u043e dense FFN<\/p>\n<\/li>\n<li>\n<p>\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 inference<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440, \u043d\u043e \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441.<\/p>\n<p>\u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e: \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043e\u0449\u043d\u044b\u0445 GPU.<\/p>\n<\/blockquote>\n<h3>\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Pre-Norm \u0438 \u0447\u0435\u043c \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 Post-Norm?<\/h3>\n<ul>\n<li>\n<p>Post-Norm<\/p>\n<\/li>\n<\/ul>\n<p>\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438 residual connection<\/p>\n<ul>\n<li>\n<p>Pre-Norm<\/p>\n<\/li>\n<\/ul>\n<p>\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bea\/d28\/069\/bead28069bb4db2ffd170c29f0395253.png\" alt=\"Pre VS Post Norm\" title=\"Pre VS Post Norm\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/bea\/d28\/069\/bead28069bb4db2ffd170c29f0395253.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/bea\/d28\/069\/bead28069bb4db2ffd170c29f0395253.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Pre VS Post Norm<\/figcaption><\/div>\n<\/figure>\n<p>Pre-Norm \u0447\u0430\u0441\u0442\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043e\u0432. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0443 \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 residual path, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0435\u0435.<\/p>\n<h3>\u0427\u0435\u043c RMSNorm \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 LayerNorm?<\/h3>\n<p>LayerNorm \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 hidden state \u0447\u0435\u0440\u0435\u0437 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u044e:<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"LayerNorm(x) = \\gamma \\frac{x - \\mu}{\\sqrt{\\sigma^2 + \\epsilon}} + \\beta\" alt=\"LayerNorm(x) = \\gamma \\frac{x - \\mu}{\\sqrt{\\sigma^2 + \\epsilon}} + \\beta\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/bd\/bd4\/bd4c67cfb61a781710c3104b980065f8.svg\" width=\"258\" height=\"41\" data-width=\"32.269\" data-height=\"5.156\" data-vertical-align=\"-2.012\" style=\"width: 32.269ex; height: 5.156ex; vertical-align: -2.012ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/bd\/bd4\/bd4c67cfb61a781710c3104b980065f8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/bd\/bd4\/bd4c67cfb61a781710c3104b980065f8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>RMSNorm \u043d\u0435 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0435, \u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0440\u0435\u043d\u044c \u0438\u0437 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432:<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"RMSNorm(x) = \\gamma \\frac{x}{\\sqrt{\\frac{1}{d}\\sum_{i=1}^{d}x_i^2 + \\epsilon}}\" alt=\"RMSNorm(x) = \\gamma \\frac{x}{\\sqrt{\\frac{1}{d}\\sum_{i=1}^{d}x_i^2 + \\epsilon}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6b\/6be\/6be71ca3145a2edbdfef1cd86e14cf83.svg\" width=\"288\" height=\"53\" data-width=\"35.991\" data-height=\"6.647\" data-vertical-align=\"-2.758\" style=\"width: 35.991ex; height: 6.647ex; vertical-align: -2.758ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6b\/6be\/6be71ca3145a2edbdfef1cd86e14cf83.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6b\/6be\/6be71ca3145a2edbdfef1cd86e14cf83.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"d\" alt=\"d\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/82\/827\/8277e0910d750195b448797616e091ad.svg\" width=\"12\" height=\"13\" data-width=\"1.176\" data-height=\"1.593\" data-vertical-align=\"-0.023\" style=\"width: 1.176ex; height: 1.593ex; vertical-align: -0.023ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/82\/827\/8277e0910d750195b448797616e091ad.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/82\/827\/8277e0910d750195b448797616e091ad.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c hidden state<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"x_i\" alt=\"x_i\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1b\/1ba\/1ba8aaab47179b3d3e24b0ccea9f4e30.svg\" width=\"16\" height=\"12\" data-width=\"2.034\" data-height=\"1.357\" data-vertical-align=\"-0.357\" style=\"width: 2.034ex; height: 1.357ex; vertical-align: -0.357ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1b\/1ba\/1ba8aaab47179b3d3e24b0ccea9f4e30.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/1b\/1ba\/1ba8aaab47179b3d3e24b0ccea9f4e30.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\u03b3\" alt=\"\u03b3\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b0\/b0e\/b0e5ed29efd576246de3282fa163293b.svg\" width=\"12\" height=\"12\" data-width=\"1.229\" data-height=\"1.486\" data-vertical-align=\"-0.489\" style=\"width: 1.229ex; height: 1.486ex; vertical-align: -0.489ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b0\/b0e\/b0e5ed29efd576246de3282fa163293b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b0\/b0e\/b0e5ed29efd576246de3282fa163293b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0439 scale<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\u03b5\" alt=\"\u03b5\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a0\/a06\/a06c34952043eb8035c521bac955bdcc.svg\" width=\"12\" height=\"12\" data-width=\"1.054\" data-height=\"1.072\" data-vertical-align=\"-0.05\" style=\"width: 1.054ex; height: 1.072ex; vertical-align: -0.05ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a0\/a06\/a06c34952043eb8035c521bac955bdcc.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a0\/a06\/a06c34952043eb8035c521bac955bdcc.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<\/ul>\n<p>LayerNorm \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440, \u0430 RMSNorm \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u043e \u0434\u043b\u0438\u043d\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86a\/b4b\/06c\/86ab4b06c976982a8c5cf3c2e44055b3.jpeg\" alt=\"Layer VS RMS Norm\" title=\"Layer VS RMS Norm\" width=\"1672\" height=\"741\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/86a\/b4b\/06c\/86ab4b06c976982a8c5cf3c2e44055b3.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86a\/b4b\/06c\/86ab4b06c976982a8c5cf3c2e44055b3.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Layer VS RMS Norm<\/figcaption><\/div>\n<\/figure>\n<p>RMSNorm \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 LLM, \u0433\u0434\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435, \u0434\u0430\u0436\u0435 \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SwiGLU \u0438 \u0437\u0430\u0447\u0435\u043c \u0432 LLM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 gated-\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438?<\/h3>\n<p>\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c, &#171;\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c&#187; MLP 2 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u044f \u0438 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, gelu \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043a\u043e\u0434\u0435<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">import torchfrom torch import nnimport torch.nn.functional as Fclass StandardFFN(nn.Module):    def __init__(self, d_model: int, d_ff: int) -&gt; None:        super().__init__()        self.up_proj = nn.Linear(d_model, d_ff, bias=False)        self.down_proj = nn.Linear(d_ff, d_model, bias=False)    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:        hidden = self.up_proj(x)        hidden = F.gelu(hidden)        output = self.down_proj(hidden)        return output<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<p>\u0412 gated \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f\u0445 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0432\u0435\u0442\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438<\/p>\n<\/li>\n<li>\n<p>\u0432\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a gate \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 &#8212; SwiGLU<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"SwiGLU(x) = Swish(W_1x) \\odot W_2x\" alt=\"SwiGLU(x) = Swish(W_1x) \\odot W_2x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/73\/735\/735b4b0cb4ded3359fc165b4230282df.svg\" width=\"277\" height=\"18\" data-width=\"34.57\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 34.57ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/73\/735\/735b4b0cb4ded3359fc165b4230282df.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/73\/735\/735b4b0cb4ded3359fc165b4230282df.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Swish\" alt=\"Swish\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/27\/27a\/27a84eaeba1c4495b698a670d327959d.svg\" width=\"50\" height=\"13\" data-width=\"6.224\" data-height=\"1.645\" data-vertical-align=\"-0.05\" style=\"width: 6.224ex; height: 1.645ex; vertical-align: -0.05ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/27\/27a\/27a84eaeba1c4495b698a670d327959d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/27\/27a\/27a84eaeba1c4495b698a670d327959d.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0433\u043b\u0430\u0434\u043a\u0430\u044f \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438)<\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Swish = z \u22c5 \u03c3(z)\" alt=\"Swish = z \u22c5 \u03c3(z)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/85\/855\/85570dbd47c3a725f811fdf84873247a.svg\" width=\"128\" height=\"18\" data-width=\"16.032\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 16.032ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/85\/855\/85570dbd47c3a725f811fdf84873247a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/85\/855\/85570dbd47c3a725f811fdf84873247a.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0433\u0434\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"\u03c3\" alt=\"\u03c3\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/31\/312\/3122c41ebe889f745cb9bbe1c92165c3.svg\" width=\"12\" height=\"12\" data-width=\"1.292\" data-height=\"1\" data-vertical-align=\"-0.025\" style=\"width: 1.292ex; height: 1ex; vertical-align: -0.025ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/31\/312\/3122c41ebe889f745cb9bbe1c92165c3.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/31\/312\/3122c41ebe889f745cb9bbe1c92165c3.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0430<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\odot\" alt=\"\\odot\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/31\/319\/319d584a4a5166ee6c51f4b8348856ea.svg\" width=\"14\" height=\"18\" data-width=\"1.76\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 1.76ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/31\/319\/319d584a4a5166ee6c51f4b8348856ea.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/31\/319\/319d584a4a5166ee6c51f4b8348856ea.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 (\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u043a\u0430\u043a gate)<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"x\" alt=\"x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg\" width=\"12\" height=\"12\" data-width=\"1.294\" data-height=\"1.025\" data-vertical-align=\"-0.025\" style=\"width: 1.294ex; height: 1.025ex; vertical-align: -0.025ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u044f<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"W_i\" alt=\"W_i\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/54\/540\/540bdf656419f2a308d7ad1571c664a0.svg\" width=\"23\" height=\"15\" data-width=\"2.875\" data-height=\"1.902\" data-vertical-align=\"-0.357\" style=\"width: 2.875ex; height: 1.902ex; vertical-align: -0.357ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/54\/540\/540bdf656419f2a308d7ad1571c664a0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/54\/540\/540bdf656419f2a308d7ad1571c664a0.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0441\u043b\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043a\u043e\u0434\u0435<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"python\">class SwiGLUFFN(nn.Module):    def __init__(self, d_model: int, d_ff: int) -&gt; None:        super().__init__()        self.gate_proj = nn.Linear(d_model, d_ff, bias=False)        self.up_proj = nn.Linear(d_model, d_ff, bias=False)        self.down_proj = nn.Linear(d_ff, d_model, bias=False)    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:        gate = F.silu(self.gate_proj(x))        values = self.up_proj(x)        hidden = gate * values        output = self.down_proj(hidden)        return output<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<\/details>\n<blockquote>\n<p>Gated-\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 MLP-\u0431\u043b\u043e\u043a\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0442\u044c.<\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 FFN \u0431\u043b\u043e\u043a \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435. \u041d\u043e \u0435\u0441\u0442\u044c trade-off &#8212; gated FFN \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 FFN \u0441 ReLU \u0438\u043b\u0438 GELU, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e 2\u0445 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0435\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 gate linear \u0441\u043b\u043e\u0439.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7cb\/83a\/8be\/7cb83a8bee7892820ace609edafb0fbe.png\" alt=\"\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 FFN VS Gated FFN\" title=\"\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 FFN VS Gated FFN\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7cb\/83a\/8be\/7cb83a8bee7892820ace609edafb0fbe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7cb\/83a\/8be\/7cb83a8bee7892820ace609edafb0fbe.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 FFN VS Gated FFN<\/figcaption><\/div>\n<\/figure>\n<h4>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 MoE?<\/h4>\n<p>MoE: Mixture of Experts &#8212; \u044d\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430, \u0433\u0434\u0435 \u043c\u044b \u0447\u0430\u0441\u0442\u044c dense \u0441\u043b\u043e\u0451\u0432 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432. \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a FNN \u0431\u043b\u043e\u043a\u0430\u043c.<\/p>\n<p>\u0412 MoE \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e MLP \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 router (\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0441\u043b\u043e\u0439) \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<ul>\n<li>\n<p>\u0432\u0441\u0435\u0433\u043e \u0435\u0441\u0442\u044c 8 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f 2 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0440\u043e\u0443\u0442\u0435\u0440)<\/p>\n<\/li>\n<li>\n<p>\u0442\u043e\u043a\u0435\u043d \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f MoE \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432\u0432\u043e\u0434\u044f\u0442:<\/p>\n<ul>\n<li>\n<p>total parameters &#8212; \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>active parameters &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430<\/p>\n<\/li>\n<\/ul>\n<p>MoE \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e total parameters, \u043d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439.<\/p>\n<p>\u041d\u043e \u0443 MoE \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u043e\u0443\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u044b \u043f\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430\u043c. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0432 gpu \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0432\u0441\u044e \u043c\u043e\u0434\u0435\u043b\u044c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91d\/5ca\/f85\/91d5caf85347dfcf27fdf2c51b490048.png\" alt=\"FFN VS MoE\" title=\"FFN VS MoE\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/91d\/5ca\/f85\/91d5caf85347dfcf27fdf2c51b490048.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/91d\/5ca\/f85\/91d5caf85347dfcf27fdf2c51b490048.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>FFN VS MoE<\/figcaption><\/div>\n<\/figure>\n<h3>RoPE \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438, MHA vs MQA<\/h3>\n<p>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0432 <a href=\"https:\/\/habr.com\/ru\/articles\/972178\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445<\/a> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0432\u0441\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u00a0ML, NLP, LLM, \u043f\u043e\u0434\u043f\u0438\u0448\u0438\u0441\u044c \u043d\u0430\u00a0\u043c\u043e\u0438 \u0441\u043e\u0446. \u0441\u0435\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u0412\u00a0<a href=\"https:\/\/t.me\/rockaux\" rel=\"noopener noreferrer nofollow\">Telegram \u043a\u0430\u043d\u0430\u043b\u0435<\/a>\u00a0\u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u043e\u00a0ML \u0438 Data Science<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0<a href=\"https:\/\/www.youtube.com\/@abletobetable\" rel=\"noopener noreferrer nofollow\">\u042e\u0442\u0443\u0431 \u043a\u0430\u043d\u0430\u043b\u0435<\/a>\u00a0\u2014 \u0432\u0438\u0434\u0435\u043e\u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u00a0\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 (\u0438 \u043f\u043e\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0<a href=\"https:\/\/boosty.to\/lokis_alexandr\" rel=\"noopener noreferrer nofollow\">Boosty<\/a>\u00a0\u2014\u00a0\u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u00a0\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f\u00a0<a href=\"https:\/\/lokismentor.yonote.ru\/share\/1446665b-a492-4cdb-8d56-6a92c5234dc8\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u0440\u0442\u0430<\/a>\u00a0\u0441\u043e \u0432\u0441\u0435\u043c \u043c\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u0430\u0442 \u0441\u00a0\u043d\u0443\u043b\u044f \u0438\u043b\u0438\u00a0\u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0433\u0440\u0435\u0439\u0434\u0430 \u0432\u00a0ML\u00a0\u2014\u00a0<a href=\"https:\/\/t.me\/rockaux\/27\" rel=\"noopener noreferrer nofollow\">\u043c\u0435\u043d\u0442\u043e\u0440\u0441\u0442\u0432\u043e<\/a><\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0439?<\/h3>\n<p>\u0418\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c.<\/p>\n<ul>\n<li>\n<p>\u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0435\u0451 \u0441\u043b\u043e\u044f\u0445. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 GPU<\/p>\n<\/li>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0441\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f kv-\u043a\u044d\u0448 \u0434\u043b\u044f \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0415\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0431\u0430\u0442\u0447\u0435\u043c \u0438 \u0447\u0438\u0441\u043b\u043e\u043c \u0441\u043b\u043e\u0451\u0432 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0435\u0437 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e batching \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 GPU \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0442\u044c<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u044d\u0442\u0430\u043f\u044b\/\u0444\u0430\u0437\u044b \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0418\u0437 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0437 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM? \u0412 \u0447\u0435\u043c \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0435?<\/h3>\n<ul>\n<li>\n<p>prefill (compute-bound)<\/p>\n<\/li>\n<li>\n<p>decode (memory-bound)<\/p>\n<\/li>\n<\/ul>\n<p><strong>prefill<\/strong> &#8212; \u044d\u0442\u043e \u044d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 prompt \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0441\u0442\u0440\u043e\u0438\u0442 hidden states \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 kv-cache<\/p>\n<ul>\n<li>\n<p>\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044f\u0442\u0441\u044f \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>attention \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 prompt-\u0443<\/p>\n<\/li>\n<li>\n<p>\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u043b\u0438\u043d\u044b \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>bottleneck \u0431\u043b\u0438\u0436\u0435 \u043a compute-bound, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0442\u0447\u0430\u0445 \u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u043c\u043f\u0442\u0430\u0445<\/p>\n<\/li>\n<\/ul>\n<p><strong>decode<\/strong> &#8212; \u044d\u0442\u043e \u044d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0437\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u043c, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/p>\n<ul>\n<li>\n<p>\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e<\/p>\n<\/li>\n<li>\n<p>\u0437\u0430 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d<\/p>\n<\/li>\n<li>\n<p>\u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 kv-cache<\/p>\n<\/li>\n<li>\n<p>bottleneck \u0431\u043b\u0438\u0436\u0435 memory-bound, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0442\u0447\u0430\u0445<\/p>\n<\/li>\n<li>\n<p>latency \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0430\u0442\u0447\u0430, \u0434\u043b\u0438\u043d\u044b \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0434\u043b\u0438\u043d\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/110\/221\/d5b\/110221d5bd09e271ccebcabce09704e7.png\" alt=\"Prefill VS Decode stage\" title=\"Prefill VS Decode stage\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/110\/221\/d5b\/110221d5bd09e271ccebcabce09704e7.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/110\/221\/d5b\/110221d5bd09e271ccebcabce09704e7.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Prefill VS Decode stage<\/figcaption><\/div>\n<\/figure>\n<blockquote>\n<p>\u041d\u0430 prefill \u0444\u0430\u0437\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 GPU. \u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0447\u0430\u0441\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 compute throughput.<\/p>\n<p>\u041d\u0430 decode \u0444\u0430\u0437\u0435 \u0437\u0430 \u0448\u0430\u0433 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043e\u0434\u0438\u043d \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0435\u0441\u0430 \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u0451\u0432 \u0438 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0439 kv-cache. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 decode \u043f\u0440\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0431\u0430\u0442\u0447\u0435 \u0447\u0430\u0441\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e GPU \u043f\u0430\u043c\u044f\u0442\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f memory-bound.<\/p>\n<\/blockquote>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9ca\/f64\/89d\/9caf6489df6d145e6035503f478f23f6.png\" alt=\"\u0423\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430: \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\" title=\"\u0423\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430: \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/9ca\/f64\/89d\/9caf6489df6d145e6035503f478f23f6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9ca\/f64\/89d\/9caf6489df6d145e6035503f478f23f6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0423\u0437\u043a\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430: \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0447\u0442\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/figcaption><\/div>\n<\/figure>\n<p>Compute-bound \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f. \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u043d\u043e GPU \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043c\u0430\u0442\u0440\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438. (\u0434\u0430\u043d\u043d\u044b\u0435 \u0435\u0441\u0442\u044c &#8212; \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0437\u0430\u043d\u044f\u0442\u044b &#8212; \u0436\u0434\u0451\u043c compute)<\/p>\n<p>Memory-bound \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 GPU \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043d\u043e \u043e\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0435\u0442 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438. \u0423\u0437\u043a\u0438\u043c \u043c\u0435\u0441\u0442\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c HBM. (\u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b &#8212; \u0436\u0434\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u043f\u0430\u043c\u044f\u0442\u0438)<\/p>\n<h3>\u0427\u0435\u043c latency \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 throughput \u0432 LLM \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0435?<\/h3>\n<p>Latency &#8212; \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0436\u0434\u0451\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0447\u0430\u0442 \u0431\u043e\u0442\u0430\u0445 \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 3\u0445 \u0441\u0435\u043a\u0443\u043d\u0434. \u041e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u0431\u0430\u0442\u0447\u0430.<\/p>\n<p>Throughput &#8212; \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0443\u0441\u043f\u0435\u0442\u044c \u0437\u0430 \u043d\u043e\u0447\u044c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0431\u0430\u0442\u0447\u0435.<\/p>\n<p>\u0414\u043b\u044f LLM \u0442\u0430\u043a\u0436\u0435 \u0432\u0432\u043e\u0434\u044f\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0442\u0440\u0438\u043a:<\/p>\n<ul>\n<li>\n<p>TTFT &#8212; Time To First Token<br \/>\u042d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430.<br \/>\u0417\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 prefill \u0444\u0430\u0437\u044b.<\/p>\n<\/li>\n<li>\n<p>TPOT &#8212; Time Per Output Token<br \/>\u042d\u0442\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e.<br \/>\u0417\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 decode \u0444\u0430\u0437\u044b.<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7c6\/2e8\/01a\/7c62e801ac94f2a599a7005b83057570.png\" alt=\"\u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438\" title=\"\u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7c6\/2e8\/01a\/7c62e801ac94f2a599a7005b83057570.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7c6\/2e8\/01a\/7c62e801ac94f2a599a7005b83057570.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f LLM-\u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0438 \u0442\u043e, \u043d\u0430 \u043a\u0430\u043a\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u043b\u0438\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e40\/028\/da2\/e40028da2041cd0889f4947a231d8aea.png\" alt=\"\u041a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM\" title=\"\u041a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e40\/028\/da2\/e40028da2041cd0889f4947a231d8aea.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e40\/028\/da2\/e40028da2041cd0889f4947a231d8aea.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041a\u0430\u043a \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM<\/figcaption><\/div>\n<\/figure>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 fused kernels \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d\u0438 \u043d\u0443\u0436\u043d\u044b?<\/h3>\n<p>\u041d\u0430 GPU \u0435\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043f\u0430\u043c\u044f\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>HBM\/VRAM &#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c GPU, \u0433\u0434\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438, \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0438 kv-\u043a\u044d\u0448<\/p>\n<\/li>\n<li>\n<p>On-chip \u043f\u0430\u043c\u044f\u0442\u044c &#8212; \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f, \u043d\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 GPU, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 SRAM:<\/p>\n<ul>\n<li>\n<p>L2-\u043a\u044d\u0448 &#8212; \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u043e\u0431\u0449\u0430\u044f \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 GPU<\/p>\n<\/li>\n<li>\n<p>L1-\u043a\u044d\u0448 \u0438 shared memory &#8212; \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>registers &#8212; \u0441\u0430\u043c\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0442\u043e\u043a\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/54b\/b42\/9cd\/54bb429cd5062c355e1d55f3d6f7e41b.png\" alt=\"\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e GPU \u043f\u0430\u043c\u044f\u0442\u0438\" title=\"\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e GPU \u043f\u0430\u043c\u044f\u0442\u0438\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/54b\/b42\/9cd\/54bb429cd5062c355e1d55f3d6f7e41b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/54b\/b42\/9cd\/54bb429cd5062c355e1d55f3d6f7e41b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0423\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e GPU \u043f\u0430\u043c\u044f\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0442\u0430\u043a:<\/p>\n<ol>\n<li>\n<p>\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 HBM<\/p>\n<\/li>\n<li>\n<p>\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 HBM<\/p>\n<\/li>\n<li>\n<p>\u0441\u043d\u043e\u0432\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0438\u0437 HBM, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u043e, \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ol>\n<p>\u0423 \u043d\u0430\u0441 \u0442\u0443\u0442 \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u0439 \u0438 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0438\u0434\u0430\u043c\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 &#8212; \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0448\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 fused kernels, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u0435\u043b\u0430\u044e\u0442 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0442\u0435\u043d\u0438\u0439\/\u0437\u0430\u043f\u0438\u0441\u0435\u0439.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/946\/721\/059\/9467210594a61c02d92993fd87881788.png\" alt=\"fused kernel\" title=\"fused kernel\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/946\/721\/059\/9467210594a61c02d92993fd87881788.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/946\/721\/059\/9467210594a61c02d92993fd87881788.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>fused kernel<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 pytorch (<a href=\"https:\/\/pytorch.org\/tutorials\/intermediate\/torch_compile_tutorial.html\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/a>) \u0435\u0441\u0442\u044c torch.compile(model), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>Flash Attention (<a href=\"https:\/\/arxiv.org\/abs\/2205.14135\" rel=\"noopener noreferrer nofollow\">FA<\/a>, <a href=\"https:\/\/arxiv.org\/abs\/2307.08691\" rel=\"noopener noreferrer nofollow\">2nd version<\/a>, <a href=\"https:\/\/pytorch.org\/blog\/flashattention-3\/\" rel=\"noopener noreferrer nofollow\">3rd version<\/a>) &#8212; \u044d\u0442\u043e \u0442\u043e\u0436\u0435 fused kernel.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Flash Attention?<\/h3>\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 attention \u043c\u043e\u0436\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b \u0432 HBM. \u042d\u0442\u043e \u0434\u043e\u0440\u043e\u0433\u043e.<\/p>\n<p>Flash Attention \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 attention \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u0435\u043d\u044c\u0448\u0435 \u0433\u043e\u043d\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 HBM \u0438 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 GPU \u043f\u0430\u043c\u044f\u0442\u044c\u044e SRAM.<\/p>\n<p>\u0418\u0434\u0435\u044f:<\/p>\n<ul>\n<li>\n<p>\u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c <code>Q<\/code>, <code>K<\/code>, <code>V<\/code> \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 (tiling)<\/p>\n<\/li>\n<li>\n<p>\u0441\u0447\u0438\u0442\u0430\u0435\u043c attention \u043f\u043e \u0431\u043b\u043e\u043a\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u043d\u0443\u044e attention matrix \u0432 HBM<\/p>\n<\/li>\n<li>\n<p>\u0445\u0440\u0430\u043d\u0438\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0431\u044b\u0441\u0442\u0440\u043e\u0439 SRAM<\/p>\n<\/li>\n<li>\n<p>\u0441\u0447\u0438\u0442\u0430\u0435\u043c softmax \u0431\u043b\u043e\u0447\u043d\u043e, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c (softmax online trick)<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e7f\/476\/7f8\/e7f4767f8f35a7176e07ed75f002cce4.png\" alt=\"Flash Attention\" title=\"Flash Attention\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e7f\/476\/7f8\/e7f4767f8f35a7176e07ed75f002cce4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e7f\/476\/7f8\/e7f4767f8f35a7176e07ed75f002cce4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Flash Attention<\/figcaption><\/div>\n<\/figure>\n<blockquote>\n<p>\u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e Flash Attention &#8212; \u044d\u0442\u043e \u043d\u0435 \u043d\u043e\u0432\u044b\u0439 \u0442\u0438\u043f attention \u0438 \u043d\u0435 \u043d\u043e\u0432\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0438. \u042d\u0442\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u043e\u0433\u043e attention (\u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0439 \u043b\u0438\u0431\u043e \u043f\u043e\u0442\u0435\u0440\u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435), \u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0436\u0435\u043b\u0435\u0437\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c FA &#8212; \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0435\u0433\u043e.<\/p>\n<\/blockquote>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 kv-cache?<\/h3>\n<p>kv-cache &#8212; \u043e\u0434\u043d\u0430 \u0438\u0437 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0439 inference \u0434\u043b\u044f LLM.<\/p>\n<p>\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u043e\u043a\u0435\u043d\u0430 \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0437\u0430\u043d\u043e\u0432\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c k \u0438 v \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432. <\/p>\n<p>\u041d\u043e \u0432 self-attention \u0434\u043b\u044f \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 k \u0438 v \u043d\u0435 \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c.<\/p>\n<p><strong>kv-cache<\/strong> &#8212; \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 key \u0438 value \u0442\u0435\u043d\u0437\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 decode \u0448\u0430\u0433\u0430\u0445 \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0437\u0430\u043d\u043e\u0432\u043e.<\/p>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c decode \u0448\u0430\u0433\u0435 \u043c\u043e\u0434\u0435\u043b\u044c:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d<\/p>\n<\/li>\n<li>\n<p>\u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u043d\u043e\u0432\u044b\u0435 q, k, v<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 k, v \u0432 cache<\/p>\n<\/li>\n<li>\n<p>\u0441\u0447\u0438\u0442\u0430\u0435\u0442 attention, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f:<\/p>\n<ul>\n<li>\n<p>q &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438<\/p>\n<\/li>\n<li>\n<p>k &#8212; \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 + \u0438\u0437 \u043a\u044d\u0448\u0430 \u0431\u0435\u0440\u0435\u043c \u043f\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u0430\u043c<\/p>\n<\/li>\n<li>\n<p>v &#8212; \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 + \u0438\u0437 \u043a\u044d\u0448\u0430 \u0431\u0435\u0440\u0435\u043c \u043f\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u0430\u043c<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/013\/42d\/d37\/01342dd3702c29bff9c97f822946fc74.png\" alt=\"KV-cache\" title=\"KV-cache\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/013\/42d\/d37\/01342dd3702c29bff9c97f822946fc74.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/013\/42d\/d37\/01342dd3702c29bff9c97f822946fc74.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>KV-cache<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u043e \u0443 kv-cache \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 trade off \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u043e\u043b\u044c\u043a\u043e k, v, \u0447\u0442\u043e \u043d\u0435 \u043e\u0441\u0442\u0430\u043d\u0435\u0442\u0441\u044f GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0431\u0430\u0442\u0447, \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0442\u0434.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043a\u0430\u0442\u043a\u0438 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u0432\u0438\u0436\u043a\u0430 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430:<\/p>\n<ul>\n<li>\n<p>\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430<\/p>\n<\/li>\n<li>\n<p>\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439<\/p>\n<\/li>\n<li>\n<p>\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 batch<\/p>\n<\/li>\n<li>\n<p>\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c kv-cache<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u043b\u044e GPU \u043f\u0430\u043c\u044f\u0442\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u043f\u043e\u0434 kv-cache<\/p>\n<\/li>\n<\/ul>\n<p>\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 KV-cache:<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Memory_{KV} \\approx 2 \\cdot B \\cdot L \\cdot N_{layers} \\cdot N_{kv\\_heads} \\cdot d_{head} \\cdot bytes\" alt=\"Memory_{KV} \\approx 2 \\cdot B \\cdot L \\cdot N_{layers} \\cdot N_{kv\\_heads} \\cdot d_{head} \\cdot bytes\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/47\/47c\/47cf42105df4f4a1768dd1d93b55121d.svg\" width=\"426\" height=\"19\" data-width=\"53.257\" data-height=\"2.364\" data-vertical-align=\"-0.616\" style=\"width: 53.257ex; height: 2.364ex; vertical-align: -0.616ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/47\/47c\/47cf42105df4f4a1768dd1d93b55121d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/47\/47c\/47cf42105df4f4a1768dd1d93b55121d.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"2\" alt=\"2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c81\/c81e728d9d4c2f636f067f89cc14862c.svg\" width=\"12\" height=\"12\" data-width=\"1.131\" data-height=\"1.507\" style=\"width: 1.131ex; height: 1.507ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c81\/c81e728d9d4c2f636f067f89cc14862c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c8\/c81\/c81e728d9d4c2f636f067f89cc14862c.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0445\u0440\u0430\u043d\u0438\u043c \u0438 k, \u0438 v<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"B\" alt=\"B\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg\" width=\"14\" height=\"12\" data-width=\"1.717\" data-height=\"1.545\" style=\"width: 1.717ex; height: 1.545ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d5\/9d5ed678fe57bcca610140957afab571.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; batch size<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d2\/d20\/d20caec3b48a1eef164cb4ca81ba2587.svg\" width=\"12\" height=\"12\" data-width=\"1.541\" data-height=\"1.545\" style=\"width: 1.541ex; height: 1.545ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d2\/d20\/d20caec3b48a1eef164cb4ca81ba2587.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d2\/d20\/d20caec3b48a1eef164cb4ca81ba2587.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0434\u043b\u0438\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"N_{layers}\" alt=\"N_{layers}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0d\/0d6\/0d6617f8384e7f37e505d9b7edbb164a.svg\" width=\"51\" height=\"18\" data-width=\"6.329\" data-height=\"2.213\" data-vertical-align=\"-0.667\" style=\"width: 6.329ex; height: 2.213ex; vertical-align: -0.667ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0d\/0d6\/0d6617f8384e7f37e505d9b7edbb164a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0d\/0d6\/0d6617f8384e7f37e505d9b7edbb164a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0447\u0438\u0441\u043b\u043e \u0441\u043b\u043e\u0451\u0432<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"N_{kv_{heads}}\" alt=\"N_{kv_{heads}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/551\/55191ddebcdd1bf44b3b62173e5b1cdd.svg\" width=\"53\" height=\"17\" data-width=\"6.643\" data-height=\"2.137\" data-vertical-align=\"-0.592\" style=\"width: 6.643ex; height: 2.137ex; vertical-align: -0.592ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/551\/55191ddebcdd1bf44b3b62173e5b1cdd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/551\/55191ddebcdd1bf44b3b62173e5b1cdd.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0447\u0438\u0441\u043b\u043e KV-heads<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"d_{head}\" alt=\"d_{head}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/74\/74a\/74a3c240bbe125c947728625dc50aaa5.svg\" width=\"38\" height=\"15\" data-width=\"4.709\" data-height=\"1.927\" data-vertical-align=\"-0.357\" style=\"width: 4.709ex; height: 1.927ex; vertical-align: -0.357ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/74\/74a\/74a3c240bbe125c947728625dc50aaa5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/74\/74a\/74a3c240bbe125c947728625dc50aaa5.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u044b<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"bytes\" alt=\"bytes\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4b\/4b3\/4b3a6218bb3e3a7303e8a171a60fcf92.svg\" width=\"40\" height=\"16\" data-width=\"5.011\" data-height=\"2.034\" data-vertical-align=\"-0.464\" style=\"width: 5.011ex; height: 2.034ex; vertical-align: -0.464ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4b\/4b3\/4b3a6218bb3e3a7303e8a171a60fcf92.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4b\/4b3\/4b3a6218bb3e3a7303e8a171a60fcf92.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0447\u0438\u0441\u043b\u043e \u0431\u0430\u0439\u0442 \u043d\u0430 \u043e\u0434\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u0418\u0437 \u044d\u0442\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u044b \u0432\u0438\u0434\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 GQA \u0438 MQA \u0432\u0430\u0436\u043d\u044b &#8212; \u043e\u043d\u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"N_{kv_{heads}}\" alt=\"N_{kv_{heads}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/551\/55191ddebcdd1bf44b3b62173e5b1cdd.svg\" width=\"53\" height=\"17\" data-width=\"6.643\" data-height=\"2.137\" data-vertical-align=\"-0.592\" style=\"width: 6.643ex; height: 2.137ex; vertical-align: -0.592ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/551\/55191ddebcdd1bf44b3b62173e5b1cdd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/55\/551\/55191ddebcdd1bf44b3b62173e5b1cdd.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 PagedAttention?<\/h3>\n<p>kv-cache \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e, \u043d\u043e \u0438\u043c \u043d\u0443\u0436\u043d\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438, \u0441 \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u043e\u0439 \u043f\u0440\u043e\u043c\u043f\u0442\u0430 \u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u044c KV-cache \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u0430\u043c\u044f\u0442\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b:<\/p>\n<ul>\n<li>\n<p>\u043f\u0430\u043c\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0447\u0430\u0441\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0435\u0442<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u0441\u043b\u043e\u0436\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0442\u044c \u0438 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c, \u043a\u043e\u0433\u0434\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0438\u0441\u044c<\/p>\n<\/li>\n<\/ul>\n<p>Paged Attention \u0440\u0435\u0448\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 \u0438\u0434\u0435\u044e, \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<p>kv-cache \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0431\u043b\u043e\u043a\u0438, \u0438\u043b\u0438 \u201c\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b\u201d. \u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0435\u0441\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e kv-cache, \u043d\u043e \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u043b\u043e\u043a\u0438 GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<p>Paged Attention \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u043b\u0443\u0447\u0448\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b<\/p>\n<\/li>\n<li>\n<p>\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u043f\u043e\u0442\u0435\u0440\u0438 \u043f\u0430\u043c\u044f\u0442\u0438<\/p>\n<\/li>\n<li>\n<p>\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GPU \u043f\u0430\u043c\u044f\u0442\u044c, \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0434\u0435\u043b\u044f\u0442\u044c \u0438 \u0432\u044b\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0442\u044c \u0435\u0435<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0432\u044b\u0448\u0430\u0442\u044c throughput<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c continuous batching<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/66a\/021\/779\/66a021779ce38e329f6f33e456685e89.png\" alt=\"paged-attention scheme\" title=\"paged-attention scheme\" width=\"1663\" height=\"946\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/66a\/021\/779\/66a021779ce38e329f6f33e456685e89.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/66a\/021\/779\/66a021779ce38e329f6f33e456685e89.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>paged-attention scheme<\/figcaption><\/div>\n<\/figure>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 continuous batching?<\/h3>\n<p>\u0412 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c ML \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0435 \u0431\u0430\u0442\u0447\u0438\u043d\u0433 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0430\u043a\u043e\u043f\u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0431\u0430\u0442\u0447, \u043f\u0440\u043e\u0433\u043d\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c, \u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u043e\u0442\u0432\u0435\u0442\u044b.<\/p>\n<p>\u0414\u043b\u044f LLM \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0445\u0443\u0436\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u0442\u043e\u043a\u0435\u043d \u0437\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u043c, \u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0430\u0442\u0447 \u0438 \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u043d\u0451\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0442\u0441\u044f, GPU \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u041a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0437\u0430\u043a\u043e\u043d\u0447\u0430\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435, \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445, \u0447\u0430\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0421 continuous batching \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u0431\u0430\u0442\u0447. \u041c\u043e\u0436\u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0432 \u0440\u0430\u0431\u043e\u0442\u0443, \u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0432\u0448\u0438\u0435\u0441\u044f &#8212; \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u0438\u0437 \u0431\u0430\u0442\u0447\u0430 \u043f\u0440\u044f\u043c\u043e \u0432\u043e \u0432\u0440\u0435\u043c\u044f decode \u0444\u0430\u0437\u044b.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u043e \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u043d\u0443\u0436\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c kv-cache<\/p>\n<\/li>\n<li>\n<p>\u043d\u0443\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<li>\n<p>\u043d\u0443\u0436\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0431\u0430\u0442\u0447 \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u044d\u0442\u043e \u0434\u0430\u0451\u0442:<\/p>\n<ul>\n<li>\n<p>\u0432\u044b\u0448\u0435 \u0443\u0442\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044e GPU, \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>\u0432\u044b\u0448\u0435 throughput<\/p>\n<\/li>\n<li>\n<p>\u043b\u0443\u0447\u0448\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d0b\/585\/b3f\/d0b585b3f696f7c694a73ff89ce7660a.png\" alt=\"continuous batching\" title=\"continuous batching\" width=\"1693\" height=\"929\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d0b\/585\/b3f\/d0b585b3f696f7c694a73ff89ce7660a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d0b\/585\/b3f\/d0b585b3f696f7c694a73ff89ce7660a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>continuous batching<\/figcaption><\/div>\n<\/figure>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 speculative decoding?<\/h3>\n<p>Speculative decoding \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0437\u0430 \u0441\u0447\u0451\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 draft \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0418\u0434\u0435\u044f:<\/p>\n<ul>\n<li>\n<p>\u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0431\u044b\u0441\u0442\u0440\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432<\/p>\n<ul>\n<li>\n<p>\u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e, \u0442\u043e\u043a\u0435\u043d \u0437\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u043c, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u044d\u0442\u0438 \u0442\u043e\u043a\u0435\u043d\u044b<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0447\u0435\u0440\u043d\u043e\u0432\u0438\u043a, \u043e\u0434\u043d\u0438\u043c forward pass \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043b\u043e\u0433\u0438\u0442\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u044e\u0442\u0441\u044f \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432<\/p>\n<ul>\n<li>\n<p>\u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0447\u0435\u0440\u0435\u0437 rejection sampling<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0435\u0442 &#8212; \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0434\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f, \u0430 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0441\u0435\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u043c \u0443\u0436\u0435 \u0438\u0437 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u0437\u0430 \u0442\u043e\u043a\u0435\u043d\u043e\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u0430 \u043d\u0443\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0434\u043d\u0438\u043c \u0444\u043e\u0440\u0432\u0430\u0440\u0434\u043e\u043c \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u043e\u0442 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0414\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0442\u043e\u043a\u0435\u043d\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c\u0441\u044f \u0438 \u043d\u0443\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e &#8212; \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 (\u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u0434\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438, \u043d\u043e \u0438\u0434\u0435\u044f \u0442\u0430\u043a\u0430\u044f).<\/p>\n<p>\u041f\u0440\u043e\u0441\u0430\u0434\u043a\u0438 \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d06\/11d\/88c\/d0611d88c1c83e3053575d086079aa9d.png\" alt=\"speculative decoding\" title=\"speculative decoding\" width=\"1692\" height=\"930\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d06\/11d\/88c\/d0611d88c1c83e3053575d086079aa9d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d06\/11d\/88c\/d0611d88c1c83e3053575d086079aa9d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>speculative decoding<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u043f\u0435\u043a\u0443\u043b\u044f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0434\u0435\u043a\u043e\u0434\u0438\u043d\u0433\u0430:<\/p>\n<ul>\n<li>\n<p>\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 decoding heads, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, Medusa \u0438\u043b\u0438 MTP<\/p>\n<\/li>\n<li>\n<p> feature-level drafter, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, EAGLE<\/p>\n<\/li>\n<li>\n<p> lightweight MLP speculator<\/p>\n<\/li>\n<li>\n<p> parallel draft methods, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, PARD<\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u0430\u043a\u0430\u044f \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0441\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438?<\/h3>\n<p>\u0412\u0435\u0441\u0430 LLM \u043c\u043e\u0433\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432 FP32, FP16, BF16, FP8 \u0438 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0431\u0438\u0442\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445. \u0427\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0431\u0438\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0442\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0437 HBM. \u041f\u0440\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043d\u0430 GPU \u044d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0424\u043e\u0440\u043c\u0430\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0411\u0438\u0442<\/p>\n<\/th>\n<th data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">\u0417\u043d\u0430\u043a<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u042d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0442\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041c\u0430\u043d\u0442\u0438\u0441\u0441\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0430\u043c\u044f\u0442\u044c  GPU \u043f\u043e\u0434 \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 1B<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">FP32<\/p>\n<\/td>\n<td>\n<p align=\"left\">32<\/p>\n<\/td>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">23<\/p>\n<\/td>\n<td>\n<p align=\"left\">~4 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">FP16<\/p>\n<\/td>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">10<\/p>\n<\/td>\n<td>\n<p align=\"left\">~2 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">BF16<\/p>\n<\/td>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">7<\/p>\n<\/td>\n<td>\n<p align=\"left\">~2 GB<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">FP8<\/p>\n<p align=\"left\">E4M3 \/ E5M2<\/p>\n<\/td>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"123\" width=\"123\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td>\n<p align=\"left\">4\/5<\/p>\n<\/td>\n<td>\n<p align=\"left\">3\/2<\/p>\n<\/td>\n<td>\n<p align=\"left\">~1 GB<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u042d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0430 \u043c\u0430\u043d\u0442\u0438\u0441\u0441\u0430 &#8212; \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c \u0431\u043b\u0438\u0437\u043a\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 \u0432\u0435\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u0433\u0440\u0443\u0431\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"Memory_{GB} \\approx \\frac{N_{params} \\cdot bits_{per\\_param}}{8 \\cdot 10^9}\" alt=\"Memory_{GB} \\approx \\frac{N_{params} \\cdot bits_{per\\_param}}{8 \\cdot 10^9}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/19\/190\/190f755532ea5887a6d2732891cd79ff.svg\" width=\"287\" height=\"41\" data-width=\"35.841\" data-height=\"5.175\" data-vertical-align=\"-2.022\" style=\"width: 35.841ex; height: 5.175ex; vertical-align: -2.022ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/19\/190\/190f755532ea5887a6d2732891cd79ff.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/19\/190\/190f755532ea5887a6d2732891cd79ff.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>FP16 \u0438 BF16 \u043f\u0440\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443:<\/p>\n<ul>\n<li>\n<p>FP16 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u0443\u044e \u043c\u0430\u043d\u0442\u0438\u0441\u0441\u0443, \u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0438\u0439 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d. \u0421\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438, \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u044b \u0438\u043b\u0438 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0438\u0442\u044c\u0441\u044f \u0434\u043e inf, \u0430 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0435 &#8212; \u043e\u043a\u0440\u0443\u0433\u043b\u0438\u0442\u044c\u0441\u044f \u0434\u043e \u043d\u0443\u043b\u044f. \u041f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 inf \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a NaN.<\/p>\n<\/li>\n<li>\n<p>BF16 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 8 \u0431\u0438\u0442 \u044d\u043a\u0441\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043a\u0430\u043a FP32, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 LLM. \u041d\u043e \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0430\u043d\u0442\u0438\u0441\u0441\u044b.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044f?<\/h3>\n<p>\u041a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044f &#8212; \u044d\u0442\u043e \u043f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b \u0443 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u0435\u0441\u0430 \u0432 FP32 \u0438\u043b\u0438 FP16\/BF16, \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435: INT8, INT4, FP8, NF4 \u0438 \u0434\u0440.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c:<\/p>\n<ul>\n<li>\n<p>\u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 GPU<\/p>\n<\/li>\n<li>\n<p>\u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c latency \u0438\/\u0438\u043b\u0438 throughput<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u044d\u0442\u043e trade off \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e \/ \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<ul>\n<li>\n<p>\u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0441\u0430 (weight-only quantization)<\/p>\n<\/li>\n<\/ul>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0439 \u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u0435\u0441\u0430 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f. \u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c, \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432 fp32\/fp16\/bf16.<\/p>\n<ul>\n<li>\n<p>\u0432\u0435\u0441\u0430 + \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043b\u0438\u0431\u0440\u043e\u0432\u043a\u0430.<\/p>\n<ul>\n<li>\n<p>kv-cache<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a kv-cache \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u0438\u043c\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438 \u0434\u043b\u0438\u043d\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0438 \u0431\u043e\u043b\u044c\u0448\u043e\u043c batch size, \u0435\u0433\u043e \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438:<\/p>\n<ul>\n<li>\n<p>Post-Training Quantization &#8212; \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043a \u0443\u0436\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0438 \u043f\u0440\u043e\u0449\u0435<\/p>\n<\/li>\n<li>\n<p>Quantization-Aware Training &#8212; \u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0438\u043b\u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0434\u043e\u0440\u043e\u0436\u0435, \u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043b\u0443\u0447\u0448\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u0438 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e\u043c \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>\u0412\u0430\u0436\u043d\u043e, \u0447\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438, \u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0432 \u044d\u0442\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438, kernel-\u043e\u0432 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432.<\/p>\n<\/blockquote>\n<h3>\u041a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438)?<\/h3>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ul>\n<li>\n<p>\u043f\u0443\u0441\u0442\u044c \u0435\u0441\u0442\u044c \u0432\u0435\u0441\u0430<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"x = [-2.5,-1.2,\\ 0,\\ 0.8,\\ 3.0]\" alt=\"x = [-2.5,-1.2,\\ 0,\\ 0.8,\\ 3.0]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/13\/13d\/13d34475e364be3c9ed6cb69ef5a6bf7.svg\" width=\"220\" height=\"18\" data-width=\"27.507\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 27.507ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/13\/13d\/13d34475e364be3c9ed6cb69ef5a6bf7.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/1\/13\/13d\/13d34475e364be3c9ed6cb69ef5a6bf7.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p>\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0432 INT8, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"q \\in [-127,\\ 127]\" alt=\"q \\in [-127,\\ 127]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f1\/f1b\/f1bef703da436cf2da55fcedce3bfd63.svg\" width=\"121\" height=\"18\" data-width=\"15.184\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 15.184ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f1\/f1b\/f1bef703da436cf2da55fcedce3bfd63.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f1\/f1b\/f1bef703da436cf2da55fcedce3bfd63.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p>\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c scale \u0444\u0430\u043a\u0442\u043e\u0440 (\u0434\u0435\u043b\u0438\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043d\u0430 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430):<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"s = \\frac{\\alpha}{2^{b-1} - 1}=\\frac{3}{127}\" alt=\"s = \\frac{\\alpha}{2^{b-1} - 1}=\\frac{3}{127}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/03\/034\/034efe14df817958421cda27b312ccae.svg\" width=\"163\" height=\"39\" data-width=\"20.427\" data-height=\"4.893\" data-vertical-align=\"-1.881\" style=\"width: 20.427ex; height: 4.893ex; vertical-align: -1.881ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/03\/034\/034efe14df817958421cda27b312ccae.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/03\/034\/034efe14df817958421cda27b312ccae.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p>\u041a\u0432\u0430\u043d\u0442\u0443\u0435\u043c (\u0434\u0435\u043b\u0438\u043c \u043d\u0430 scale \u0438 \u043e\u043a\u0440\u0443\u0433\u043b\u044f\u0435\u043c):<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"q = round \\left( \\frac{x}{s} \\right)= [-106,\\ -51,\\ 0,\\ 34,\\ 127]\" alt=\"q = round \\left( \\frac{x}{s} \\right)= [-106,\\ -51,\\ 0,\\ 34,\\ 127]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6f\/6fd\/6fd5d17b76b25065d784b3c1d8f5cfe8.svg\" width=\"343\" height=\"33\" data-width=\"42.902\" data-height=\"4.175\" data-vertical-align=\"-1.522\" style=\"width: 42.902ex; height: 4.175ex; vertical-align: -1.522ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6f\/6fd\/6fd5d17b76b25065d784b3c1d8f5cfe8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/6f\/6fd\/6fd5d17b76b25065d784b3c1d8f5cfe8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430\u0434\u043e \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 (\u0443\u043c\u043d\u043e\u0436\u0430\u0435\u043c \u043d\u0430 scale):<\/p>\n<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\hat{x} = s \\cdot q = [-2.5039370078740157, -1.204724409448819, 0.0, 0.8031496062992126, 3.0]\" alt=\"\\hat{x} = s \\cdot q = [-2.5039370078740157, -1.204724409448819, 0.0, 0.8031496062992126, 3.0]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/06\/061\/061de63a8f720fca9accc8a612749a79.svg\" width=\"673\" height=\"19\" data-width=\"84.098\" data-height=\"2.398\" data-vertical-align=\"-0.633\" style=\"width: 84.098ex; height: 2.398ex; vertical-align: -0.633ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/06\/061\/061de63a8f720fca9accc8a612749a79.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/06\/061\/061de63a8f720fca9accc8a612749a79.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"x\" alt=\"x\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg\" width=\"12\" height=\"12\" data-width=\"1.294\" data-height=\"1.025\" data-vertical-align=\"-0.025\" style=\"width: 1.294ex; height: 1.025ex; vertical-align: -0.025ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9dd\/9dd4e461268c8034f5c8564e155c67a6.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 float-\u044b<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\u03b1 = \\max_i |x_i|\" alt=\"\u03b1 = \\max_i |x_i|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d9\/9d90ebd53b4bc59a3bf0973dd9e3694e.svg\" width=\"99\" height=\"27\" data-width=\"12.344\" data-height=\"3.401\" data-vertical-align=\"-1.135\" style=\"width: 12.344ex; height: 3.401ex; vertical-align: -1.135ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d9\/9d90ebd53b4bc59a3bf0973dd9e3694e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9d\/9d9\/9d90ebd53b4bc59a3bf0973dd9e3694e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"b\" alt=\"b\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/92\/92e\/92eb5ffee6ae2fec3ad71c777531578f.svg\" width=\"12\" height=\"13\" data-width=\"0.971\" data-height=\"1.595\" data-vertical-align=\"-0.025\" style=\"width: 0.971ex; height: 1.595ex; vertical-align: -0.025ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/92\/92e\/92eb5ffee6ae2fec3ad71c777531578f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/92\/92e\/92eb5ffee6ae2fec3ad71c777531578f.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0447\u0438\u0441\u043b\u043e \u0431\u0438\u0442<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"s\" alt=\"s\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/03\/03c\/03c7c0ace395d80182db07ae2c30f034.svg\" width=\"12\" height=\"12\" data-width=\"1.061\" data-height=\"1.023\" data-vertical-align=\"-0.023\" style=\"width: 1.061ex; height: 1.023ex; vertical-align: -0.023ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/03\/03c\/03c7c0ace395d80182db07ae2c30f034.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/03\/03c\/03c7c0ace395d80182db07ae2c30f034.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; scale \u0444\u0430\u043a\u0442\u043e\u0440<\/p>\n<\/li>\n<li>\n<p><code>q<\/code> &#8212; \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0446\u0435\u043b\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\hat{x}\" alt=\"\\hat{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2a\/2a9\/2a95aaaf954c2187999c6357b04a58dd.svg\" width=\"12\" height=\"19\" data-width=\"1.294\" data-height=\"2.398\" data-vertical-align=\"-0.633\" style=\"width: 1.294ex; height: 2.398ex; vertical-align: -0.633ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2a\/2a9\/2a95aaaf954c2187999c6357b04a58dd.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2a\/2a9\/2a95aaaf954c2187999c6357b04a58dd.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442:<\/p>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"error = x - \\hat{x}\" alt=\"error = x - \\hat{x}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/57\/576\/576fc7b346650ac49a4959d025b7afb8.svg\" width=\"109\" height=\"19\" data-width=\"13.584\" data-height=\"2.398\" data-vertical-align=\"-0.633\" style=\"width: 13.584ex; height: 2.398ex; vertical-align: -0.633ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/57\/576\/576fc7b346650ac49a4959d025b7afb8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/57\/576\/576fc7b346650ac49a4959d025b7afb8.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0427\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0431\u0438\u0442, \u0442\u0435\u043c \u0433\u0440\u0443\u0431\u0435\u0435 \u0441\u0435\u0442\u043a\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0438 \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0440\u0438\u0441\u043a \u043f\u043e\u0442\u0435\u0440\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/22d\/511\/8e9\/22d5118e9e7b36c2377bd9206d520dc6.png\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/22d\/511\/8e9\/22d5118e9e7b36c2377bd9206d520dc6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/22d\/511\/8e9\/22d5118e9e7b36c2377bd9206d520dc6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u044b \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u0433\u0440\u0435\u0448\u043d\u043e\u0441\u0442\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u043d \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442 \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0432\u0435\u0441\u043e\u0432 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0443\u043b\u044f. \u0415\u0441\u0442\u044c \u0430\u0441\u0441\u0438\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u0430\u044f \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0442\u0430\u043c \u0432\u0432\u043e\u0434\u0438\u043c \u0435\u0449\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 <code>zero_point<\/code>.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 &#8212; \u0432\u044b\u0431\u0440\u043e\u0441\u044b (outlier): \u043e\u0434\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0438\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0441\u0430 \u043a\u0432\u0430\u043d\u0442\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0433\u0440\u0443\u0431\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e scale \u043d\u0430 \u0432\u0435\u0441\u044c \u0442\u0435\u043d\u0437\u043e\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 scale \u043d\u0430 \u043a\u0430\u043d\u0430\u043b \u0438\u043b\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 \u0432\u0435\u0441\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e 32\u2013128 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0427\u0435\u043c \u043c\u0435\u043d\u044c\u0448\u0435 \u0433\u0440\u0443\u043f\u043f\u0430, \u0442\u0435\u043c \u0442\u043e\u0447\u043d\u0435\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f scale, \u043d\u043e \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 kernel.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 knowledge distillation?<\/h3>\n<p>Knowledge distillation &#8212; \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043c\u0435\u043d\u044c\u0448\u0443\u044e.<\/p>\n<p>\u0411\u043e\u043b\u044c\u0448\u0430\u044f teacher \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u044b, logits \u0438\u043b\u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439, \u0430 \u043c\u0435\u043d\u044c\u0448\u0430\u044f student \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u044d\u0442\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>hard labels<\/p>\n<\/li>\n<\/ul>\n<p>Teacher \u0432\u044b\u0434\u0430\u0451\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441, \u0438 student \u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435. \u042d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0435 \u043e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<ul>\n<li>\n<p>soft labels<\/p>\n<\/li>\n<\/ul>\n<p>Student \u0443\u0447\u0438\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435, \u043d\u043e \u0438 \u043d\u0430 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 teacher \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044f KL-\u0434\u0438\u0432\u0435\u0440\u0433\u0435\u043d\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c\u0438. \u0421\u0438\u0433\u043d\u0430\u043b \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0447\u0438\u0442\u0435\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435, \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043b\u0443\u0447\u0448\u0435.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c72\/ee9\/43b\/c72ee943bbadca3ea94000ca8853d8f0.png\" alt=\"\u041e\u0442\u043b\u0438\u0447\u0438\u0435 hard \u043e\u0442 soft label \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u0438\" title=\"\u041e\u0442\u043b\u0438\u0447\u0438\u0435 hard \u043e\u0442 soft label \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u0438\" width=\"1672\" height=\"941\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c72\/ee9\/43b\/c72ee943bbadca3ea94000ca8853d8f0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c72\/ee9\/43b\/c72ee943bbadca3ea94000ca8853d8f0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041e\u0442\u043b\u0438\u0447\u0438\u0435 hard \u043e\u0442 soft label \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, teacher \u0441\u0447\u0438\u0442\u0430\u0435\u0442 logits \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e. \u041f\u043e\u0441\u043b\u0435 softmax \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>p_T(y \\mid x)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>Student \u0432\u044b\u0434\u0430\u0451\u0442 \u0441\u0432\u043e\u0451 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435:<\/p>\n<pre><code>p_S(y \\mid x)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u043c\u043e\u0436\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c KL-divergence:<\/p>\n<pre><code>D_{KL}(p_T || p_S) = \\sum_y p_T(y \\mid x) \\log \\frac{p_T(y \\mid x)}{p_S(y \\mid x)}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<blockquote>\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u0438 &#8212; <a href=\"https:\/\/huggingface.co\/distilbert\/distilbert-base-uncased\" rel=\"noopener noreferrer nofollow\">DistilBERT<\/a>, \u0433\u0434\u0435 \u0431\u043e\u043b\u044c\u0448\u0430\u044f <a href=\"https:\/\/huggingface.co\/google-bert\/bert-base-uncased\" rel=\"noopener noreferrer nofollow\">BERT-base<\/a> \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 teacher-\u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u0430\u044f \u0448\u0435\u0441\u0442\u0438\u0441\u043b\u043e\u0439\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c &#8212; student. \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0435\u0434\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f student \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u0441\u043a\u0440\u044b\u0442\u044b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f teacher-\u043c\u043e\u0434\u0435\u043b\u0438. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 DistilBERT \u0441\u0442\u0430\u043b \u043d\u0430 40% \u043c\u0435\u043d\u044c\u0448\u0435 \u0438 \u043d\u0430 60% \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0432 \u043e\u043a\u043e\u043b\u043e 97% \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 BERT. <a href=\"https:\/\/arxiv.org\/abs\/1910.01108\" rel=\"noopener noreferrer nofollow\">paper<\/a><\/p>\n<p>\u0410 \u0435\u0449\u0435 \u0438\u0437-\u0437\u0430 \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u043f\u043e\u0440\u044b \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 LLM: \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u044b \u0447\u0443\u0436\u043e\u0439 \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u043a \u0441\u0438\u043d\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0439)))<\/p>\n<\/blockquote>\n<h3>\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u0441\u043e\u0431\u0435\u0441\u043e\u0432<\/h3>\n<details class=\"spoiler\">\n<summary>\u0412\u043e\u043f\u0440\u043e\u0441\u044b, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0442<\/summary>\n<div class=\"spoiler__content\">\n<h4>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 LLM<\/h4>\n<ol>\n<li>\n<p>\u041f\u043e \u043a\u0430\u043a\u0438\u043c \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 LLM \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c Transformer?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0435\u043c Pre-Norm \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 Post-Norm?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 Pre-Norm \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435 \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0435\u043c RMSNorm \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 LayerNorm?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 RMSNorm \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0449\u0435 LayerNorm?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SwiGLU \u0438 \u0437\u0430\u0447\u0435\u043c \u0432 LLM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 gated-\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Mixture of Experts \u0438 \u043a\u0430\u043a\u0443\u044e \u0440\u043e\u043b\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 router?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0435\u043c total parameters \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 active parameters \u0432 MoE?<\/p>\n<\/li>\n<\/ol>\n<h4>GPU \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/h4>\n<ol start=\"9\">\n<li>\n<p>\u041a\u0430\u043a\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043f\u0430\u043c\u044f\u0442\u0438 \u0435\u0441\u0442\u044c \u0432 GPU?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0447\u0442\u0435\u043d\u0438\u0435 \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 HBM \u043c\u043e\u0433\u0443\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 kernel fusion \u0438 \u0437\u0430\u0447\u0435\u043c \u043e\u043d \u043d\u0443\u0436\u0435\u043d?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a fused kernels \u0432\u043b\u0438\u044f\u044e\u0442 \u043d\u0430 latency \u0438 throughput?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 FlashAttention?<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u043d\u044f\u0435\u0442 \u043b\u0438 FlashAttention \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0443 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 attention?<\/p>\n<\/li>\n<\/ol>\n<h4>\u0418\u043d\u0444\u0435\u0440\u0435\u043d\u0441 \u0438 KV-\u043a\u044d\u0448<\/h4>\n<ol start=\"19\">\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 GPU-\u043f\u0430\u043c\u044f\u0442\u0438?<\/p>\n<\/li>\n<li>\n<p>\u0418\u0437 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0437 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0435\u043c prefill \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 decode?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 prefill \u0447\u0430\u0441\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f compute-bound?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 decode \u0447\u0430\u0441\u0442\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f memory-bound?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 KV-\u043a\u044d\u0448 \u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u044b \u0432 \u043d\u0451\u043c \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 KV-\u043a\u044d\u0448 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u0443\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e?<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442 \u043a\u0430\u043a\u0438\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 KV-\u043a\u044d\u0448\u0430?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 PagedAttention?<\/p>\n<\/li>\n<\/ol>\n<h4>Batching \u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438<\/h4>\n<ol start=\"30\">\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 continuous batching \u0438 \u0447\u0435\u043c \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e batching?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u044e\u0442 batching LLM?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0435\u043c latency \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 throughput?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 TTFT \u0438 TPOT?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u0430\u0442\u0447\u0430 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 latency \u0438 throughput?<\/p>\n<\/li>\n<\/ol>\n<h4>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438<\/h4>\n<ol start=\"35\">\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 speculative decoding \u0438 \u043a\u0430\u043a \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 draft \u0438 target \u043c\u043e\u0434\u0435\u043b\u0438?<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442 \u0447\u0435\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 speculative decoding?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044f?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a\u0438\u0435 \u0447\u0430\u0441\u0442\u0438 LLM \u043c\u043e\u0436\u043d\u043e \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u043e\u0432\u0430\u0442\u044c?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441?<\/p>\n<\/li>\n<li>\n<p>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 knowledge distillation \u0438 \u0447\u0435\u043c hard labels \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 soft labels?<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/details>\n<h3>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h3>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/yandexdataschool\/nlp_course\/tree\/2024\/week10_efficiency\" rel=\"noopener noreferrer nofollow\">\u043a\u0443\u0440\u0441 \u0428\u0410\u0414\u0430<\/a><\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0430\u0442\u044c\u0438 \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 <a href=\"https:\/\/habr.com\/ru\/companies\/yandex\/articles\/801119\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437<\/a> \u0438 <a href=\"https:\/\/habr.com\/ru\/companies\/yandex\/articles\/878230\/\" rel=\"noopener noreferrer nofollow\">\u0434\u0432\u0430<\/a><\/p>\n<\/li>\n<li>\n<p>\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 <a href=\"https:\/\/horace.io\/brrr_intro.html\" rel=\"noopener noreferrer nofollow\">\u0431\u043b\u043e\u0433\u043f\u043e\u0441\u0442<\/a> \u043f\u0440\u043e fused kernel<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/newsletter.maartengrootendorst.com\/p\/a-visual-guide-to-quantization\" rel=\"noopener noreferrer nofollow\">\u0431\u043b\u043e\u0433\u043f\u043e\u0441\u0442<\/a> \u043f\u043e \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/teletype.in\/@abletobetable\/gpu_operations_and_memory\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u044f \u043a\u043e\u043d\u0441\u043f\u0435\u043a\u0442 &#8212; \u0432\u0438\u0434\u044b \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u044c\u044e GPU<\/a><\/p>\n<\/li>\n<li>\n<p>peft, lora \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e <a href=\"https:\/\/habr.com\/ru\/articles\/791966\/\" rel=\"noopener noreferrer nofollow\">\u0440\u0430\u0437<\/a> \u0438 <a href=\"https:\/\/www.youtube.com\/watch?v=t509sv5MT0w\" rel=\"noopener noreferrer nofollow\">\u0434\u0432\u0430<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.vllm.ai\/en\/latest\/getting_started\/quickstart\/\" rel=\"noopener noreferrer nofollow\">\u0413\u0430\u0439\u0434 \u043f\u043e vLLM<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u00a0ML, NLP, LLM, \u043f\u043e\u0434\u043f\u0438\u0448\u0438\u0441\u044c \u043d\u0430\u00a0\u043c\u043e\u0438 \u0441\u043e\u0446. \u0441\u0435\u0442\u0438:<\/p>\n<ul>\n<li>\n<p>\u0412\u00a0<a href=\"https:\/\/t.me\/rockaux\" rel=\"noopener noreferrer nofollow\">Telegram \u043a\u0430\u043d\u0430\u043b\u0435<\/a>\u00a0\u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u043e\u00a0ML \u0438 Data Science<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0<a href=\"https:\/\/www.youtube.com\/@abletobetable\" rel=\"noopener noreferrer nofollow\">\u042e\u0442\u0443\u0431 \u043a\u0430\u043d\u0430\u043b\u0435<\/a>\u00a0\u2014 \u0432\u0438\u0434\u0435\u043e\u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u00a0\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 (\u0438 \u043f\u043e\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435)<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u00a0<a href=\"https:\/\/boosty.to\/lokis_alexandr\" rel=\"noopener noreferrer nofollow\">Boosty<\/a>\u00a0\u2014\u00a0\u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u00a0\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u043d\u0430\u044f\u00a0<a href=\"https:\/\/lokismentor.yonote.ru\/share\/1446665b-a492-4cdb-8d56-6a92c5234dc8\" rel=\"noopener noreferrer nofollow\">\u043a\u0430\u0440\u0442\u0430<\/a>\u00a0\u0441\u043e \u0432\u0441\u0435\u043c \u043c\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u0430\u0442 \u0441\u00a0\u043d\u0443\u043b\u044f \u0438\u043b\u0438\u00a0\u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0433\u0440\u0435\u0439\u0434\u0430 \u0432\u00a0ML\u00a0\u2014\u00a0<a href=\"https:\/\/t.me\/rockaux\/27\" rel=\"noopener noreferrer nofollow\">\u043c\u0435\u043d\u0442\u043e\u0440\u0441\u0442\u0432\u043e<\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1068944\/\">https:\/\/habr.com\/ru\/articles\/1068944\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041d\u0430 NLP\/LLM \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043e\u0432, \u043d\u043e \u0438 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 GPT-like \u043c\u043e\u0434\u0435\u043b\u0438: \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 LLM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 decoder-only \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u0447\u0435\u043c LLaMA \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e Transformer, \u0437\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u043d\u044b RoPE, RMSNorm, SwiGLU \u0438 GQA. \u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0438 \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e\u0442 \u0435\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0442\u044c.\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 &#8212; \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u043f\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u043c LLM \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u043c\u0438 \u0438 \u0441\u0445\u0435\u043c\u0430\u043c\u0438. \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0430\u044f \u043b\u0435\u043a\u0446\u0438\u044f \u0441 \u043d\u0443\u043b\u044f, \u0430 \u0442\u0440\u0435\u043d\u0430\u0436\u0451\u0440 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e: \u043f\u0440\u043e\u0439\u0442\u0438\u0441\u044c \u043f\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f\u043c, \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0442\u0438\u043f\u043e\u0432\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430\u0445.\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435:\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b LLM \u0438 \u0438\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438Pre-Norm, RMSNormSwiGLU, MoE\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0434\u043e\u0440\u043e\u0433\u043e\u0439compute \/ memory boundprefill, decode stage\u0421\u043f\u043e\u0441\u043e\u0431\u044b \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430kv-cache, paged attentioncontinuous batching, speculative decoding\u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0434\u0438\u0441\u0442\u0438\u043b\u043b\u044f\u0446\u0438\u044f\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u0441\u043e\u0431\u0435\u0441\u043e\u0432 \u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b\u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0435\u0440\u0438\u0438\u0422\u043e\u043f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e\u00a0\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435 \u0434\u043b\u044f\u00a0ML \u0438 Data Science \u0441\u043e\u0431\u0435\u0441\u043e\u0432:\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0430\u043b\u0433\u0435\u0431\u0440\u0430 \u0438 \u043c\u0430\u0442\u0430\u043dclassic ML: \u043e\u0441\u043d\u043e\u0432\u044b \u043c\u043b,\u00a0\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0433\u0440\u0435\u0441\u0438\u0438classic ML: \u0414\u0435\u0440\u0435\u0432\u044c\u044f \u0438 \u0430\u043d\u0441\u0430\u043c\u0431\u043b\u0438, \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044f, \u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438NLP: \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b \u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435NLP: GPT, \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 LLMNLP: LLM \u0438 AlignmentNLP: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b LLM, \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u00a0[\u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c]NLP: LLM \u0438 \u0430\u0433\u0435\u043d\u0442\u044b\u00a0[Soon\u2026 Stay fine\u2011tuned\u2026]NLP: LLM \u0438 RAG\u041a\u0430\u043a\u0438\u0435 LLM \u0431\u044b\u0432\u0430\u044e\u0442?\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 LLM &#8212; \u044d\u0442\u043e decoder-only \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u044b. \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0438\u0445 \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439: GPT, LLaMA, Mistral, Qwen, Gemma \u0438 \u0434\u0440.\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 LLM\u041e\u043d\u0438 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 (\u0438 \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043e\u0442 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e \u0436\u0435 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430) \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c:\u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0440\u0438\u0435\u0442\u0430\u0440\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c\u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u0445 \u0441\u043b\u0443\u0436\u0431\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f llm \u043f\u043e api \u0438\u0437-\u0437\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 &#8212; \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c open-source \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432LLM \u0431\u044b\u0432\u0430\u044e\u0442 \u0432 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u0445 \u043e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u043e\u0442\u0435\u043d \u043c\u043b\u043d \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043e \u0441\u043e\u0442\u0435\u043d \u043c\u043b\u0440\u0434. \u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043d\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0435\u0442\u044c \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u043a \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443.\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0434 \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438\u0420\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0434\u0435\u043b\u0438FP16\/BF16 \u0432\u0435\u0441\u0430INT8 \u0432\u0435\u0441\u04301B~2 GB~1 GB7B~14 GB~7 GB13B~26 GB~13 GB30B~60 GB~30 GB70B~140 GB~70 GB\u0434\u0435\u0442\u0430\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b (\u0440\u0430\u0441\u043a\u0440\u043e\u0435\u043c \u043d\u0438\u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435)Dense \u0438\u043b\u0438 MoE\u0442\u0438\u043f attention\u0442\u0438\u043f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0438\u043f positional encoding\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 MLP\u042d\u0442\u043e \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \/ \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c LLM. \u041c\u043d\u043e\u0433\u0438\u0435 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\/\u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0444\u043e\u043c\u0430\u043d\u0441 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440.\u0434\u043b\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0433\u043e \u043e\u043a\u043d\u0430\u0423 \u0432\u0441\u0435\u0445 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 \u0435\u0441\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0434\u043b\u0438\u043d\u0443 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 4k, 8k, 32k, 128k \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u0431\u043e\u043b\u044c\u0448\u0435.\u0414\u043b\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u0430 \u0432\u0430\u0436\u043d\u0430:\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e: \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c \u0434\u043b\u0438\u043d\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0431\u0435\u0437 \u043d\u0430\u0440\u0435\u0437\u043a\u0438 \u043d\u0430 \u0447\u0430\u043d\u043a\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0438 \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430\u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c: \u0441 \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0440\u0430\u0441\u0442\u0435\u0442 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u043e \u0438\u0437-\u0437\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u043e\u0434\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043f\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e, \u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043d\u0430 \u0444\u043e\u0442\u043e, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439\u042d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432: vision encoder, projection layer, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u0432 LLM\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f\u043a\u043e\u0434\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430\u043e\u0431\u0449\u0438\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438\u0441\u0438\u043b\u0430 \u0430\u043b\u0430\u0439\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \/ \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c\u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \/ \u0442\u0438\u043f\u0430 \u0437\u0430\u0434\u0430\u0447\u0438\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434 \u0440\u0435\u0441\u0435\u0440\u0447\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \/ \u0447\u0438\u0441\u043b\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u0435\u0441\u043e\u0432 (\u0440\u0430\u0441\u043a\u0440\u043e\u0435\u043c \u043d\u0438\u0436\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435)\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0438 &#8212; \u044d\u0442\u043e \u0442\u0440\u0435\u0439\u0434 \u043e\u0444\u0444 \u043c\u0435\u0436\u0434\u0443 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c\u0427\u0435\u043c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e Transformer?\u0415\u0441\u043b\u0438 \u0433\u0440\u0443\u0431\u043e \u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u043e:\u0411\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432Pre-Norm \u0432\u043c\u0435\u0441\u0442\u043e Post-NormRMSNorm \u0432\u043c\u0435\u0441\u0442\u043e LayerNormSwiGLU \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 gated FFN \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e ReLU\/GELU FFNRoPE \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432MQA\/GQA \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0433\u043e Multi-Head Attention\u0438\u043d\u043e\u0433\u0434\u0430 MoE \u0432\u043c\u0435\u0441\u0442\u043e dense FFN\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043e\u0434 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 inference\u0422\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM &#8212; \u044d\u0442\u043e \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0435 \u0442\u043e\u0442 \u0436\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440, \u043d\u043e \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441.\u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e: \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043e\u0449\u043d\u044b\u0445 GPU.\u0417\u0430\u0447\u0435\u043c \u043d\u0443\u0436\u0435\u043d Pre-Norm \u0438 \u0447\u0435\u043c \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 Post-Norm?Post-Norm\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0438 residual connectionPre-Norm\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044fPre VS Post NormPre-Norm \u0447\u0430\u0441\u0442\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0435\u0435 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0445 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043e\u0432. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0443 \u043f\u0440\u043e\u0449\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 residual path, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u0435\u0435.\u0427\u0435\u043c RMSNorm \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 LayerNorm?LayerNorm \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 hidden state \u0447\u0435\u0440\u0435\u0437 \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438 \u0434\u0438\u0441\u043f\u0435\u0440\u0441\u0438\u044e:RMSNorm \u043d\u0435 \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u0442 \u0441\u0440\u0435\u0434\u043d\u0435\u0435, \u0430 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0440\u0435\u043d\u044c \u0438\u0437 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432:\u0413\u0434\u0435: &#8212; \u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c hidden state &#8212; \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 &#8212; \u043e\u0431\u0443\u0447\u0430\u0435\u043c\u044b\u0439 scale &#8212; \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0430 \u0434\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438LayerNorm \u0446\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440, \u0430 RMSNorm \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0435\u0433\u043e \u043f\u043e \u0434\u043b\u0438\u043d\u0435.Layer VS RMS NormRMSNorm \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 LLM, \u0433\u0434\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0431\u043b\u043e\u043a\u0435 \u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435, \u0434\u0430\u0436\u0435 \u0442\u0430\u043a\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435.\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 SwiGLU \u0438 \u0437\u0430\u0447\u0435\u043c \u0432 LLM \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 gated-\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438?\u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c, &#171;\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u043c&#187; MLP 2 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u044f \u0438 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0441\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, gelu \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043a\u043e\u0434\u0435import torchfrom torch import nnimport torch.nn.functional as Fclass StandardFFN(nn.Module):    def __init__(self, d_model: int, d_ff: int) -&gt; None:        super().__init__()        self.up_proj = nn.Linear(d_model, d_ff, bias=False)        self.down_proj = nn.Linear(d_ff, d_model, bias=False)    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:        hidden = self.up_proj(x)        hidden = F.gelu(hidden)        output = self.down_proj(hidden)        return output\u0412 gated \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f\u0445 \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0434\u0432\u0435 \u0432\u0435\u0442\u043a\u0438:\u043e\u0434\u043d\u0430 \u0432\u0435\u0442\u043a\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438\u0432\u0442\u043e\u0440\u0430\u044f \u0432\u0435\u0442\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a gate \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0435\u043c, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435\u041e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 &#8212; SwiGLU\u0413\u0434\u0435: &#8212; \u0433\u043b\u0430\u0434\u043a\u0430\u044f \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f (\u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438), \u0433\u0434\u0435  &#8212; \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0430 &#8212; \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 (\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u0442 \u0438\u0445 \u043a\u0430\u043a gate) &#8212; \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u044f &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432 \u0441\u043b\u043e\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 \u043a\u043e\u0434\u0435class SwiGLUFFN(nn.Module):    def __init__(self, d_model: int, d_ff: int) -&gt; None:        super().__init__()        self.gate_proj = nn.Linear(d_model, d_ff, bias=False)        self.up_proj = nn.Linear(d_model, d_ff, bias=False)        self.down_proj = nn.Linear(d_ff, d_model, bias=False)    def forward(self, x: torch.Tensor) -&gt; torch.Tensor:        gate = F.silu(self.gate_proj(x))        values = self.up_proj(x)        hidden = gate * values        output = self.down_proj(hidden)        return outputGated-\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 MLP-\u0431\u043b\u043e\u043a\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u0430 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0442\u044c.\u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 FFN \u0431\u043b\u043e\u043a \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0435\u0435. \u041d\u043e \u0435\u0441\u0442\u044c trade-off &#8212; gated FFN \u043e\u0431\u044b\u0447\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 FFN \u0441 ReLU \u0438\u043b\u0438 GELU, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e 2\u0445 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0435\u0432 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 gate linear \u0441\u043b\u043e\u0439.\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u044b\u0439 FFN VS Gated FFN\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 MoE?MoE: Mixture of Experts &#8212; \u044d\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430, \u0433\u0434\u0435 \u043c\u044b \u0447\u0430\u0441\u0442\u044c dense \u0441\u043b\u043e\u0451\u0432 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432. \u041e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u043a FNN \u0431\u043b\u043e\u043a\u0430\u043c.\u0412 MoE \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0434\u043d\u043e\u0433\u043e MLP \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 router (\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u0441\u043b\u043e\u0439) \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c.\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:\u0432\u0441\u0435\u0433\u043e \u0435\u0441\u0442\u044c 8 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f 2 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430 (\u0447\u0435\u0440\u0435\u0437 \u0440\u043e\u0443\u0442\u0435\u0440)\u0442\u043e\u043a\u0435\u043d \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u0432 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c \u0440\u043e\u0443\u0442\u0435\u0440\u0430\u0414\u043b\u044f MoE \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432\u0432\u043e\u0434\u044f\u0442:total parameters &#8212; \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438active parameters &#8212; \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430MoE \u043c\u043e\u0434\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e total parameters, \u043d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u044d\u0442\u043e \u0434\u0430\u0435\u0442 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439.\u041d\u043e \u0443 MoE \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u043e\u0443\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u044b \u043f\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430\u043c. \u0410 \u0442\u0430\u043a\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0432 gpu \u043f\u0430\u043c\u044f\u0442\u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0432\u0441\u044e \u043c\u043e\u0434\u0435\u043b\u044c.FFN VS MoERoPE \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438, MHA vs MQA\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u043e \u0432\u0441\u0435\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043e\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430.\u0422\u0430\u043a\u0436\u0435 \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u044b\u0445\u043e\u0434 \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u00a0ML, NLP, LLM, \u043f\u043e\u0434\u043f\u0438\u0448\u0438\u0441\u044c \u043d\u0430\u00a0\u043c\u043e\u0438 \u0441\u043e\u0446. \u0441\u0435\u0442\u0438:\u0412\u00a0Telegram \u043a\u0430\u043d\u0430\u043b\u0435\u00a0\u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043f\u043e\u00a0ML \u0438 Data Science\u041d\u0430\u00a0\u042e\u0442\u0443\u0431 \u043a\u0430\u043d\u0430\u043b\u0435\u00a0\u2014 \u0432\u0438\u0434\u0435\u043e\u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0441\u00a0\u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 (\u0438 \u043f\u043e\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435)\u041d\u0430\u00a0Boosty\u00a0\u2014\u00a0\u0440\u0430\u0437\u0431\u043e\u0440\u044b \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u00a0\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0435, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u0435\u0449\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432\u041f\u043e\u043b\u043d\u0430\u044f\u00a0\u043a\u0430\u0440\u0442\u0430\u00a0\u0441\u043e \u0432\u0441\u0435\u043c \u043c\u043e\u0438\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c\u0412\u043a\u0430\u0442 \u0441\u00a0\u043d\u0443\u043b\u044f \u0438\u043b\u0438\u00a0\u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u0433\u0440\u0435\u0439\u0434\u0430 \u0432\u00a0ML\u00a0\u2014\u00a0\u043c\u0435\u043d\u0442\u043e\u0440\u0441\u0442\u0432\u043e\u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u043e\u0433\u043e\u0439?\u0418\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043d\u043e\u0433\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0438 GPU \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c.\u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0435\u0451 \u0441\u043b\u043e\u044f\u0445. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 GPU\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u0434\u0451\u0442 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e: \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0435\u0441\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e\u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f kv-\u043a\u044d\u0448 \u0434\u043b\u044f \u0443\u0436\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0415\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u0431\u0430\u0442\u0447\u0435\u043c \u0438 \u0447\u0438\u0441\u043b\u043e\u043c \u0441\u043b\u043e\u0451\u0432 \u043c\u043e\u0434\u0435\u043b\u0438, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438\u043c\u0435\u044e\u0442 \u0440\u0430\u0437\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0435\u0437 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e batching \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u044c\u044e \u0447\u0430\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 GPU \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0430\u0438\u0432\u0430\u0442\u044c\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u044d\u0442\u0430\u043f\u044b\/\u0444\u0430\u0437\u044b \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f.\u0418\u0437 \u043a\u0430\u043a\u0438\u0445 \u0444\u0430\u0437 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441 LLM? \u0412 \u0447\u0435\u043c \u0438\u0445 \u043e\u0442\u043b\u0438\u0447\u0438\u0435?prefill (compute-bound)decode (memory-bound)prefill &#8212; \u044d\u0442\u043e \u044d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434\u043d\u043e\u0439 prompt \u043f\u043e \u0432\u0441\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0441\u0442\u0440\u043e\u0438\u0442 hidden states \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 kv-cache\u0432\u0445\u043e\u0434\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0436\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0446\u0435\u043b\u0438\u043a\u043e\u043c\u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044f\u0442\u0441\u044f \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0430\u043cattention \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0432\u0441\u0435\u043c\u0443 prompt-\u0443\u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0434\u043b\u0438\u043d\u044b \u0432\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430bottleneck \u0431\u043b\u0438\u0436\u0435 \u043a compute-bound, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0442\u0447\u0430\u0445 \u0438 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u043c\u043f\u0442\u0430\u0445decode &#8212; \u044d\u0442\u043e \u044d\u0442\u0430\u043f, \u043a\u043e\u0433\u0434\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u0442\u043e\u043a\u0435\u043d \u0437\u0430&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-490474","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=490474"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/490474\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=490474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=490474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=490474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}