{"id":502092,"date":"2026-11-07T13:28:18","date_gmt":"2026-11-07T10:28:18","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=502092"},"modified":"2026-11-07T13:28:18","modified_gmt":"2026-11-07T10:28:18","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=502092","title":{"rendered":"\u041f\u0440\u0435\u043f\u0430\u0440\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0437\u0433 Qwen 3.8 27B-1c"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0415\u0441\u0442\u044c Qwen 3.8 27B, \u0434\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f (SFT + LoRA) \u043d\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0435 \u043f\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u0430 \u043d\u0430 hugging face. \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0421 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f: \u043f\u0443\u0442\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u0442\u0443\u0434\u0430, \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 SQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 1\u0421 \u043d\u0435\u0442.<\/p>\n<p>\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0442\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b \u043f\u043e \u044f\u0437\u044b\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0421, \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442. \u0412\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 accuracy \u0434\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 1%. \u041d\u0443 \u0438 \u044d\u0442\u043e \u0434\u043e\u043b\u0433\u0438\u0439 \u0438 \u043c\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u0443\u0447\u0435\u043d\u0438\u0439 \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 qwen, \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430: \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0435\u0448\u0430\u044e\u0442 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c SQL, \u0442.\u043a. \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0441\u0445\u043e\u0436\u0438\u0435 (SELECT, WITH, JOIN \u0438.\u0442.\u043f.).<\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u00ab\u0442\u044f\u043d\u0443\u0442\u00bb \u043c\u043e\u0434\u0435\u043b\u044c \u043a \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443, \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0445?<\/p>\n<p>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0430\u0437\u0432\u0430\u043b <strong>NERVE<\/strong> (<em>Neuron Editing, Reweighted &amp; Val-Evaluated<\/em>):<\/p>\n<ul>\n<li>\n<p>\u0441\u0442\u0440\u043e\u0438\u043c <strong>\u0442\u0435\u043f\u043b\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443<\/strong> \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043d\u0430 \u043f\u0430\u0440\u0430\u0445 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \/ \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442\u00bb;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0447\u0438\u0442\u0430\u0435\u043c <strong>\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u0443\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044e<\/strong> \u2014 \u043f\u0440\u043e\u0433\u043d\u043e\u0437, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0438\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p><strong>\u0436\u0430\u0434\u043d\u043e \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u043c<\/strong> \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043a\u043e\u043f\u0438\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 <strong>\u043d\u0430\u0431\u043e\u0440\u0435<\/strong> \u0438 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0432 <strong>GGUF<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u2014 \u043d\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 <code>1c_lang_query<\/code> (\u0437\u0430\u043f\u0440\u043e\u0441\u044b 1\u0421). \u041a\u043e\u0434 \u2014 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, PyTorch + Hugging Face Transformers + PEFT.<\/p>\n<h3>1. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u043d\u0435\u0439\u0440\u043e\u043d\u00bb \u0432 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0435<\/h3>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 Qwen \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043b\u043e\u043a \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 MLP-\u0431\u043b\u043e\u043a. MLP \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u043e \u0441\u0445\u0435\u043c\u0435 SwiGLU:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"h = \\mathrm{SiLU}(W_{gate}x) \\odot (W_{up}x),\\quad y = W_{down}\\,h\" alt=\"h = \\mathrm{SiLU}(W_{gate}x) \\odot (W_{up}x),\\quad y = W_{down}\\,h\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/de\/dee\/dee306b8629eb782712b107ac3fcda2e.svg\" width=\"341\" height=\"19\" data-width=\"42.603\" data-height=\"2.364\" data-vertical-align=\"-0.616\" style=\"width: 42.603ex; height: 2.364ex; vertical-align: -0.616ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/de\/dee\/dee306b8629eb782712b107ac3fcda2e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/de\/dee\/dee306b8629eb782712b107ac3fcda2e.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c <code>x<\/code> \u2014 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 hidden_size), <code>h<\/code> \u2014 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 (\u0443 Qwen 3.8 27B \u2014 <strong>17 408<\/strong> \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442), <code>y<\/code> \u2014 \u0432\u043a\u043b\u0430\u0434 MLP \u0432 residual stream. <strong>\u041d\u0435\u0439\u0440\u043e\u043d\u043e\u043c<\/strong> \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 <code>h_i<\/code> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b <code>W_down[:, i]<\/code>: \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, <em>\u0447\u0442\u043e<\/em> \u043d\u0435\u0439\u0440\u043e\u043d \u043f\u0438\u0448\u0435\u0442 \u0432 residual stream, \u043a\u043e\u0433\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"y = \\sum_i h_i \\, W_{down}[:, i]\" alt=\"y = \\sum_i h_i \\, W_{down}[:, i]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/74\/74b\/74bbb768d1f73976e7fd8f845df4b84f.svg\" width=\"159\" height=\"39\" data-width=\"19.901\" data-height=\"4.847\" data-vertical-align=\"-1.858\" style=\"width: 19.901ex; height: 4.847ex; vertical-align: -1.858ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/74\/74b\/74bbb768d1f73976e7fd8f845df4b84f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/7\/74\/74b\/74bbb768d1f73976e7fd8f845df4b84f.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 <code>W_down[:, i]<\/code> \u043d\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 <code>m<\/code> \u2014 \u044d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 <code>h_i<\/code> \u043d\u0430 <code>m<\/code> \u043d\u0430 <strong>\u043a\u0430\u0436\u0434\u043e\u043c<\/strong> \u0442\u043e\u043a\u0435\u043d\u0435. <code>m = 0<\/code> \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u0439\u0440\u043e\u043d, <code>m = 0.5<\/code> \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0430\u0435\u0442 \u0432\u0434\u0432\u043e\u0435, <code>m = 1.5<\/code> \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0435\u0442. \u041f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 GGUF.<\/p>\n<p>\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u043f\u043e\u0438\u0441\u043a\u0430: 64 \u0441\u043b\u043e\u044f \u00d7 17 408 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 = <strong>1 114 112<\/strong> \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432. \u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u043b\u0435\u043f\u0443\u044e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e, \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u0440\u0442\u0430.<\/p>\n<h3>2. \u0414\u0430\u043d\u043d\u044b\u0435: \u043f\u0430\u0440\u044b \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \/ \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb<\/h3>\n<p>\u0414\u043b\u044f \u043a\u0430\u0440\u0442\u044b \u043d\u0443\u0436\u043d\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0430 <strong>preference-\u043f\u0430\u0440\u044b<\/strong> \u2014 \u0442\u043e\u0442 \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f DPO: \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u043c\u043f\u0442, \u043e\u0442\u0432\u0435\u0442 <code>chosen<\/code> (\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 1\u0421) \u0438 <code>rejected<\/code> (\u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439). \u0412 <code>1c_lang_query<\/code> \u043e\u043a\u043e\u043b\u043e \u0434\u0432\u0443\u0445 \u0442\u044b\u0441\u044f\u0447 \u0442\u0430\u043a\u0438\u0445 \u043f\u0430\u0440 \u0432 train \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 val.<\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0438\u0434\u0435\u044f: \u0432 \u043f\u0430\u0440\u0435 chosen \u0438 rejected \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 90\u201395%. \u0415\u0441\u043b\u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443, \u043e\u0431\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u00ab\u0440\u0430\u0437\u043c\u0430\u0436\u0435\u0442\u00bb \u0441\u0438\u0433\u043d\u0430\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e <strong>\u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u044b<\/strong>. \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 <code>difflib.SequenceMatcher<\/code> \u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u0432 \u043e\u0431\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438:<\/p>\n<pre><code class=\"python\">def diff_token_mask(chosen_ids, rejected_ids):    \"\"\"\u041e\u0442\u043c\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u043e\u0442\u0432\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u043e\u0431\u0449\u0438\u0445 \u0431\u043b\u043e\u043a\u0430\u0445 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439.\"\"\"    import difflib    chosen_mask = [False] * len(chosen_ids)    rejected_mask = [False] * len(rejected_ids)    matcher = difflib.SequenceMatcher(None, chosen_ids, rejected_ids, autojunk=False)    for tag, c_start, c_end, r_start, r_end in matcher.get_opcodes():        if tag == \"equal\":            continue        for index in range(c_start, c_end):            chosen_mask[index] = True        for index in range(r_start, r_end):            rejected_mask[index] = True    # \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0431\u0435\u0437 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0430\u0441\u043a\u0443 \u043d\u0430 \u0432\u0435\u0441\u044c \u043e\u0442\u0432\u0435\u0442    if not any(chosen_mask):        chosen_mask = [True] * len(chosen_ids)    if not any(rejected_mask):        rejected_mask = [True] * len(rejected_ids)    return chosen_mask, rejected_mask<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0430\u0436\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u043b\u0441\u044f: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0430\u0440\u0442\u0430 \u0441\u0442\u0440\u043e\u0438\u043b\u0430\u0441\u044c \u043f\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443. \u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u0430\u0432\u043a\u0438 \u0440\u0430\u0437\u0431\u0430\u0432\u043b\u044f\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 25 \u0440\u0430\u0437, \u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0442\u043e\u043d\u0443\u043b\u0438 \u0432 \u0448\u0443\u043c\u0435. \u0421\u0435\u0439\u0447\u0430\u0441 <strong>\u0438 \u043a\u0430\u0440\u0442\u0430, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 diff-\u043c\u0430\u0441\u043a\u0443.<\/p>\n<h3>3. \u0422\u0435\u043f\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f<\/h3>\n<h4>3.1. \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0445\u0443\u043a\u0430\u043c\u0438<\/h4>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 BF16, LoRA-\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0435\u0441\u0430 (<code>merge_and_unload<\/code>), \u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e <code>mlp.down_proj<\/code> \u0432\u0435\u0448\u0430\u0435\u0442\u0441\u044f <code>forward_pre_hook<\/code>. \u0412\u0445\u043e\u0434 <code>down_proj<\/code> \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440 <code>h<\/code>:<\/p>\n<pre><code class=\"python\">modules = [(name, m) for name, m in merged.named_modules()           if name.endswith(\"mlp.down_proj\")]def make_hook(name):    def hook(module, args):        hidden = args[0]                       # [batch, seq, 17408]        flat = hidden[0] if hidden.ndim == 3 else hidden        rows = torch.tensor(current_mask, device=flat.device)        selected = flat[rows].detach().float().abs()        sums[name] = selected.sum(dim=0)       # \u0441\u0443\u043c\u043c\u0430 |h| \u043f\u043e diff-\u0442\u043e\u043a\u0435\u043d\u0430\u043c        counts[name] = int(selected.shape[0])    return hookhandles = [m.register_forward_pre_hook(make_hook(n)) for n, m in modules]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0434\u0432\u0430 forward-\u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u2014 \u043f\u043e chosen \u0438 \u043f\u043e rejected \u2014 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0443\u044e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u0445:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\bar A^{c}_i = \\frac{1}{|T^c|}\\sum_{t \\in T^c} |h_{t,i}|,\\qquad \\Delta_i = \\bar A^{c}_i - \\bar A^{r}_i\" alt=\"\\bar A^{c}_i = \\frac{1}{|T^c|}\\sum_{t \\in T^c} |h_{t,i}|,\\qquad \\Delta_i = \\bar A^{c}_i - \\bar A^{r}_i\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/01\/01b\/01b2550e44ebd4eac7e31a306b55270e.svg\" width=\"305\" height=\"46\" data-width=\"38.129\" data-height=\"5.805\" data-vertical-align=\"-2.337\" style=\"width: 38.129ex; height: 5.805ex; vertical-align: -2.337ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/01\/01b\/01b2550e44ebd4eac7e31a306b55270e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/01\/01b\/01b2550e44ebd4eac7e31a306b55270e.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0417\u0434\u0435\u0441\u044c <code>T\u1d9c<\/code> \u0438 <code>T\u02b3<\/code> \u2014 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u0430 chosen \u0438 rejected. \u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u2014 \u043d\u0435\u0439\u0440\u043e\u043d \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435, \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u2014 \u043d\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u043c.<\/p>\n<h4>3.2. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u043f\u0430\u0440\u0430\u043c: \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0435<\/h4>\n<p>\u041e\u0434\u043d\u0430 \u043f\u0430\u0440\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442. \u041f\u043e \u0432\u0441\u0435\u043c <code>n<\/code> \u043f\u0430\u0440\u0430\u043c \u043a\u043e\u043f\u0438\u043c \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e \u0441\u0443\u043c\u043c\u0443, \u0441\u0443\u043c\u043c\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u043f\u0430\u0440 \u0441 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0435\u043b\u044c\u0442\u043e\u0439 \u2014 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u0435\u0437 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u0435, t-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u043a\u0430:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\mu_i=\\frac1n\\sum_k\\Delta_i^{(k)},\\quad s_i^2=\\frac{\\sum_k(\\Delta_i^{(k)})^2-n\\mu_i^2}{n-1},\\quad t_i=\\frac{\\mu_i}{s_i\/\\sqrt n}\" alt=\"\\mu_i=\\frac1n\\sum_k\\Delta_i^{(k)},\\quad s_i^2=\\frac{\\sum_k(\\Delta_i^{(k)})^2-n\\mu_i^2}{n-1},\\quad t_i=\\frac{\\mu_i}{s_i\/\\sqrt n}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/ae\/aef\/aef24e3b12afde121c51f8db5740ddba.svg\" width=\"455\" height=\"55\" data-width=\"56.816\" data-height=\"6.873\" data-vertical-align=\"-2.871\" style=\"width: 56.816ex; height: 6.873ex; vertical-align: -2.871ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/ae\/aef\/aef24e3b12afde121c51f8db5740ddba.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/ae\/aef\/aef24e3b12afde121c51f8db5740ddba.svg 781w\" loading=\"lazy\" decode=\"async\"\/><img decoding=\"async\" class=\"formula\" source=\"\\mathrm{agreement}_i=\\frac{1}{n}\\#\\{k:\\ \\mathrm{sign}\\,\\Delta_i^{(k)}=\\mathrm{sign}\\,\\mu_i\\}\" alt=\"\\mathrm{agreement}_i=\\frac{1}{n}\\#\\{k:\\ \\mathrm{sign}\\,\\Delta_i^{(k)}=\\mathrm{sign}\\,\\mu_i\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/30\/305\/305b56d77106313031860e0a69082896.svg\" width=\"335\" height=\"37\" data-width=\"41.919\" data-height=\"4.613\" data-vertical-align=\"-1.741\" style=\"width: 41.919ex; height: 4.613ex; vertical-align: -1.741ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/30\/305\/305b56d77106313031860e0a69082896.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/30\/305\/305b56d77106313031860e0a69082896.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<pre><code class=\"python\">def pair_statistics(sums, sumsq, positive, count):    \"\"\"\u0421\u0440\u0435\u0434\u043d\u0435\u0435, t-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0438 \u0434\u043e\u043b\u044f \u043f\u0430\u0440 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e.\"\"\"    n = int(count)    means, t_values, agreement = [], [], []    for i in range(len(sums)):        mean = sums[i] \/ n        if n &gt; 1:            variance = max(0.0, (sumsq[i] - n * mean * mean) \/ (n - 1))            std = math.sqrt(variance)            t_value = mean \/ (std \/ math.sqrt(n)) if std &gt; 0 else 0.0        else:            t_value = 0.0        share_positive = positive[i] \/ n        means.append(mean)        t_values.append(t_value)        agreement.append(share_positive if mean &gt;= 0 else 1.0 - share_positive)    return {\"mean\": means, \"t\": t_values, \"agreement\": agreement}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u0435\u043c \u043f\u043e <code>|t|<\/code>, \u0430 \u043d\u0435 \u043f\u043e <code>|\u03bc|<\/code>: \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0434\u0435\u043b\u044c\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0430\u044e\u0442 \u0434\u0432\u0435-\u0442\u0440\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u044b. t-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0448\u0442\u0440\u0430\u0444\u0443\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0431\u0440\u043e\u0441. \u041f\u0440\u0438 \u043c\u0430\u043b\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u0430\u0440 (\u043c\u0435\u043d\u044c\u0448\u0435 8) t \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u0430, \u0438 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043a \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e <code>|\u03bc|<\/code>.<\/p>\n<h4>3.3. \u041e\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b \u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435<\/h4>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 \u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 17 408 \u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0434\u0435\u043b\u044c\u0442. \u0414\u043b\u044f \u0442\u0435\u043f\u043b\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0434\u0435\u043b\u0430\u0435\u043c <strong>128 \u043a\u043e\u0440\u0437\u0438\u043d<\/strong> \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0438 \u0431\u0435\u0440\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0435. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 64 \u00d7 128: \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0441\u043b\u043e\u0438, \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u043a\u043e\u0440\u0437\u0438\u043d\u044b, \u0446\u0432\u0435\u0442 \u2014 \u0437\u043d\u0430\u043a \u0438 \u0441\u0438\u043b\u0430 \u0434\u0435\u043b\u044c\u0442\u044b. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f <strong>top-64<\/strong> \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e <code>|t|<\/code> \u0441 \u0434\u0435\u043b\u044c\u0442\u043e\u0439, t \u0438 agreement \u2014 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b \u043d\u0430 \u043f\u0440\u0430\u0432\u043a\u0443.<\/p>\n<pre><code class=\"python\">def bin_values(values, bin_count=128):    \"\"\"\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u043a\u043e\u0440\u0437\u0438\u043d\u0430\u043c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0432\u0434\u043e\u043b\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u0430.\"\"\"    totals = [0.0] * bin_count    sizes = [0] * bin_count    width = len(values)    for index, value in enumerate(values):        bucket = min(bin_count - 1, index * bin_count \/\/ width)        totals[bucket] += float(value)        sizes[bucket] += 1    return [totals[b] \/ sizes[b] if sizes[b] else 0.0 for b in range(bin_count)]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/41\/c5\/5c\/41c55c736ca83b49a0b3a26d0ad6108f.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/41\/c5\/5c\/41c55c736ca83b49a0b3a26d0ad6108f.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/41\/c5\/5c\/41c55c736ca83b49a0b3a26d0ad6108f.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0431\u0440\u043e\u0441\u0438\u043b\u043e\u0441\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 <code>1c_lang_query<\/code>: \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u0435\u0441\u0442\u044c <strong>\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u043e\u0435<\/strong>. \u041c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u00ab\u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0442\u00bb SQL-\u0448\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u0432\u0441\u0435\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0441\u0435\u0442\u0438. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0432\u0435\u0441\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u00ab\u0445\u043e\u0440\u043e\u0448\u0438\u0435\u00bb \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043d\u043e \u0438 <strong>\u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435<\/strong>!<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cf\/df\/53\/cfdf532183eceb7ffe59c412b6d432fe.png\" alt=\"\u0420\u0438\u0441.1\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/cf\/df\/53\/cfdf532183eceb7ffe59c412b6d432fe.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/cf\/df\/53\/cfdf532183eceb7ffe59c412b6d432fe.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.1<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/49\/3c\/7a\/493c7a3fef8cbf0f3cffd787b1cac4b6.png\" alt=\"\u0420\u0438\u0441.2\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/49\/3c\/7a\/493c7a3fef8cbf0f3cffd787b1cac4b6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/49\/3c\/7a\/493c7a3fef8cbf0f3cffd787b1cac4b6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.2<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/24\/7d\/74\/247d747583fd38c935da3ef33506a087.png\" alt=\"\u0420\u0438\u0441.3\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/24\/7d\/74\/247d747583fd38c935da3ef33506a087.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/24\/7d\/74\/247d747583fd38c935da3ef33506a087.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.3<\/figcaption><\/div>\n<\/figure>\n<h3>4. \u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f: \u043a\u0430\u043a\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043e\u0442\u0432\u0435\u0442<\/h3>\n<p>\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044e, \u043d\u043e \u043d\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u043d\u043e\u0441\u0442\u044c: \u043d\u0435\u0439\u0440\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u044f\u0440\u043a\u043e \u0441\u0432\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 rejected \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u0442\u043e\u043a\u0435\u043d\u0430. \u041d\u0443\u0436\u043d\u0430 \u043e\u0446\u0435\u043d\u043a\u0430 <em>\u0432\u043a\u043b\u0430\u0434\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e<\/em>. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0431\u0435\u0440\u0435\u043c <strong>margin<\/strong> \u2014 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u043c\u0443 \u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u0445:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\mathrm{margin}=\\frac{1}{|T^c|}\\sum_{t\\in T^c}\\log p(y_t\\mid y_{&lt;t})-\\frac{1}{|T^r|}\\sum_{t\\in T^r}\\log p(y_t\\mid y_{&lt;t})\" alt=\"\\mathrm{margin}=\\frac{1}{|T^c|}\\sum_{t\\in T^c}\\log p(y_t\\mid y_{&lt;t})-\\frac{1}{|T^r|}\\sum_{t\\in T^r}\\log p(y_t\\mid y_{&lt;t})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/65\/65a\/65ad3f73badcf429f7c735ad4f556fe0.svg\" width=\"456\" height=\"46\" data-width=\"57.024\" data-height=\"5.805\" data-vertical-align=\"-2.337\" style=\"width: 57.024ex; height: 5.805ex; vertical-align: -2.337ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/65\/65a\/65ad3f73badcf429f7c735ad4f556fe0.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/6\/65\/65a\/65ad3f73badcf429f7c735ad4f556fe0.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u00ab\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u00d7 \u0432\u0445\u043e\u0434\u00bb (\u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u044f\u0434\u0430 \u0422\u0435\u0439\u043b\u043e\u0440\u0430):<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\mathrm{attr}_i=\\sum_t h_{t,i}\\,\\frac{\\partial\\,\\mathrm{margin}}{\\partial h_{t,i}}\" alt=\"\\mathrm{attr}_i=\\sum_t h_{t,i}\\,\\frac{\\partial\\,\\mathrm{margin}}{\\partial h_{t,i}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/37\/372\/372c300a04d2e4136ae193d783d654b4.svg\" width=\"194\" height=\"46\" data-width=\"24.197\" data-height=\"5.788\" data-vertical-align=\"-2.329\" style=\"width: 24.197ex; height: 5.788ex; vertical-align: -2.329ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/37\/372\/372c300a04d2e4136ae193d783d654b4.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/37\/372\/372c300a04d2e4136ae193d783d654b4.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0421\u043c\u044b\u0441\u043b \u0444\u043e\u0440\u043c\u0443\u043b\u044b: \u0435\u0441\u043b\u0438 \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u043d\u0430 <code>m<\/code>, \u0442\u043e \u0432 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 margin \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\Delta\\mathrm{margin}\\approx(m-1)\\,\\mathrm{attr}_i\" alt=\"\\Delta\\mathrm{margin}\\approx(m-1)\\,\\mathrm{attr}_i\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/45\/459\/459c04bacc756ecb46bccc322c312b88.svg\" width=\"195\" height=\"18\" data-width=\"24.362\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 24.362ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/45\/459\/459c04bacc756ecb46bccc322c312b88.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/45\/459\/459c04bacc756ecb46bccc322c312b88.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u0439\u0440\u043e\u043d \u0441 <code>attr &lt; 0<\/code> \u0441\u0432\u043e\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e <strong>\u0441\u043d\u0438\u0436\u0430\u0435\u0442<\/strong> margin \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u00ab\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439\u00bb \u043d\u0435\u0439\u0440\u043e\u043d. \u041f\u0440\u0438\u0433\u043b\u0443\u0448\u0438\u0432 \u0435\u0433\u043e (<code>m &lt; 1<\/code>), \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u0440\u043e\u0441\u0442 margin. \u0414\u043b\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f: <code>\u0394margin \u2248 \u03a3 (m\u1d62 \u2212 1)\u00b7attr\u1d62<\/code>.<\/p>\n<h4>4.1. \u041a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e \u0432\u0445\u043e\u0434\u0443 down_proj<\/h4>\n<p>\u0425\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 <code>h<\/code> \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0441\u0442\u043e\u043c \u0433\u0440\u0430\u0444\u0430, \u0438 <code>autograd.grad<\/code> \u043f\u043e \u043d\u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435 forward. \u0412 \u0442\u043e\u043c \u0436\u0435 pre-hook <strong>\u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0445\u043e\u0434 \u043b\u0438\u0441\u0442\u043e\u043c<\/strong>:<\/p>\n<pre><code class=\"python\">def hook(module, args):    hidden = args[0]    if not attribution_active:        return None    leaf = hidden.detach().requires_grad_(True)   # \u043d\u043e\u0432\u044b\u0439 \u043b\u0438\u0441\u0442 \u0433\u0440\u0430\u0444\u0430    leaves[name] = leaf    return (leaf,) + tuple(args[1:])              # down_proj \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0443\u0436\u0435 \u043e\u0442 \u043b\u0438\u0441\u0442\u0430with torch.enable_grad():    out = model(input_ids=ids, attention_mask=mask, use_cache=False)    objective = masked_mean_logprob(out.logits, ids, diff_rows)    names = list(leaves)    grads = torch.autograd.grad(objective * sign, [leaves[n] for n in names],                                allow_unused=True)attr = {}for name, grad in zip(names, grads):    if grad is None:        continue    product = leaves[name].detach().float() * grad.float()    attr[name] = product.reshape(-1, product.shape[-1]).sum(dim=0)   # [17408]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f chosen \u0431\u0435\u0440\u0435\u043c <code>sign = +1<\/code>, \u0434\u043b\u044f rejected \u2014 <code>sign = \u22121<\/code>, \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c: \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u043e\u0432\u043d\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 margin. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e log p \u043f\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u0430\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0434\u0432\u0438\u0433: \u0442\u043e\u043a\u0435\u043d <code>j<\/code> \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0442\u0430\u043c\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 <code>j \u2212 1<\/code>:<\/p>\n<pre><code class=\"python\">def masked_mean_logprob(logits, input_ids, rows):    positions = [i for i, flag in enumerate(rows) if flag and i &gt; 0]    if not positions:        return None    target = torch.tensor(positions, device=logits.device)    picked = logits[0, target - 1].float()    log_probs = torch.log_softmax(picked, dim=-1)    tokens = input_ids[0, target].unsqueeze(-1)    return log_probs.gather(-1, tokens).squeeze(-1).mean()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0440\u043e\u0433\u043e (backward \u043d\u0430 27B-\u043c\u043e\u0434\u0435\u043b\u0438), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0440\u0442\u0443 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0435\u0439 \u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0430 \u043f\u043e\u0434\u0432\u044b\u0431\u043e\u0440\u043a\u0435: \u0434\u043b\u044f <code>1c_lang_query<\/code> \u2014 512 \u043f\u0430\u0440 \u043f\u0440\u0438 \u0434\u043b\u0438\u043d\u0435 \u0434\u043e 2048 \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u041a\u0430\u0440\u0442\u0430 \u0431\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u2014 \u043d\u0430 \u0432\u0441\u0435\u0445 2010 \u043f\u0430\u0440\u0430\u0445. \u041f\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u0442\u043e\u0436\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0438 t, \u0430 \u0432 \u0441\u043b\u043e\u0439 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f top-64 \u043f\u043e <code>|attr|<\/code>.<\/p>\n<h3>5. \u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u0440\u0430\u0432\u043a\u0443<\/h3>\n<p>\u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u043d\u043e\u0437. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f <strong>\u043f\u043e \u0444\u0430\u043a\u0442\u0443<\/strong> \u043d\u0430 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 val-\u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043a\u0430\u0440\u0442\u0430. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c:<\/p>\n<ul>\n<li>\n<p><strong>nll_chosen<\/strong> \u2014 \u0441\u0440\u0435\u0434\u043d\u0438\u0439 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 log p \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443. \u0421\u0442\u043e\u0440\u043e\u0436: \u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u0446\u0435\u043b\u043e\u043c;<\/p>\n<\/li>\n<li>\n<p><strong>margin<\/strong> \u2014 \u043f\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u043a\u0430\u043a \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>accuracy<\/strong> \u2014 \u0434\u043e\u043b\u044f \u043f\u0430\u0440 \u0441 <code>margin &gt; 0<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043c\u0435\u0440\u044b \u0431\u044b\u043b\u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b \u043c\u0435\u0436\u0434\u0443 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043c\u0438, \u043f\u0430\u0440\u044b val \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (<code>query_fingerprint<\/code>, \u0430 \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043d\u0435\u0442 \u2014 sha1 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f). \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c <strong>guard<\/strong> \u2014 \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440 val \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u043b\u043e\u043c\u0430\u043b\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043d\u0430\u0432\u044b\u043a\u0438. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e guard \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d: \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0434\u0451\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<p>\u0421\u0430\u043c\u0430 \u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u00ab\u043d\u0430 \u0436\u0438\u0432\u0443\u044e\u00bb \u043a \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u043e\u0439 BF16-\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<pre><code class=\"python\">def scale_columns(edits):    \"\"\"\u0423\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u0441\u0442\u043e\u043b\u0431\u0446\u044b down_proj \u043d\u0430 edit[\"scale\"] \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\"\"\"    saved = []    with torch.no_grad():        for edit in edits:            weight = modules[edit[\"name\"]].weight          # [hidden, 17408]            index = int(edit[\"index\"])            saved.append((weight, index, weight[:, index].detach().clone()))            weight[:, index].mul_(float(edit[\"scale\"]))    return saveddef restore_columns(saved):    with torch.no_grad():        for weight, index, column in saved:            weight[:, index].copy_(column)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h3>6. \u0420\u0435\u0436\u0438\u043c\u044b \u043c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044f<\/h3>\n<p>\u041a\u0430\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b <code>m<\/code>? \u0415\u0441\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0440\u0435\u0436\u0438\u043c\u0430, \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0441\u0438\u043b\u044b <code>s \u2208 [0, 1]<\/code>:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0420\u0435\u0436\u0438\u043c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041a\u043e\u0433\u043e \u0442\u0440\u043e\u0433\u0430\u0435\u043c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041c\u043d\u043e\u0436\u0438\u0442\u0435\u043b\u044c m<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">suppress (\u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435: attr &lt; 0, \u0431\u0435\u0437 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u2014 \u0394 &lt; 0<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u2212 s<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">sign<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435, \u043f\u043e \u0437\u043d\u0430\u043a\u0443 \u0434\u0435\u043b\u044c\u0442\u044b \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 + s \u043f\u0440\u0438 \u0394 &gt; 0, 1 \u2212 s \u043f\u0440\u0438 \u0394 &lt; 0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">attr<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435, \u043f\u043e \u0437\u043d\u0430\u043a\u0443 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 + s \u043f\u0440\u0438 attr &gt; 0, 1 \u2212 s \u043f\u0440\u0438 attr &lt; 0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">manual<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0432\u0441\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e 0\u20262<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u0441 <code>1c_lang_query<\/code> \u0440\u0435\u0436\u0438\u043c\u043e\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0441\u0442\u0430\u043b <strong>suppress<\/strong>: \u0443\u0441\u0438\u043b\u0435\u043d\u0438\u0435 \u00ab\u0445\u043e\u0440\u043e\u0448\u0438\u0445\u00bb \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0447\u0430\u0449\u0435 \u043b\u043e\u043c\u0430\u043b\u043e nll, \u0430 \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u0434\u0430\u0432\u0430\u043b\u043e \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u0440\u043e\u0441\u0442 margin.<\/p>\n<pre><code class=\"python\">def signed_scales(edits, mode, value):    result = []    for edit in edits:        if mode == \"suppress\":            source = edit.get(\"attr\") if edit.get(\"attr\") is not None else edit.get(\"delta\")            if source is None or source &gt;= 0:                continue                      # \u043d\u0435 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439 \u2014 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0435\u043c            scale = 1.0 - value        elif mode == \"manual\":            scale = value        else:            source = edit[\"delta\"] if mode == \"sign\" else edit[\"attr\"]            scale = 1.0 + value if source &gt; 0 else 1.0 - value if source &lt; 0 else 1.0        result.append({**edit, \"scale\": max(0.0, min(2.0, scale))})    return result<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h3>7. \u0416\u0430\u0434\u043d\u044b\u0439 \u043e\u0442\u0431\u043e\u0440 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439<\/h3>\n<p>\u0411\u0440\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0442\u043e\u043f-64 \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0438 \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0430\u0442\u044c \u0432\u0441\u0435\u0445 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f: \u043f\u0440\u0430\u0432\u043a\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442, \u0438 \u0441\u0443\u043c\u043c\u0430 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043e\u0432 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0431\u043e\u0440 \u0436\u0430\u0434\u043d\u044b\u0439, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0443.<\/p>\n<h4>7.1. \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 val<\/h4>\n<p>Val-\u043f\u0430\u0440\u044b \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0445\u0435\u0448-\u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u043e\u0442 \u043a\u043b\u044e\u0447\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430: <strong>\u043e\u0442\u0431\u043e\u0440<\/strong> (\u043d\u0430 \u043d\u0435\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e \u0440\u0435\u0448\u0435\u043d\u0438\u044f) \u0438 <strong>\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c<\/strong> (\u043d\u0430 \u043d\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e \u0438\u0442\u043e\u0433). \u041e\u0434\u043d\u0430 \u0438 \u0442\u0430 \u0436\u0435 \u043f\u0430\u0440\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443.<\/p>\n<pre><code class=\"python\">def split_half(key: str) -&gt; bool:    \"\"\"True \u2014 \u043f\u0430\u0440\u0430 \u0432 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u043e\u0442\u0431\u043e\u0440\u0430, False \u2014 \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439.\"\"\"    return int(hashlib.sha1(key.encode(\"utf-8\")).hexdigest()[-1], 16) % 2 == 0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<h4>7.2. \u041a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b \u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f<\/h4>\n<p>\u041a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b \u2014 top-N \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e <code>|attr|<\/code> \u043f\u043e \u0432\u0441\u0435\u043c \u0441\u043b\u043e\u044f\u043c \u043a\u0430\u0440\u0442\u044b (\u0432 \u0440\u0435\u0436\u0438\u043c\u0435 suppress \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0441 <code>attr &lt; 0<\/code>), \u0437\u0430 \u0432\u044b\u0447\u0435\u0442\u043e\u043c \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445 \u0440\u0430\u043d\u0435\u0435. \u0414\u0430\u043b\u044c\u0448\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430: \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043a\u0443 \u043f\u043e\u0432\u0435\u0440\u0445 \u0443\u0436\u0435 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0445, \u0437\u0430\u043c\u0435\u0440\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 \u043e\u0442\u0431\u043e\u0440\u0430, \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u0438 \u043e\u0442\u043a\u0430\u0442\u0438\u0442\u044c. \u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\mathrm{margin}_{cand}&gt;\\mathrm{margin}_{cur}+\\varepsilon\\ \\ \\wedge\\ \\ \\mathrm{nll}_{cand}\\le\\mathrm{nll}_{base}(1+\\tau_{nll})\" alt=\"\\mathrm{margin}_{cand}&gt;\\mathrm{margin}_{cur}+\\varepsilon\\ \\ \\wedge\\ \\ \\mathrm{nll}_{cand}\\le\\mathrm{nll}_{base}(1+\\tau_{nll})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/bd\/bd7\/bd7de9d96f4e4f7ad5cfb8eb5f5efe36.svg\" width=\"440\" height=\"18\" data-width=\"55.022\" data-height=\"2.262\" data-vertical-align=\"-0.566\" style=\"width: 55.022ex; height: 2.262ex; vertical-align: -0.566ex\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/bd\/bd7\/bd7de9d96f4e4f7ad5cfb8eb5f5efe36.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/bd\/bd7\/bd7de9d96f4e4f7ad5cfb8eb5f5efe36.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <code>\u03b5 = 0.002<\/code> (\u043d\u0430 \u0442\u043e\u043a\u0435\u043d), <code>\u03c4_nll = 2%<\/code>, \u0434\u043e\u043f\u0443\u0441\u043a guard <code>\u03c4_guard = 1%<\/code> \u043f\u043e nll \u0438 margin \u043a\u0430\u0436\u0434\u043e\u0433\u043e guard-\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: margin \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 <strong>\u0442\u0435\u043a\u0443\u0449\u0438\u043c<\/strong> \u043d\u0430\u0431\u043e\u0440\u043e\u043c (\u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0439 \u043d\u0435\u0439\u0440\u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u0443), \u0430 nll \u2014 \u0441 <strong>\u0431\u0430\u0437\u043e\u0439<\/strong> (\u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f).<\/p>\n<pre><code class=\"python\">baseline = score(select, guard)            # \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u043e\u043acurrent = baselineaccepted, kept = [], []for edit in signed_scales(candidates, mode, s):    saved = scale_columns([edit])    summary = score(select, guard)    ok, reason = greedy_accept(baseline, current, summary, eps, nll_tol, guard_tol)    if ok:        kept.extend(saved)                 # \u043f\u0440\u0430\u0432\u043a\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u0432\u0435\u0441\u0430\u0445        current = summary        accepted.append(edit)    else:        restore_columns(saved)final_control = score(control)             # \u0438\u0442\u043e\u0433 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435confirmed = accepted and passes(baseline_control, final_control)restore_columns(reversed(kept))<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041d\u0430\u0431\u043e\u0440 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f <strong>\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u043c<\/strong>, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435 margin \u0432\u044b\u0440\u043e\u0441, \u0430 nll \u043d\u0435 \u043f\u0440\u043e\u0441\u0435\u043b \u0441\u0432\u0435\u0440\u0445 \u0434\u043e\u043f\u0443\u0441\u043a\u0430. \u042d\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 val: \u0436\u0430\u0434\u043d\u044b\u0439 \u043e\u0442\u0431\u043e\u0440 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0448\u0443\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/extt\/a1\/1c\/61\/a11c61d16ac800a722c709ed7b5443fa.png\" alt=\"\u0420\u0438\u0441.5\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/extt\/a1\/1c\/61\/a11c61d16ac800a722c709ed7b5443fa.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/extt\/a1\/1c\/61\/a11c61d16ac800a722c709ed7b5443fa.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441.5<\/figcaption><\/div>\n<\/figure>\n<h3>8. \u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c: \u043a\u043e\u043f\u0438\u043c \u043f\u0440\u0430\u0432\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0433\u043e\u043d\u0430\u043c\u0438<\/h3>\n<p>\u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0433\u043e\u043d \u0436\u0430\u0434\u043d\u043e\u0433\u043e \u043e\u0442\u0431\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432. \u0425\u043e\u0447\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u0431\u043e\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e: \u0434\u0440\u0443\u0433\u0438\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u043b\u043e\u0439 <code>s<\/code>, \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430\u0445. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0435\u0441\u0442\u044c <strong>\u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u043e\u043a<\/strong> \u2014 JSON-\u0444\u0430\u0439\u043b \u0440\u044f\u0434\u043e\u043c \u0441 \u043a\u0430\u0440\u0442\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 <strong>\u043f\u043e\u0432\u0435\u0440\u0445 \u043d\u0430\u0431\u043e\u0440\u0430<\/strong>: \u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043a \u0432\u0435\u0441\u0430\u043c \u0434\u043e \u0437\u0430\u043c\u0435\u0440\u0430 \u0431\u0430\u0437\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0435\u0439\u0440\u043e\u043d\u044b \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0438\u043d\u044f\u0442\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043d\u0430\u0431\u043e\u0440 <strong>\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438<\/strong> \u043f\u0440\u043e\u0433\u043e\u043d \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u0441\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u00ab\u043d\u0430\u0431\u043e\u0440 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u0442\u0438\u0432 \u0431\u0430\u0437\u044b\u00bb \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"json\">{  \"schema_version\": 1,  \"map\": \"20261105-125127-275881.json\",  \"edits\": [    {\"name\": \"model.layers.54.mlp.down_proj\", \"layer_index\": 54, \"index\": 5661,     \"attr\": -0.0123, \"scale\": 0.5, \"mode\": \"suppress\", \"s\": 0.5,     \"eval\": \"20261106-072151-604012.eval.json\"}  ],  \"updated_at\": \"2026-11-06T07:31:02Z\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><em>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f attr \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435.<\/em><\/p>\n<h3>9. \u042d\u043a\u0441\u043f\u043e\u0440\u0442: NERVE-GGUF<\/h3>\n<p>\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0433 \u2014 \u0432\u044b\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043b\u044f \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0430 \u0432 llama-server. \u041a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<p>\u041f\u0440\u0430\u0432\u043a\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432 <code>W_down<\/code> \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u0435\u0439: \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0442\u043e\u0440 \u0432\u0438\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0443\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u0441\u0430. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0451\u0432, \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u0438\u043b\u0438 \u0445\u0443\u043a\u043e\u0432 \u043d\u0430 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0435 \u043d\u0435\u0442.<\/p>\n<h3>10. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430 1c_lang_query<\/h3>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440: \u043a\u0430\u043a \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043e \u043f\u0440\u0430\u0432\u043a\u0438<\/h4>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0437\u0430\u0434\u0430\u0447 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u043e\u0432 \u0434\u043b\u044f 1\u0421. \u041f\u0440\u043e\u043c\u043f\u0442:<\/p>\n<p><em>\u041d\u0443\u0436\u043d\u043e \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0421 \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435 \u0434\u0430\u0442\u044b (\u043f\u043e \u0434\u043d\u044f\u043c) \u0438\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430 [&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430; &amp;\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f] \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e. \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0439 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442), \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0420\u044f\u0434 \u0434\u0430\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u0431\u0435\u0437 \u0446\u0438\u043a\u043b\u043e\u0432 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0432 \u043c\u043e\u0434\u0443\u043b\u0435, \u0431\u0435\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0438\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0442 \u0437\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043e\u0434) \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 (\u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c, \u0433\u0440\u0430\u0444\u0438\u043a). \u041a\u0440\u043e\u043c\u0435 \u0434\u0430\u0442 \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u0442\u044c \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u043c\u0435\u0441\u044f\u0446\u0430\u043c\u0438, \u0434\u043d\u044f\u043c\u0438 \u043d\u0435\u0434\u0435\u043b\u0438 \u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 (\u0441\u0443\u0431\u0431\u043e\u0442\u0430 \u0438 \u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435).<\/em><\/p>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e \u043f\u0440\u0430\u0432\u043a\u0438:<\/p>\n<p><em>\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 (recursive CTE) 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8.3. \u0412 \u0437\u0430\u043f\u0440\u043e\u0441\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 1\u0421 (\u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 8.3.17) \u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0412\u041d\u041e \u0421\u041e\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u041d\u0415\u0428\u041d\u0415, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u00ab\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u00bb \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u2014 \u0431\u0435\u0437 \u0446\u0438\u043a\u043b\u043e\u0432, \u0431\u0435\u0437 \u0442\u0430\u0431\u043b\u0438\u0446 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0438 \u0431\u0435\u0437 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445.<\/em><\/p>\n<pre><code>\u0417\u0430\u043f\u0440\u043e\u0441.\u0422\u0435\u043a\u0441\u0442 =\"\u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0412\u041d\u041e \u0421\u041e\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u041d\u0415\u0428\u041d\u0415 \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c||\u0412\u042b\u0411\u0420\u0410\u0422\u042c|    \u0411\u0430\u0437\u0430.\u0414\u0430\u0442\u0430 \u041a\u0410\u041a \u0414\u0430\u0442\u0430|\u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c||\u0418\u0417|    (|        \u0412\u042b\u0411\u0420\u0410\u0422\u042c|            &amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430 \u041a\u0410\u041a \u0414\u0430\u0442\u0430|    ) \u041a\u0410\u041a \u0411\u0430\u0437\u0430||\u0421\u041e\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u041d\u0415\u0428\u041d\u0415 \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c||\u0412\u042b\u0411\u0420\u0410\u0422\u042c|    \u0411\u0430\u0437\u0430.\u0414\u0430\u0442\u0430 + 1 \u041a\u0410\u041a \u0414\u0430\u0442\u0430|\u0418\u0417|    \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u041a\u0410\u041a \u0411\u0430\u0437\u0430|    \u0421\u041e\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u041d\u0415\u0428\u041d\u0415 \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c|        \u041f\u041e \u0411\u0430\u0437\u0430.\u0414\u0430\u0442\u0430 + 1 &lt;= &amp;\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f|||\u0412\u042b\u0411\u0420\u0410\u0422\u042c|    \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c.\u0414\u0430\u0442\u0430 \u041a\u0410\u041a \u0414\u0430\u0442\u0430,|    \u041c\u0435\u0441\u044f\u0446(\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c.\u0414\u0430\u0442\u0430) \u041a\u0410\u041a \u041c\u0435\u0441\u044f\u0446,|    \u041c\u0435\u0441\u044f\u0446\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435(\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c.\u0414\u0430\u0442\u0430) \u041a\u0410\u041a \u041c\u0435\u0441\u044f\u0446\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435,|    \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438(\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c.\u0414\u0430\u0442\u0430) \u041a\u0410\u041a \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438,|    \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435(\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c.\u0414\u0430\u0442\u0430) \u041a\u0410\u041a \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435,|    (\u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438(\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c.\u0414\u0430\u0442\u0430) &gt;= 6) \u041a\u0410\u041a \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439\u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439|\u0418\u0417|    \u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c|\u0423\u041f\u041e\u0420\u042f\u0414\u041e\u0427\u0418\u0422\u042c \u041f\u041e|    \u0414\u0430\u0442\u0430\";<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e, \u043d\u043e \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0432 \u043d\u0451\u043c \u2014 \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0430\u0446\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0439 CTE \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0451\u043d \u0438\u0437 SQL.<\/strong> \u0412 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0421 \u043d\u0435\u0442 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0430 \u00ab\u0420\u0415\u041a\u0423\u0420\u0421\u0418\u0412\u041d\u041e \u0421\u041e\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u041d\u0415\u0428\u041d\u0415\u00bb \u0438 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044e 8.3.17 \u0432\u044b\u0434\u0443\u043c\u0430\u043d\u044b. \u042d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e\u0442 \u043f\u0435\u0440\u0435\u043d\u043e\u0441 SQL-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0442\u0435\u043f\u043b\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u043e\u044f\u0445.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.<\/strong> \u00ab\u0421\u041e\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u041d\u0415\u0428\u041d\u0415\u00bb \u0432 1\u0421 \u043d\u0435\u0442 \u2014 \u0435\u0441\u0442\u044c \u041b\u0415\u0412\u041e\u0415, \u041f\u0420\u0410\u0412\u041e\u0415, \u041f\u041e\u041b\u041d\u041e\u0415 \u0438 \u0412\u041d\u0423\u0422\u0420\u0415\u041d\u041d\u0415\u0415 \u0421\u041e\u0415\u0414\u0418\u041d\u0415\u041d\u0418\u0415, \u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c (\u0412\u0421\u0415).<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430 \u0441 \u0434\u0430\u0442\u043e\u0439.<\/strong> \u0412 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \u0434\u0430\u0442\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u0438\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e: \u0434\u043b\u044f \u0441\u0434\u0432\u0438\u0433\u0430 \u043d\u0430 \u0434\u0435\u043d\u044c \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0414\u041e\u0411\u0410\u0412\u0418\u0422\u042c\u041a\u0414\u0410\u0422\u0415(\u0414\u0430\u0442\u0430, \u0414\u0415\u041d\u042c, 1). \u0412\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 <code>\u0414\u0430\u0442\u0430 + 1<\/code> \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u043b\u044e\u0441 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u0434\u0443\u043c\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/strong> \u041c\u0415\u0421\u042f\u0426() \u0438 \u0414\u0415\u041d\u042c\u041d\u0415\u0414\u0415\u041b\u0418() \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442, \u0430 \u041c\u0435\u0441\u044f\u0446\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435() \u0438 \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435() \u2014 \u043d\u0435\u0442; \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0412\u042b\u0411\u041e\u0420 \u2026 \u041a\u041e\u0413\u0414\u0410 \u0438\u043b\u0438 \u0424\u041e\u0420\u041c\u0410\u0422 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043b\u043e\u043c\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0430\u043a\u0435\u0442\u0430.<\/strong> \u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043d\u0430 \u0441\u0435\u0431\u044f, \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u0442\u043e\u0447\u043a\u043e\u0439 \u0441 \u0437\u0430\u043f\u044f\u0442\u043e\u0439 \u2014 \u0442\u0430\u043a\u043e\u0439 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0434\u0430\u0436\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438: \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0446\u0438\u0444\u0440 0\u20139, \u0435\u0451 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0441 \u0441\u0430\u043c\u043e\u0439 \u0441\u043e\u0431\u043e\u0439 \u0434\u0430\u0451\u0442 \u0440\u044f\u0434 \u0447\u0438\u0441\u0435\u043b N, \u0430 \u0434\u0430\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0414\u041e\u0411\u0410\u0412\u0418\u0422\u042c\u041a\u0414\u0410\u0422\u0415(&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430, \u0414\u0415\u041d\u042c, N) \u0441 \u043e\u0442\u0431\u043e\u0440\u043e\u043c \u043f\u043e &amp;\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f.<\/p>\n<h4>\u0422\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u043c\u043f\u0442 \u043f\u043e\u0441\u043b\u0435 NERVE-\u043f\u0440\u0430\u0432\u043a\u0438<\/h4>\n<pre><code>\u0412\u042b\u0411\u0420\u0410\u0422\u042c    &amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430 + (\u04141.\u0426\u0438\u0444\u0440\u0430 * 1000 + \u04142.\u0426\u0438\u0444\u0440\u0430 * 100 + \u04143.\u0426\u0438\u0444\u0440\u0430 * 10 + \u04144.\u0426\u0438\u0444\u0440\u0430) \u041a\u0410\u041a \u0414\u0430\u0442\u0430,    \u041c\u0415\u0421\u042f\u0426(&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430 + (\u04141.\u0426\u0438\u0444\u0440\u0430 * 1000 + \u04142.\u0426\u0438\u0444\u0440\u0430 * 100 + \u04143.\u0426\u0438\u0444\u0440\u0430 * 10 + \u04144.\u0426\u0438\u0444\u0440\u0430)) \u041a\u0410\u041a \u041c\u0435\u0441\u044f\u0446,    \u0414\u0415\u041d\u042c\u041d\u0415\u0414\u0415\u041b\u0418(&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430 + (\u04141.\u0426\u0438\u0444\u0440\u0430 * 1000 + \u04142.\u0426\u0438\u0444\u0440\u0430 * 100 + \u04143.\u0426\u0438\u0444\u0440\u0430 * 10 + \u04144.\u0426\u0438\u0444\u0440\u0430)) \u041a\u0410\u041a \u0414\u0435\u043d\u044c\u041d\u0435\u0434\u0435\u043b\u0438,    \u0412\u042b\u0411\u041e\u0420        \u041a\u041e\u0413\u0414\u0410 \u0414\u0415\u041d\u042c\u041d\u0415\u0414\u0415\u041b\u0418(&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430 + (\u04141.\u0426\u0438\u0444\u0440\u0430 * 1000 + \u04142.\u0426\u0438\u0444\u0440\u0430 * 100 + \u04143.\u0426\u0438\u0444\u0440\u0430 * 10 + \u04144.\u0426\u0438\u0444\u0440\u0430)) \u0412 (6, 7)            \u0422\u041e\u0413\u0414\u0410 \u0418\u0421\u0422\u0418\u041d\u0410        \u0418\u041d\u0410\u0427\u0415 \u041b\u041e\u0416\u042c    \u041a\u041e\u041d\u0415\u0426 \u041a\u0410\u041a \u0412\u044b\u0445\u043e\u0434\u043d\u043e\u0439\u0418\u0417    (\u0412\u042b\u0411\u0420\u0410\u0422\u042c 0 \u041a\u0410\u041a \u0426\u0438\u0444\u0440\u0430 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 1 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 2 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 3        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 4 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 5 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 6        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 7 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 8 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 9) \u041a\u0410\u041a \u04141,    (\u0412\u042b\u0411\u0420\u0410\u0422\u042c 0 \u041a\u0410\u041a \u0426\u0438\u0444\u0440\u0430 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 1 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 2 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 3        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 4 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 5 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 6        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 7 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 8 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 9) \u041a\u0410\u041a \u04142,    (\u0412\u042b\u0411\u0420\u0410\u0422\u042c 0 \u041a\u0410\u041a \u0426\u0438\u0444\u0440\u0430 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 1 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 2 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 3        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 4 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 5 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 6        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 7 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 8 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 9) \u041a\u0410\u041a \u04143,    (\u0412\u042b\u0411\u0420\u0410\u0422\u042c 0 \u041a\u0410\u041a \u0426\u0438\u0444\u0440\u0430 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 1 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 2 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 3        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 4 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 5 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 6        \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 7 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 8 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415 \u0412\u042b\u0411\u0420\u0410\u0422\u042c 9) \u041a\u0410\u041a \u04144\u0413\u0414\u0415    \u04141.\u0426\u0438\u0444\u0440\u0430 * 1000 + \u04142.\u0426\u0438\u0444\u0440\u0430 * 100 + \u04143.\u0426\u0438\u0444\u0440\u0430 * 10 + \u04144.\u0426\u0438\u0444\u0440\u0430 &lt;= \u0420\u0410\u0417\u041d\u041e\u0421\u0422\u042c\u0414\u0410\u0422(&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430, &amp;\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f, \u0414\u0415\u041d\u042c)\u0423\u041f\u041e\u0420\u042f\u0414\u041e\u0427\u0418\u0422\u042c \u041f\u041e    \u0414\u0430\u0442\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u2014 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u0430 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c SQL-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0430\u0441\u044c \u043a \u0438\u0434\u0438\u043e\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 1\u0421-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0435\u0448\u0430\u044e\u0442 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435:<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0435\u0442 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u0438 \u0432\u044b\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430.<\/strong> \u0412\u043c\u0435\u0441\u0442\u043e \u00ab\u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u0433\u043e CTE\u00bb \u2014 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0446\u0438\u0444\u0440 0\u20139, \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u044f\u0434 \u0447\u0438\u0441\u0435\u043b 0\u20269999 (\u0434\u043e ~27 \u043b\u0435\u0442 \u2014 \u00ab\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442\u00bb \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c).<\/p>\n<\/li>\n<li>\n<p><strong>\u0422\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/strong> \u0420\u0410\u0417\u041d\u041e\u0421\u0422\u042c\u0414\u0410\u0422(\u2026, \u0414\u0415\u041d\u042c) \u0434\u043b\u044f \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0430, \u041c\u0415\u0421\u042f\u0426() \u0438 \u0414\u0415\u041d\u042c\u041d\u0415\u0414\u0415\u041b\u0418() \u0434\u043b\u044f \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0412\u042b\u0411\u041e\u0420 \u2026 \u041a\u041e\u0413\u0414\u0410 \u2026 \u0412 (6, 7) \u0434\u043b\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u2014 \u0432\u0441\u0451 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e \u043f\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430.<\/strong> \u041e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441, \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u041e\u0411\u042a\u0415\u0414\u0418\u041d\u0418\u0422\u042c \u0412\u0421\u0415, \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 \u0413\u0414\u0415, \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0434\u0430\u0442\u0435. \u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439: \u043f\u0440\u0438 N = \u0420\u0410\u0417\u041d\u041e\u0421\u0422\u042c\u0414\u0410\u0422 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0438 &amp;\u0414\u0430\u0442\u0430\u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0434\u043d\u0430 \u043e\u0448\u0438\u0431\u043a\u0430 \u0432\u0441\u0451 \u0436\u0435 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c: <code>&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430 + N<\/code>. \u0421\u0434\u0432\u0438\u0433 \u0434\u0430\u0442\u044b \u0432 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \u0414\u041e\u0411\u0410\u0412\u0418\u0422\u042c\u041a\u0414\u0410\u0422\u0415(&amp;\u0414\u0430\u0442\u0430\u041d\u0430\u0447\u0430\u043b\u0430, \u0414\u0415\u041d\u042c, N); \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u043a \u0434\u0430\u0442\u0435 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438 \u0438\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u0434\u0435 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 +1 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0430 \u043d\u0435 \u0434\u0435\u043d\u044c). \u0414\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u044d\u0442\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0447\u0435\u0442\u044b\u0440\u0451\u0445 \u043c\u0435\u0441\u0442\u0430\u0445. \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0441\u043c\u0435\u0441\u0442\u0438\u043b\u0430\u0441\u044c \u0441 \u0443\u0440\u043e\u0432\u043d\u044f \u00ab\u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0438 \u0432\u044b\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u00bb \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u00ab\u043e\u0434\u043d\u0430 \u043d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00bb \u2014 \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u0438 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0439 \u043f\u0440\u0430\u0432\u043a\u0438, \u0430 \u043d\u0435 \u043e\u0442 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h4>\u041f\u0440\u0438\u043c\u0435\u0440 2: \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u2014 \u0433\u0434\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e<\/h4>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u043c\u043f\u0442 \u2014 \u00ab\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0439 \u0437\u0430\u043f\u0440\u043e\u0441\u00bb \u2014 \u043d\u0430 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0435 \u0438\u0437 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c:<\/p>\n<pre><code>\u0412\u042b\u0411\u0420\u0410\u0422\u042c \u0420\u0410\u0417\u041b\u0418\u0427\u041d\u042b\u0415    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0414\u043e\u0441\u0442\u0443\u043f\u0430 \u041a\u0410\u041a \u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439,    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u041a\u0410\u041a \u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0418\u0417    \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0413\u0440\u0443\u043f\u043f\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0410\u041a \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0413\u0414\u0415    \u0418\u0421\u0422\u0418\u041d\u0410 \u0412        (\u0412\u042b\u0411\u0420\u0410\u0422\u042c \u041f\u0415\u0420\u0412\u042b\u0415 1 \u0418\u0421\u0422\u0418\u041d\u0410         \u0418\u0417 \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a.\u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u041a\u0410\u041a \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438            \u0412\u041d\u0423\u0422\u0420\u0415\u041d\u041d\u0415\u0415 \u0421\u041e\u0415\u0414\u0418\u041d\u0415\u041d\u0418\u0415 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u041a\u0410\u041a \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439            \u041f\u041e \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u0421\u0441\u044b\u043b\u043a\u0430 = \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430               \u0418 \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c = \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u0413\u0440\u0443\u043f\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439               \u0418 \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c = &amp;\u0422\u0435\u043a\u0443\u0449\u0438\u0439\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c);\u0412\u042b\u0411\u0420\u0410\u0422\u042c \u0420\u0410\u0417\u041b\u0418\u0427\u041d\u042b\u0415 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u041a\u0410\u041a \u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0418\u0417 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u041a\u0410\u041a \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0421\u0413\u0420\u0423\u041f\u041f\u0418\u0420\u041e\u0412\u0410\u0422\u042c \u041f\u041e \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0418\u041c\u0415\u042e\u0429\u0418\u0415 \u041c\u0418\u041d\u0418\u041c\u0423\u041c(\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439) = \u0418\u0421\u0422\u0418\u041d\u0410<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e \u043f\u0440\u0430\u0432\u043a\u0438:<\/p>\n<pre><code>\u0412\u042b\u0411\u0420\u0410\u0422\u042c    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0414\u043e\u0441\u0442\u0443\u043f\u0430 \u041a\u0410\u041a \u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0418\u0417    \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0413\u0440\u0443\u043f\u043f\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0410\u041a \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e    \u0412\u041d\u0423\u0422\u0420\u0415\u041d\u041d\u0415\u0415 \u0421\u041e\u0415\u0414\u0418\u041d\u0415\u041d\u0418\u0415 \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a.\u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u041a\u0410\u041a \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438    \u041f\u041e \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430 = \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u0421\u0441\u044b\u043b\u043a\u0430    \u0412\u041d\u0423\u0422\u0420\u0415\u041d\u041d\u0415\u0415 \u0421\u041e\u0415\u0414\u0418\u041d\u0415\u041d\u0418\u0415 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u041a\u0410\u041a \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439    \u041f\u041e \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c = \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u0413\u0440\u0443\u043f\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439       \u0418 \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c = &amp;\u0422\u0435\u043a\u0443\u0449\u0438\u0439\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0421\u0413\u0420\u0423\u041f\u041f\u0418\u0420\u041e\u0412\u0410\u0422\u042c \u041f\u041e    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u0418\u041c\u0415\u042e\u0429\u0418\u0415 \u041c\u0418\u041d\u0418\u041c\u0423\u041c(\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439) = \u0418\u0421\u0422\u0418\u041d\u0410<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041e\u0442\u0432\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 NERVE-\u043f\u0440\u0430\u0432\u043a\u0438:<\/p>\n<pre><code>\/\/ \u041f\u0415\u0420\u0412\u042b\u0415: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0412\u042b\u0411\u0420\u0410\u0422\u042c \u0420\u0410\u0417\u041b\u0418\u0427\u041d\u042b\u0415    \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u0421\u0441\u044b\u043b\u043a\u0430 \u041a\u0410\u041a \u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0418\u0417    \u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a.\u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u041a\u0410\u041a \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438        \u0412\u041d\u0423\u0422\u0420\u0415\u041d\u041d\u0415\u0415 \u0421\u041e\u0415\u0414\u0418\u041d\u0415\u041d\u0418\u0415 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u041a\u0410\u041a \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439        \u041f\u041e \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u0421\u0441\u044b\u043b\u043a\u0430 = \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u0413\u0440\u0443\u043f\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439            \u0418 \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c = &amp;\u0422\u0435\u043a\u0443\u0449\u0438\u0439\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c;\/\/ \u0418\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0421\u041e\u0417\u0414\u0410\u0422\u042c \u0418\u041d\u0414\u0415\u041a\u0421 \u0418\u043d\u0434\u0435\u043a\u0441\u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u041f\u041e \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f(\u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430);\/\/ \u0412\u0422\u041e\u0420\u041e\u0419: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0412\u042b\u0411\u0420\u0410\u0422\u042c \u0420\u0410\u0417\u041b\u0418\u0427\u041d\u042b\u0415    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0414\u043e\u0441\u0442\u0443\u043f\u0430 \u041a\u0410\u041a \u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439,    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u041a\u0410\u041a \u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439\u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0418\u0417    \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0421\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u0413\u0440\u0443\u043f\u043f\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u041a\u0410\u041a \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e        \u0412\u041d\u0423\u0422\u0420\u0415\u041d\u041d\u0415\u0415 \u0421\u041e\u0415\u0414\u0418\u041d\u0415\u041d\u0418\u0415 \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u041a\u0410\u041a \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f        \u041f\u041e \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.\u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430 = \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430;\/\/ \u0422\u0420\u0415\u0422\u0418\u0419: \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0438\u043f\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0441\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0412\u042b\u0411\u0420\u0410\u0422\u042c \u0420\u0410\u0417\u041b\u0418\u0427\u041d\u042b\u0415    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u041a\u0410\u041a \u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0418\u0417    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u041a\u0410\u041a \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u0421\u0413\u0420\u0423\u041f\u041f\u0418\u0420\u041e\u0412\u0410\u0422\u042c \u041f\u041e    \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\u0422\u0438\u043f\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u0418\u041c\u0415\u042e\u0429\u0418\u0415    \u041c\u0418\u041d\u0418\u041c\u0423\u041c(\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\u0412\u0441\u0435\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u0411\u0435\u0437\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439) = \u0418\u0421\u0422\u0418\u041d\u0410<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0447\u0435\u0441\u0442\u043d\u0435\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0430\u0432\u043a\u0430 \u043c\u0435\u043d\u044f\u0435\u0442, \u0430 \u0447\u0442\u043e \u043d\u0435\u0442.<\/p>\n<p><strong>\u0427\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u043b\u0443\u0447\u0448\u0435 \u2014 \u043f\u043e\u0434\u0445\u043e\u0434.<\/strong> \u041c\u043e\u0434\u0435\u043b\u044c \u0434\u043e \u043f\u0440\u0430\u0432\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0440\u0430\u0441\u043f\u043b\u044e\u0449\u0438\u043b\u0430\u00bb \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439: \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e\u0442 \u0436\u0435, \u043d\u043e \u043f\u0440\u043e\u043f\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u041f\u043e\u0423\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\u0414\u043b\u044f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0430 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435 \u0432 \u043f\u0430\u043a\u0435\u0442\u0435), \u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u041f\u0415\u0420\u0412\u042b\u0415 1 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u043a\u0430\u0436\u0434\u0443\u044e \u0433\u0440\u0443\u043f\u043f\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u041f\u0440\u0430\u0432\u043b\u0435\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0434\u043b\u044f 1\u0421 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e: \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u043f\u0440\u043e\u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0451 \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043a\u043e\u0440\u0440\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434\u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c \u2014 \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<p><strong>\u0427\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043b\u043e\u0445\u043e \u2014 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c.<\/strong> \u0412 \u043e\u0442\u0432\u0435\u0442\u0435 \u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0432\u0435 \u043e\u0448\u0438\u0431\u043a\u0438:<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f<\/strong> \u2014 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f. \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 <code>\u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c = \u0421\u043e\u0441\u0442\u0430\u0432\u044b\u0413\u0440\u0443\u043f\u043f\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.\u0413\u0440\u0443\u043f\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/code> \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u043e\u0441\u044c \u0432 <code>\u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438.\u0421\u0441\u044b\u043b\u043a\u0430 = \u2026\u0413\u0440\u0443\u043f\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439<\/code>: \u0433\u0440\u0443\u043f\u043f\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0437\u0430\u043f\u0440\u043e\u0441 \u0432\u0435\u0440\u043d\u0451\u0442 \u043f\u0443\u0441\u0442\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0430.<\/strong> \u00ab\u0421\u041e\u0417\u0414\u0410\u0422\u042c \u0418\u041d\u0414\u0415\u041a\u0421 \u2026 \u041f\u041e \u0422\u0430\u0431\u043b\u0438\u0446\u0430(\u041f\u043e\u043b\u0435)\u00bb \u2014 \u044d\u0442\u043e SQL. \u0412 1\u0421 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0441\u0430\u043c\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435: <code>\u041f\u041e\u041c\u0415\u0421\u0422\u0418\u0422\u042c \u0413\u0440\u0443\u043f\u043f\u044b\u0414\u043e\u0441\u0442\u0443\u043f\u0430\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u2026 \u0418\u041d\u0414\u0415\u041a\u0421\u0418\u0420\u041e\u0412\u0410\u0422\u042c \u041f\u041e \u0413\u0440\u0443\u043f\u043f\u0430\u0414\u043e\u0441\u0442\u0443\u043f\u0430<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u044b\u0432\u043e\u0434: \u043f\u0440\u0430\u0432\u043a\u0430 \u043f\u043e \u043a\u0430\u0440\u0442\u0435 <code>1c_lang_query<\/code> \u0441\u0434\u0432\u0438\u043d\u0443\u043b\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0439 \u0438\u0434\u0438\u043e\u043c\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u043d\u0435 \u043d\u0430\u0443\u0447\u0438\u043b\u0430 \u0435\u0451 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u0430 \u043e\u0434\u0438\u043d SQL-\u0440\u0435\u0444\u043b\u0435\u043a\u0441 (CREATE INDEX) \u043f\u0435\u0440\u0435\u0436\u0438\u043b \u043f\u043e\u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e: \u0442\u043e\u0447\u0435\u0447\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u043a\u0430 \u0443\u0431\u0438\u0440\u0430\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u00ab\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435\u00bb \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f\u0445, \u043d\u043e \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0435\u0442. \u0422\u0430\u043a\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u2014 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438: \u043d\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u043f\u043e \u043f\u0430\u0440\u0430\u043c \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u0432 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u0445 \u0438\u043b\u0438 \u0434\u043b\u044f DPO.<\/p>\n<h3>11. \u0413\u0440\u0430\u0431\u043b\u0438 \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h3>\n<ul>\n<li>\n<p><strong>\u041e\u0434\u043d\u0430 \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0443 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443.<\/strong> Margin \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443 \u043f\u0440\u043e\u0442\u0438\u0432 margin \u043f\u043e diff-\u0442\u043e\u043a\u0435\u043d\u0430\u043c \u2014 \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0440\u0430\u0437. \u041b\u044e\u0431\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u0430\u0441\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u0430\u0440\u0442\u043e\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0435\u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u044b\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043c\u0430\u043b\u044b\u0445 \u043f\u0440\u0430\u0432\u043e\u043a.<\/strong> \u0414\u043b\u044f <code>m = 0<\/code> \u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 \u0444\u0430\u043a\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441 <code>\u03a3(m\u22121)\u00b7attr<\/code> \u2014 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u0437\u0430\u043c\u0435\u0440\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 val.<\/strong> \u0416\u0430\u0434\u043d\u044b\u0439 \u043e\u0442\u0431\u043e\u0440 \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0432\u044b\u0431\u043e\u0440\u043a\u0443. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430; \u043d\u0430\u0431\u043e\u0440 \u0431\u0435\u0437 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435 \u044f \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043d\u0430\u0432\u044b\u043a\u0438.<\/strong> \u0411\u0435\u0437 guard \u043f\u0440\u0430\u0432\u043a\u0430 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0441\u043c\u0435\u0436\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u0415\u0441\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u044b \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043b\u0435\u043a\u0441\u0438\u043a\u0435 (\u0437\u0430\u043f\u0440\u043e\u0441\u044b 1\u0421 \u043d\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0438 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432), guard \u0441\u0442\u043e\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c.<\/strong> \u041a\u0430\u0440\u0442\u0430 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0435\u0439 \u043d\u0430 512 \u043f\u0430\u0440\u0430\u0445 \u0438 \u0436\u0430\u0434\u043d\u044b\u0439 \u043e\u0442\u0431\u043e\u0440 \u043d\u0430 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u0445 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 \u2014 \u044d\u0442\u043e \u0447\u0430\u0441\u044b GPU \u043d\u0430 27B-\u043c\u043e\u0434\u0435\u043b\u0438. \u041d\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0438 \u0434\u0435\u0448\u0435\u0432\u043b\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 DPO.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u0440\u0435\u0437\u043a\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043f\u0430\u0440.<\/strong> \u041f\u0430\u0440\u044b \u0434\u043b\u0438\u043d\u043d\u0435\u0435 <code>max_length<\/code> \u043e\u0431\u0440\u0435\u0437\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0445\u0432\u043e\u0441\u0442\u0443; \u0435\u0441\u043b\u0438 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0437\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0435\u0439, \u043f\u0430\u0440\u0430 \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u043a\u0430\u0440\u0442\u044b.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0412\u044b\u0432\u043e\u0434\u044b<\/h3>\n<p>\u0414\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f LLM \u2014 \u043d\u0435 \u0447\u0451\u0440\u043d\u044b\u0439 \u044f\u0449\u0438\u043a. \u041f\u0430\u0440\u0430 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u2014 \u0445\u0443\u043a\u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 <code>down_proj<\/code>, \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u043f\u0430\u0440\u0430\u043c \u0438 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u0430\u044f \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f \u2014 \u0434\u0430\u044e\u0442 \u043a\u0430\u0440\u0442\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0438\u0434\u043d\u043e, \u043a\u0430\u043a\u0438\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0442\u044f\u043d\u0443\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u043a \u043e\u0448\u0438\u0431\u043a\u0435. \u0410 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043e\u0442\u0431\u043e\u0440\u0430 \u0441 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u043e\u0439 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043e\u0439 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u0443 \u043a\u0430\u0440\u0442\u0443 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u0443\u044e \u043f\u0440\u0430\u0432\u043a\u0443 \u0432\u0435\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0435\u0434\u0435\u0442 \u0432 GGUF.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0443\u0440\u043e\u043a \u043d\u0430 <code>1c_lang_query<\/code>: \u043e\u0448\u0438\u0431\u043a\u0438 \u00ab\u0440\u0430\u0437\u043c\u0430\u0437\u0430\u043d\u044b\u00bb \u043f\u043e \u0432\u0441\u0435\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u0441\u0435\u0442\u0438, \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u0435\u0435 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043d\u043e \u0438 <strong>\u0433\u0430\u0441\u0438\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b<\/strong>.<\/p>\n<p><strong>\u041f\u0440\u0430\u0432\u043a\u0430 \u0432\u0441\u0435\u0433\u043e 15 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u0434\u0430\u043b\u0430 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0431\u0443\u0441\u0442 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0441!<\/strong><\/p>\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\/1104848\/\">https:\/\/habr.com\/ru\/articles\/1104848\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0415\u0441\u0442\u044c Qwen 3.8 27B, \u0434\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f (SFT + LoRA) \u043d\u0430 \u043a\u043e\u0440\u043f\u0443\u0441\u0435 \u043f\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u2014 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u0430 \u043d\u0430 hugging face. \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u043e \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0421 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f: \u043f\u0443\u0442\u0430\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u0441\u0442\u0430\u0432\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043d\u0435 \u0442\u0443\u0434\u0430, \u043f\u043e\u0434\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 SQL, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 1\u0421 \u043d\u0435\u0442.\u041f\u043e\u043f\u044b\u0442\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0442\u044c \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u0432\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u0438 \u043d\u043e\u0432\u044b\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b \u043f\u043e \u044f\u0437\u044b\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 1\u0421, \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442. \u0412\u044b\u0438\u0433\u0440\u044b\u0448 \u0432 accuracy \u0434\u0430\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435 1%. \u041d\u0443 \u0438 \u044d\u0442\u043e \u0434\u043e\u043b\u0433\u0438\u0439 \u0438 \u043c\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441.\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043c\u0443\u0447\u0435\u043d\u0438\u0439 \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 qwen, \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430: \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0435\u0448\u0430\u044e\u0442 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u043e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u043c SQL, \u0442.\u043a. \u043b\u0435\u043a\u0441\u0435\u043c\u044b \u0441\u0445\u043e\u0436\u0438\u0435 (SELECT, WITH, JOIN \u0438.\u0442.\u043f.).\u041e\u0442\u0441\u044e\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u00ab\u0442\u044f\u043d\u0443\u0442\u00bb \u043c\u043e\u0434\u0435\u043b\u044c \u043a \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443, \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0445?\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u043d\u0430\u0437\u0432\u0430\u043b NERVE (Neuron Editing, Reweighted &amp; Val-Evaluated):\u0441\u0442\u0440\u043e\u0438\u043c \u0442\u0435\u043f\u043b\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043d\u0430 \u043f\u0430\u0440\u0430\u0445 \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \/ \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442\u00bb;\u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u0443\u044e \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044e \u2014 \u043f\u0440\u043e\u0433\u043d\u043e\u0437, \u043a\u0430\u043a \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u0435\u0441\u043b\u0438 \u043d\u0435\u0439\u0440\u043e\u043d \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0438\u0442\u044c;\u0436\u0430\u0434\u043d\u043e \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0435\u0439\u0440\u043e\u043d\u044b \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u043e\u0442\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0439 \u0432\u044b\u0431\u043e\u0440\u043a\u0435 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0435;\u043a\u043e\u043f\u0438\u043c \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 \u043d\u0430\u0431\u043e\u0440\u0435 \u0438 \u0432\u044b\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0432 GGUF.\u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u2014 \u043d\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 1c_lang_query (\u0437\u0430\u043f\u0440\u043e\u0441\u044b 1\u0421). \u041a\u043e\u0434 \u2014 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, PyTorch + Hugging Face Transformers + PEFT.1. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u00ab\u043d\u0435\u0439\u0440\u043e\u043d\u00bb \u0432 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0435\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 Qwen \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043b\u043e\u043a \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0438 MLP-\u0431\u043b\u043e\u043a. MLP \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u043e \u0441\u0445\u0435\u043c\u0435 SwiGLU:\u0417\u0434\u0435\u0441\u044c x \u2014 \u0441\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 (\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0438 hidden_size), h \u2014 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 (\u0443 Qwen 3.8 27B \u2014 17 408 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442), y \u2014 \u0432\u043a\u043b\u0430\u0434 MLP \u0432 residual stream. \u041d\u0435\u0439\u0440\u043e\u043d\u043e\u043c \u0431\u0443\u0434\u0435\u043c \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0443 h_i \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c \u043c\u0430\u0442\u0440\u0438\u0446\u044b W_down[:, i]: \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0447\u0442\u043e \u043d\u0435\u0439\u0440\u043e\u043d \u043f\u0438\u0448\u0435\u0442 \u0432 residual stream, \u043a\u043e\u0433\u0434\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f.\u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438 \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 W_down[:, i] \u043d\u0430 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 m \u2014 \u044d\u0442\u043e \u0440\u043e\u0432\u043d\u043e \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 h_i \u043d\u0430 m \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u0435. m = 0 \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u043d\u0435\u0439\u0440\u043e\u043d, m = 0.5 \u043f\u0440\u0438\u0433\u043b\u0443\u0448\u0430\u0435\u0442 \u0432\u0434\u0432\u043e\u0435, m = 1.5 \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0435\u0442. \u041f\u0440\u0430\u0432\u043a\u0430 \u043d\u0435 \u043c\u0435\u043d\u044f\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 GGUF.\u041c\u0430\u0441\u0448\u0442\u0430\u0431 \u043f\u043e\u0438\u0441\u043a\u0430: 64 \u0441\u043b\u043e\u044f \u00d7 17 408 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 = 1 114 112 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432. \u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0442\u044c \u0432\u0441\u043b\u0435\u043f\u0443\u044e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e, \u043d\u0443\u0436\u043d\u0430 \u043a\u0430\u0440\u0442\u0430.2. \u0414\u0430\u043d\u043d\u044b\u0435: \u043f\u0430\u0440\u044b \u00ab\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \/ \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb\u0414\u043b\u044f \u043a\u0430\u0440\u0442\u044b \u043d\u0443\u0436\u043d\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u044b, \u0430 preference-\u043f\u0430\u0440\u044b \u2014 \u0442\u043e\u0442 \u0436\u0435 \u0444\u043e\u0440\u043c\u0430\u0442, \u0447\u0442\u043e \u0438 \u0434\u043b\u044f DPO: \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u043c\u043f\u0442, \u043e\u0442\u0432\u0435\u0442 chosen (\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 1\u0421) \u0438 rejected (\u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u043e\u0439). \u0412 1c_lang_query \u043e\u043a\u043e\u043b\u043e \u0434\u0432\u0443\u0445 \u0442\u044b\u0441\u044f\u0447 \u0442\u0430\u043a\u0438\u0445 \u043f\u0430\u0440 \u0432 train \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 val.\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0438\u0434\u0435\u044f: \u0432 \u043f\u0430\u0440\u0435 chosen \u0438 rejected \u043e\u0431\u044b\u0447\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 90\u201395%. \u0415\u0441\u043b\u0438 \u0443\u0441\u0440\u0435\u0434\u043d\u044f\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443, \u043e\u0431\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u00ab\u0440\u0430\u0437\u043c\u0430\u0436\u0435\u0442\u00bb \u0441\u0438\u0433\u043d\u0430\u043b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u044b. \u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 difflib.SequenceMatcher \u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0435 \u043f\u043e\u043f\u0430\u043b\u043e \u0432 \u043e\u0431\u0449\u0438\u0435 \u0431\u043b\u043e\u043a\u0438:def diff_token_mask(chosen_ids, rejected_ids):    &#171;&#187;&#187;\u041e\u0442\u043c\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043a\u0435\u043d\u044b \u043e\u0442\u0432\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u0432 \u043e\u0431\u0449\u0438\u0445 \u0431\u043b\u043e\u043a\u0430\u0445 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439.&#187;&#187;&#187;    import difflib    chosen_mask = [False] * len(chosen_ids)    rejected_mask = [False] * len(rejected_ids)    matcher = difflib.SequenceMatcher(None, chosen_ids, rejected_ids, autojunk=False)    for tag, c_start, c_end, r_start, r_end in matcher.get_opcodes():        if tag == &#171;equal&#187;:            continue        for index in range(c_start, c_end):            chosen_mask[index] = True        for index in range(r_start, r_end):            rejected_mask[index] = True    # \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0431\u0435\u0437 \u043e\u0442\u043b\u0438\u0447\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043c\u0430\u0441\u043a\u0443 \u043d\u0430 \u0432\u0435\u0441\u044c \u043e\u0442\u0432\u0435\u0442    if not any(chosen_mask):        chosen_mask = [True] * len(chosen_ids)    if not any(rejected_mask):        rejected_mask = [True] * len(rejected_ids)    return chosen_mask, rejected_mask\u0412\u0430\u0436\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u043b\u0441\u044f: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043a\u0430\u0440\u0442\u0430 \u0441\u0442\u0440\u043e\u0438\u043b\u0430\u0441\u044c \u043f\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u043c\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0447\u0438\u0442\u0430\u043b\u0430\u0441\u044c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043e\u0442\u0432\u0435\u0442\u0443. \u042d\u0444\u0444\u0435\u043a\u0442 \u043f\u0440\u0430\u0432\u043a\u0438 \u0440\u0430\u0437\u0431\u0430\u0432\u043b\u044f\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0432 25 \u0440\u0430\u0437, \u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0442\u043e\u043d\u0443\u043b\u0438 \u0432 \u0448\u0443\u043c\u0435. \u0421\u0435\u0439\u0447\u0430\u0441 \u0438 \u043a\u0430\u0440\u0442\u0430, \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043e\u0434\u043d\u0443 \u0438 \u0442\u0443 \u0436\u0435 diff-\u043c\u0430\u0441\u043a\u0443.3. \u0422\u0435\u043f\u043b\u043e\u0432\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f3.1. \u0421\u043d\u0438\u043c\u0430\u0435\u043c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u0445\u0443\u043a\u0430\u043c\u0438\u041c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 BF16, LoRA-\u0430\u0434\u0430\u043f\u0442\u0435\u0440 \u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0432\u0435\u0441\u0430 (merge_and_unload), \u0438 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e mlp.down_proj \u0432\u0435\u0448\u0430\u0435\u0442\u0441\u044f forward_pre_hook. \u0412\u0445\u043e\u0434 down_proj \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440 h:modules = [(name, m) for name, m in merged.named_modules()           if name.endswith(&#171;mlp.down_proj&#187;)]def make_hook(name):    def hook(module, args):        hidden = args[0]                       # [batch, seq, 17408]        flat = hidden[0] if hidden.ndim == 3 else hidden        rows = torch.tensor(current_mask, device=flat.device)        selected = flat[rows].detach().float().abs()        sums[name] = selected.sum(dim=0)       # \u0441\u0443\u043c\u043c\u0430 |h| \u043f\u043e diff-\u0442\u043e\u043a\u0435\u043d\u0430\u043c        counts[name] = int(selected.shape[0])    return hookhandles = [m.register_forward_pre_hook(make_hook(n)) for n, m in modules]\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0430\u0440\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0434\u0432\u0430 forward-\u043f\u0440\u043e\u0445\u043e\u0434\u0430 \u2014 \u043f\u043e chosen \u0438 \u043f\u043e rejected \u2014 \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u044e\u044e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u0443\u044e \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u0445:\u0417\u0434\u0435\u0441\u044c T\u1d9c \u0438 T\u02b3 \u2014 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043e\u0442\u0432\u0435\u0442\u0430 chosen \u0438 rejected. \u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u043b\u044c\u0442\u0430 \u2014 \u043d\u0435\u0439\u0440\u043e\u043d \u0441\u0438\u043b\u044c\u043d\u0435\u0435 \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0435, \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u2014 \u043d\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u043c.3.2. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u043f\u043e \u043f\u0430\u0440\u0430\u043c: \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0440\u0435\u0434\u043d\u0435\u0435\u041e\u0434\u043d\u0430 \u043f\u0430\u0440\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442. \u041f\u043e \u0432\u0441\u0435\u043c n \u043f\u0430\u0440\u0430\u043c \u043a\u043e\u043f\u0438\u043c \u043f\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u043e \u0441\u0443\u043c\u043c\u0443, \u0441\u0443\u043c\u043c\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u043f\u0430\u0440 \u0441 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0435\u043b\u044c\u0442\u043e\u0439 \u2014 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u0435\u0437 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u0435, t-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u043a\u0430:def pair_statistics(sums, sumsq, positive, count):    &#171;&#187;&#187;\u0421\u0440\u0435\u0434\u043d\u0435\u0435, t-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0438 \u0434\u043e\u043b\u044f \u043f\u0430\u0440 \u0441\u043e \u0437\u043d\u0430\u043a\u043e\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e.&#187;&#187;&#187;    n = int(count)    means, t_values, agreement = [], [], []    for i in range(len(sums)):        mean = sums[i] \/ n        if n &gt; 1:            variance = max(0.0, (sumsq[i] &#8212; n * mean * mean) \/ (n &#8212; 1))            std = math.sqrt(variance)            t_value = mean \/ (std \/ math.sqrt(n)) if std &gt; 0 else 0.0        else:            t_value = 0.0        share_positive = positive[i] \/ n        means.append(mean)        t_values.append(t_value)        agreement.append(share_positive if mean &gt;= 0 else 1.0 &#8212; share_positive)    return {&#171;mean&#187;: means, &#171;t&#187;: t_values, &#171;agreement&#187;: agreement}\u041f\u043e\u0447\u0435\u043c\u0443 \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u0435\u043c \u043f\u043e |t|, \u0430 \u043d\u0435 \u043f\u043e |\u03bc|: \u0443 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0434\u0435\u043b\u044c\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u0430\u044e\u0442 \u0434\u0432\u0435-\u0442\u0440\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u044b. t-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0448\u0442\u0440\u0430\u0444\u0443\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0440\u0430\u0437\u0431\u0440\u043e\u0441. \u041f\u0440\u0438 \u043c\u0430\u043b\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043f\u0430\u0440 (\u043c\u0435\u043d\u044c\u0448\u0435 8) t \u043d\u0435\u043d\u0430\u0434\u0451\u0436\u043d\u0430, \u0438 \u043e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043a \u0440\u0430\u043d\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u043e |\u03bc|.3.3. \u041e\u0442 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0447\u0438\u0441\u0435\u043b \u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435\u041a\u0430\u0436\u0434\u044b\u0439 \u0441\u043b\u043e\u0439 \u2014 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438\u0437 17 408 \u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0434\u0435\u043b\u044c\u0442. \u0414\u043b\u044f \u0442\u0435\u043f\u043b\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0434\u0435\u043b\u0430\u0435\u043c 128 \u043a\u043e\u0440\u0437\u0438\u043d \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0438 \u0431\u0435\u0440\u0435\u043c \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432 \u043a\u043e\u0440\u0437\u0438\u043d\u0435. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0440\u0438\u0446\u0430 64 \u00d7 128: \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0441\u043b\u043e\u0438, \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u043a\u043e\u0440\u0437\u0438\u043d\u044b, \u0446\u0432\u0435\u0442 \u2014 \u0437\u043d\u0430\u043a \u0438 \u0441\u0438\u043b\u0430 \u0434\u0435\u043b\u044c\u0442\u044b. \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f top-64 \u043d\u0435\u0439\u0440\u043e\u043d\u043e\u0432 \u043f\u043e |t| \u0441 \u0434\u0435\u043b\u044c\u0442\u043e\u0439, t \u0438 agreement \u2014 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b \u043d\u0430 \u043f\u0440\u0430\u0432\u043a\u0443.def bin_values(values, bin_count=128):    &#171;&#187;&#187;\u0421\u0440\u0435\u0434\u043d\u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u043e \u043a\u043e\u0440\u0437\u0438\u043d\u0430\u043c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0448\u0438\u0440\u0438\u043d\u044b \u0432\u0434\u043e\u043b\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0435\u0439\u0440\u043e\u043d\u0430.&#187;&#187;&#187;    totals = [0.0] * bin_count    sizes = [0] * bin_count    width = len(values)    for index, value in enumerate(values):        bucket = min(bin_count &#8212; 1, index * bin_count \/\/ width)        totals[bucket] += float(value)        sizes[bucket] += 1    return [totals[b] \/ sizes[b] if sizes[b] else 0.0 for b in range(bin_count)]\u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e \u0431\u0440\u043e\u0441\u0438\u043b\u043e\u0441\u044c \u0432 \u0433\u043b\u0430\u0437\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 1c_lang_query: \u0432\u043e\u0437\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u0430\u0445 \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043b\u043e\u0435. \u041c\u043e\u0434\u0435\u043b\u044c \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u00ab\u0432\u044b\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0435\u0442\u00bb SQL-\u0448\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438\u0437 \u0432\u0441\u0435\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0441\u0435\u0442\u0438. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0432\u044b\u0432\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0432\u0435\u0441\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u043d\u0443\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u00ab\u0445\u043e\u0440\u043e\u0448\u0438\u0435\u00bb \u043d\u0435\u0439\u0440\u043e\u043d\u044b, \u043d\u043e \u0438 \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0435!\u0420\u0438\u0441.1\u0420\u0438\u0441.2\u0420\u0438\u0441.34. \u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f: \u043a\u0430\u043a\u043e\u0439 \u043d\u0435\u0439\u0440\u043e\u043d \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u044e, \u043d\u043e \u043d\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u043d\u043e\u0441\u0442\u044c: \u043d\u0435\u0439\u0440\u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u044f\u0440\u043a\u043e \u0441\u0432\u0435\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 rejected \u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u0442\u043e\u043a\u0435\u043d\u0430. \u041d\u0443\u0436\u043d\u0430 \u043e\u0446\u0435\u043d\u043a\u0430 \u0432\u043a\u043b\u0430\u0434\u0430 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0431\u0435\u0440\u0435\u043c margin \u2014 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u043c\u0443 \u043d\u0430 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0442\u043e\u043a\u0435\u043d\u0430\u0445:\u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u00ab\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u00d7 \u0432\u0445\u043e\u0434\u00bb (\u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u044f\u0434\u0430 \u0422\u0435\u0439\u043b\u043e\u0440\u0430):\u0421\u043c\u044b\u0441\u043b \u0444\u043e\u0440\u043c\u0443\u043b\u044b: \u0435\u0441\u043b\u0438 \u0443\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044e \u043d\u0435\u0439\u0440\u043e\u043d\u0430 \u043d\u0430 m, \u0442\u043e \u0432 \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u043c \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0438 margin \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430\u0417\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u0439\u0440\u043e\u043d \u0441 attr &lt; 0 \u0441\u0432\u043e\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 margin \u2014 \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u00ab\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u044b\u0439\u00bb \u043d\u0435\u0439\u0440\u043e\u043d. \u041f\u0440\u0438\u0433\u043b\u0443\u0448\u0438\u0432 \u0435\u0433\u043e (m &lt; 1), \u043e\u0436\u0438\u0434\u0430\u0435\u043c \u0440\u043e\u0441\u0442 margin. \u0414\u043b\u044f \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u0432\u043e\u043a \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f: \u0394margin \u2248 \u03a3 (m\u1d62 \u2212 1)\u00b7attr\u1d62.4.1. \u041a\u0430\u043a \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u043e \u0432\u0445\u043e\u0434\u0443 down_proj\u0425\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 h \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438\u0441\u0442\u043e\u043c \u0433\u0440\u0430\u0444\u0430, \u0438 autograd.grad \u043f\u043e \u043d\u0435\u043c\u0443 \u043d\u0435 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043f\u043e\u0441\u043b\u0435 forward. \u0412 \u0442\u043e\u043c \u0436\u0435 pre-hook \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0435\u043c \u0432\u0445\u043e\u0434 \u043b\u0438\u0441\u0442\u043e\u043c:def hook(module, args):    hidden = args[0]    if not attribution_active:        return None    leaf = hidden.detach().requires_grad_(True)   # \u043d\u043e\u0432\u044b\u0439 \u043b\u0438\u0441\u0442 \u0433\u0440\u0430\u0444\u0430    leaves[name] = leaf    return (leaf,) + tuple(args[1:])              # down_proj \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u0443\u0436\u0435 \u043e\u0442 \u043b\u0438\u0441\u0442\u0430with torch.enable_grad():    out = model(input_ids=ids, attention_mask=mask, use_cache=False)    objective = masked_mean_logprob(out.logits, ids, diff_rows)    names = list(leaves)    grads = torch.autograd.grad(objective * sign, [leaves[n] for n in names],                                allow_unused=True)attr = {}for name, grad in zip(names, grads):    if grad is None:        continue    product = leaves[name].detach().float() * grad.float()    attr[name] = product.reshape(-1, product.shape[-1]).sum(dim=0)   # [17408]\u0414\u043b\u044f chosen \u0431\u0435\u0440\u0435\u043c sign = +1, \u0434\u043b\u044f rejected \u2014 sign = \u22121, \u0438 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u043c: \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u043e\u0432\u043d\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 margin. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e log p \u043f\u043e \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u0430\u043c \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0434\u0432\u0438\u0433: \u0442\u043e\u043a\u0435\u043d j \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u043e\u0433\u0438\u0442\u0430\u043c\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 j \u2212 1:def masked_mean_logprob(logits, input_ids, rows):    positions = [i for i, flag in enumerate(rows) if flag and i &gt; 0]    if not positions:        return None    target = torch.tensor(positions, device=logits.device)    picked = logits[0, target &#8212; 1].float()    log_probs = torch.log_softmax(picked, dim=-1)    tokens = input_ids[0, target].unsqueeze(-1)    return log_probs.gather(-1, tokens).squeeze(-1).mean()\u0410\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u044f \u0441\u0442\u043e\u0438\u0442 \u0434\u043e\u0440\u043e\u0433\u043e (backward \u043d\u0430 27B-\u043c\u043e\u0434\u0435\u043b\u0438), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0430\u0440\u0442\u0443 \u0441 \u0430\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0435\u0439 \u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0430 \u043f\u043e\u0434\u0432\u044b\u0431\u043e\u0440\u043a\u0435: \u0434\u043b\u044f&#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-502092","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/502092","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=502092"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/502092\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=502092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=502092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=502092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}