{"id":483486,"date":"2026-06-13T08:43:54","date_gmt":"2026-06-13T08:43:54","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=483486"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=483486","title":{"rendered":"\u0421\u0436\u0430\u0442\u044c \u0447\u0435\u0442\u044b\u0440\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 CALM \u043d\u0430 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c CPU)"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0412\u0437\u044f\u043b\u0438 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0438\u0437 \u0441\u0432\u0435\u0436\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b\u00a0<strong>CALM (Continuous Autoregressive Language Models)<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0447\u0438\u0442\u0441\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0447\u0430\u043d\u043a \u0438\u0437 K=4 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0438 \u043e\u0431\u0443\u0447\u0438\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u043d\u0430 15 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 Pile \u043d\u0430 8 GPU, \u043a\u0430\u043a \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435, \u0430 \u043d\u0430 18 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 IT-\u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 &#8212; \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0431\u0435\u0437 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b. \u041f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u0432\u044b\u0433\u0440\u0435\u0431\u043b\u0438 \u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0440\u0430\u0431\u043b\u0438 (flash-attn \u0431\u0435\u0437 CUDA, deepspeed, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 NumPy 2.x, \u0438 \u0442\u0438\u0445\u0438\u0439 OOM \u043d\u0430 33 \u0413\u0411 \u043b\u043e\u0433\u0438\u0442\u043e\u0432). \u041d\u0438\u0436\u0435 &#8212; \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b round-trip-\u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.<\/p>\n<h3>\ud83d\udca1 \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445<\/h3>\n<p>\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435: \u043e\u043d\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u00a0<strong>\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443 \u0437\u0430 \u0448\u0430\u0433<\/strong>. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u043e\u043a\u0435\u043d \u2192 \u043f\u043e\u0434\u0430\u043b \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0432\u0445\u043e\u0434 \u2192 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439. \u0427\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u043e\u0442\u0432\u0435\u0442, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u0438 \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435.<\/p>\n<p>\u0410\u0432\u0442\u043e\u0440\u044b\u00a0<a href=\"https:\/\/arxiv.org\/abs\/2510.27688\" rel=\"noopener noreferrer nofollow\">CALM<\/a>\u00a0(<a href=\"https:\/\/github.com\/shaochenze\/calm\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>,\u00a0<a href=\"https:\/\/shaochenze.github.io\/blog\/2025\/CALM\" rel=\"noopener noreferrer nofollow\">\u0431\u043b\u043e\u0433<\/a>) \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443: \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u00a0<strong>\u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0441\u0440\u0430\u0437\u0443\u00a0<strong>\u0447\u0430\u043d\u043a \u0438\u0437 K \u0442\u043e\u043a\u0435\u043d\u043e\u0432<\/strong>. \u0415\u0441\u043b\u0438 K=4, \u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0448\u0430\u0433\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 4 \u0440\u0430\u0437\u0430.<\/p>\n<p>\u041f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043e\u0441\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0430\u0432\u0442\u043e\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0435\u0451\u00a0<strong>semantic bandwidth (K)<\/strong>: \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u0438 \u043e\u0431\u044a\u0451\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430 \u043e\u0434\u0438\u043d \u0448\u0430\u0433.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0443\u0436\u043d\u043e \u0434\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438:<\/p>\n<ol>\n<li>\n<p><strong>\u0410\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438<\/strong>\u00a0&#8212; \u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0436\u0438\u043c\u0430\u0442\u044c K \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440 \u0438 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c. \u042d\u0442\u043e \u00ab\u0441\u043b\u043e\u0432\u0430\u0440\u044c\u00bb \u043c\u0435\u0436\u0434\u0443 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043c\u0438\u0440\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u043c \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>Continuous-domain LM<\/strong>\u00a0&#8212; \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 (\u0430 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d).<\/p>\n<\/li>\n<\/ol>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0443\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e softmax-\u043c\u0438\u0440\u0430, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 maximum likelihood \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 CALM \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 likelihood-free \u0442\u0443\u043b\u043a\u0438\u0442:\u00a0<strong>Energy-based training<\/strong>, \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u00a0<strong>BrierLM<\/strong>\u00a0\u0438\u00a0<strong>temperature sampling<\/strong>\u00a0\u043f\u043e\u0432\u0435\u0440\u0445 \u0447\u0451\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430-\u0441\u044d\u043c\u043f\u043b\u0435\u0440\u0430.<\/p>\n<p>\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212;\u00a0<strong>\u043f\u0440\u043e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0434\u0438\u044e, \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440<\/strong>. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0432\u0441\u044f \u0437\u0430\u0442\u0435\u044f: \u0435\u0441\u043b\u0438 \u0447\u0430\u043d\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0442\u043e \u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e.<\/p>\n<h3>\ud83d\udcda \u0417\u043e\u043e\u043f\u0430\u0440\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0443\u0434\u0430 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442, \u0432\u043e\u0442 \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 CALM:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Autoencoder<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0441\u0436\u0430\u0442\u0438\u0435 K \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u2194 \u0432\u0435\u043a\u0442\u043e\u0440 (\u0441\u0442\u0430\u0434\u0438\u044f 1)<\/p>\n<\/td>\n<td>\n<p align=\"left\">75M<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>CALM-M \/ L \/ XL<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f (\u0441\u0442\u0430\u0434\u0438\u044f 2)<\/p>\n<\/td>\n<td>\n<p align=\"left\">371M \/ 735M \/ 1.82B<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>AR baseline<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">&#8212;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0414\u043b\u044f \u0441\u0442\u0430\u0434\u0438\u0438 2 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u00a0<strong>\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u00ab\u0433\u043e\u043b\u043e\u0432\u044b\u00bb<\/strong>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430:<\/p>\n<ul>\n<li>\n<p><strong>Energy-based<\/strong>\u00a0(<code>train_<\/code><a href=\"http:\/\/energy.py\" rel=\"noopener noreferrer nofollow\"><code>energy.py<\/code><\/a>) &#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443;<\/p>\n<\/li>\n<li>\n<p><strong>Diffusion<\/strong>\u00a0(<code>train_<\/code><a href=\"http:\/\/diffusion.py\" rel=\"noopener noreferrer nofollow\"><code>diffusion.py<\/code><\/a>);<\/p>\n<\/li>\n<li>\n<p><strong>Flow Matching<\/strong>\u00a0(<code>train_<\/code><a href=\"http:\/\/flow.py\" rel=\"noopener noreferrer nofollow\"><code>flow.py<\/code><\/a>).<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u0435\u0440\u044f\u044e\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439\u00a0<strong>BrierLM<\/strong>: CALM-M \u0434\u0430\u0451\u0442 5.72, CALM-XL &#8212; 8.53, \u0442\u043e\u043a\u0435\u043d\u043d\u044b\u0439 baseline \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 &#8212; 6.05. \u042d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u0430 \u0432 \u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u043e\u0431\u043e\u0448\u043b\u0430 diffusion \u0438 flow.<\/p>\n<p>\u041c\u044b \u0432\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e \u043d\u0435 \u043b\u0435\u0437\u043b\u0438 &#8212; \u043d\u0430\u0448 \u0444\u043e\u043a\u0443\u0441 \u0441\u0442\u0440\u043e\u0433\u043e \u043d\u0430 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0435.<\/p>\n<h3>\ud83c\udfd7\ufe0f \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430: \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e \u0441\u043b\u043e\u044f\u043c<\/h3>\n<p>\u042d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0410\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 CALM &#8212; \u043d\u0435 \u00ab\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440-\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u00bb, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c. \u042d\u0442\u043e\u00a0<strong>\u0432\u0430\u0440\u0438\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 (VAE), \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u0442\u0447\u0430, \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 MLP-\u0441\u043b\u043e\u044f\u0445, \u0431\u0435\u0437 self-attention<\/strong>. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e.<\/p>\n<h4>\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a: AELayer (MLP, \u0431\u0435\u0437 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f)<\/h4>\n<pre><code>class AELayer(nn.Module):    def __init__(self, config):        self.mlp = LlamaMLP(config)                 # SwiGLU \u043a\u0430\u043a \u0432 LLaMA        self.layernorm = LlamaRMSNorm(config.hidden_size, eps=config.rms_norm_eps)    def forward(self, hidden_states):        residual = hidden_states        hidden_states = self.layernorm(hidden_states)        hidden_states = self.mlp(hidden_states)        return residual + hidden_states             # pre-norm + residual<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e attention. \u042d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e: \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u0442\u0447 \u0438\u0437 K \u0442\u043e\u043a\u0435\u043d\u043e\u0432\u00a0<strong>\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e<\/strong>\u00a0\u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445. \u0415\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 &#8212; \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0436\u0430\u0442\u0438\u0435\/\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0447\u0430\u043d\u043a\u0430, \u0430 \u043d\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 2. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 AE \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0435\u0448\u0451\u0432\u044b\u043c \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c.<\/p>\n<h4>\u042d\u043d\u043a\u043e\u0434\u0435\u0440: 4 \u0442\u043e\u043a\u0435\u043d\u0430 \u2192 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440<\/h4>\n<p>\u041f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 (\u0434\u043b\u044f K=<code>patch_size<\/code>=4,\u00a0<code>hidden_size<\/code>=512,\u00a0<code>latent_size<\/code>=128):<\/p>\n<ol>\n<li>\n<p>\u0412\u0445\u043e\u0434\u00a0<code>input_ids<\/code>\u00a0\u0440\u0435\u0448\u0435\u0439\u043f\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u0442\u0447\u0438:\u00a0<code>(B, L) \u2192 (B\u00b7L\/4, 4)<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u042d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438:\u00a0<code>(N, 4) \u2192 (N, 4, 512)<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u0430\u0434\u0438\u044f 0:<\/strong>\u00a0\u043e\u0434\u0438\u043d\u00a0<code>AELayer<\/code>\u00a0\u043f\u043e\u0432\u0435\u0440\u0445 4 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>Squeeze:<\/strong>\u00a0\u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u0443\u0435\u043c 4 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0441\u0436\u0438\u043c\u0430\u0435\u043c &#8212;\u00a0<code>Linear(4\u00b7512 \u2192 512)<\/code>. \u0412\u043e\u0442 \u0442\u0443\u0442 \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044f \u043f\u0430\u0442\u0447\u0430:\u00a0<code>(N, 4, 512) \u2192 (N, 1, 512)<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u0430\u0434\u0438\u044f 1:<\/strong>\u00a0\u0435\u0449\u0451 \u043e\u0434\u0438\u043d\u00a0<code>AELayer<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>hidden_to_latent<\/code>:\u00a0<code>Linear(512 \u2192 256)<\/code>\u00a0\u2192\u00a0<code>(N, 1, 256)<\/code>.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 256, \u0430 \u043d\u0435 128? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e\u00a0<strong>VAE<\/strong>: 256 =\u00a0<code>latent_size\u00b72<\/code>\u00a0&#8212; \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043d\u0430\u00a0<code>mean<\/code>, \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043d\u0430\u00a0<code>log_std<\/code>.<\/p>\n<pre><code>mean, log_std = torch.chunk(latent_states, 2, dim=-1)   # \u043f\u043e 128std = torch.exp(log_std)eps = torch.randn_like(mean)latent_states = mean + eps * std                        # \u0440\u0435\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044fkl_loss = 0.5 * (mean**2 + std**2 - 1 - 2*log_std)kl_loss = torch.clamp(kl_loss, min=config.kl_clamp).sum(-1).mean()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043b\u0430\u0442\u0435\u043d\u0442 &#8212; \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d\u044b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. KL-\u0447\u043b\u0435\u043d \u0441\u00a0<code>kl_clamp=0.5<\/code>\u00a0\u0438 \u0432\u0435\u0441\u043e\u043c\u00a0<code>kl_weight=1e-3<\/code>\u00a0\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u0438\u043c (\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0434\u0438\u0438 2, \u0433\u0434\u0435 \u043f\u043e \u043d\u0435\u043c\u0443 \u043d\u0430\u0434\u043e \u00ab\u0445\u043e\u0434\u0438\u0442\u044c\u00bb \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439).<\/p>\n<h4>\u0414\u0435\u043a\u043e\u0434\u0435\u0440: \u0432\u0435\u043a\u0442\u043e\u0440 \u2192 4 \u0442\u043e\u043a\u0435\u043d\u0430<\/h4>\n<p>\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0443:<\/p>\n<ol>\n<li>\n<p><code>latent_to_hidden<\/code>:\u00a0<code>Linear(128 \u2192 512)<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u0430\u0434\u0438\u044f 0:<\/strong>\u00a0\u043e\u0434\u0438\u043d\u00a0<code>AELayer<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>Expand:<\/strong>\u00a0<code>Linear(512 \u2192 4\u00b7512)<\/code>\u00a0\u0438 \u0440\u0435\u0448\u0435\u0439\u043f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 4 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 &#8212; \u00ab\u0440\u0430\u0437\u0436\u0438\u043c\u0430\u0435\u043c\u00bb \u043f\u0430\u0442\u0447.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u0430\u0434\u0438\u044f 1:<\/strong>\u00a0\u0435\u0449\u0451 \u043e\u0434\u0438\u043d\u00a0<code>AELayer<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>lm_head<\/code>: \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0412\u0435\u0441\u0430\u00a0<code>lm_head<\/code>\u00a0<strong>\u0441\u0432\u044f\u0437\u0430\u043d\u044b (tied)<\/strong>\u00a0\u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 &#8212; \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/p>\n<\/li>\n<\/ol>\n<p>\u041b\u043e\u0441\u0441 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 &#8212; \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u00a0<code>patch_size<\/code>\u00a0\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0441 KL:<\/p>\n<pre><code>loss = CrossEntropy(logits, labels)if self.training:    loss = loss * patch_size + kl_loss * kl_weight<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u0413\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433)<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>patch_size<\/code>\u00a0(K)<\/p>\n<\/td>\n<td>\n<p align=\"left\">4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>hidden_size<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">512<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>intermediate_size<\/code>\u00a0(MLP)<\/p>\n<\/td>\n<td>\n<p align=\"left\">1280<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>latent_size<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">128<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>num_encoder_layers<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>num_decoder_layers<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>ae_dropout<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">0.15<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>kl_weight<\/code>\u00a0\/\u00a0<code>kl_clamp<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">1e-3 \/ 0.5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0442\u043e\u043a\u0435\u043d\u0430\u0439\u0437\u0435\u0440<\/p>\n<\/td>\n<td>\n<p align=\"left\">Llama-3 (~128k \u0441\u043b\u043e\u0432\u0430\u0440\u044c)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">~75.8M<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0438\u0437 75.8M \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432\u00a0<strong>\u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432<\/strong>\u00a0(~128k x 512 \u2248 65M). \u0421\u0430\u043c\u0430 \u00ab\u043b\u043e\u0433\u0438\u043a\u0430\u00bb \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430-\u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 \u0432\u0435\u0441\u0438\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043b\u0451\u0433\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c &#8212; \u0447\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0431\u0435\u0437 GPU.<\/p>\n<h3>\ud83d\udd2c \u041d\u0430\u0448 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u044f\u0445<\/h3>\n<p>\u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0443\u0447\u0430\u0442 \u043d\u0430 ~15 \u043c\u043b\u0440\u0434 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u00a0<a href=\"https:\/\/huggingface.co\/datasets\/monology\/pile-uncopyrighted\" rel=\"noopener noreferrer nofollow\">pile-uncopyrighted<\/a>, \u043d\u0430 8 GPU, \u0432 bf16, 30 000 \u0448\u0430\u0433\u043e\u0432. \u041d\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435:\u00a0<strong>\u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u044d\u0442\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0430 \u0443\u0437\u043a\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0438 \u043d\u0430 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435?<\/strong><\/p>\n<h4>\u0414\u0430\u043d\u043d\u044b\u0435<\/h4>\n<p><code>jobs_requirements.jsonl<\/code>\u00a0&#8212; 18 065 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 IT-\u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439, \u0441\u043c\u0435\u0441\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e:<\/p>\n<pre><code>{\"text\": \"React JS 18+\"}{\"text\": \"\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 REST API\"}{\"text\": \"\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 JavaScript: \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (async\/await | Promises), ES6+\"}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0441\u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u043a\u043b\u0435\u0439\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c ~340k \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u042d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 \u043f\u044f\u0442\u044c-\u0448\u0435\u0441\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432 \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430 &#8212; \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e\u00a0<strong>proof-of-concept \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0441\u0442\u0430\u0442\u044c\u0438<\/strong>. \u0414\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u0440\u0430\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0446\u0438\u0444\u0440\u044b.<\/p>\n<h4>\u0416\u0435\u043b\u0435\u0437\u043e<\/h4>\n<p>\u041c\u0430\u0448\u0438\u043d\u0430 \u0431\u0435\u0437 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b:\u00a0<strong>62 \u0413\u0411 RAM, 28 \u044f\u0434\u0435\u0440 CPU, \u043d\u0438\u00a0<\/strong><code><strong>nvidia-smi<\/strong><\/code><strong>, \u043d\u0438\u00a0<\/strong><code><strong>nvcc<\/strong><\/code>,\u00a0<a href=\"http:\/\/torch.cuda.is\" rel=\"noopener noreferrer nofollow\"><code>torch.cuda.is<\/code><\/a><code>_available() == False<\/code>. \u0422\u043e \u0435\u0441\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u00ab\u0431\u044b\u0442\u043e\u0432\u044b\u0435\u00bb.<\/p>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b (\u0441\u0442\u0430\u0442\u044c\u044f)<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0448 \u0437\u0430\u043f\u0443\u0441\u043a<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0434\u0430\u043d\u043d\u044b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">~15B \u0442\u043e\u043a\u0435\u043d\u043e\u0432 Pile<\/p>\n<\/td>\n<td>\n<p align=\"left\">18k \u0441\u0442\u0440\u043e\u043a \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 (~340k \u0442\u043e\u043a\u0435\u043d\u043e\u0432)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">8x GPU, bf16<\/p>\n<\/td>\n<td>\n<p align=\"left\">1x CPU, fp32<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>block_size<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">2048<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>256<\/strong>\u00a0(\u0441\u043c. \u0433\u0440\u0430\u0431\u043b\u0438 \u043d\u0438\u0436\u0435)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>per_device_train_batch_size<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">32<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>learning_rate<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">3e-4<\/p>\n<\/td>\n<td>\n<p align=\"left\">2e-4<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u044d\u043f\u043e\u0445\u0438 \/ \u0448\u0430\u0433\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">1 \u044d\u043f\u043e\u0445\u0430 \/ 30 000 \u0448\u0430\u0433\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">5 \u044d\u043f\u043e\u0445 \/ 220 \u0448\u0430\u0433\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>latent_size<\/code>,\u00a0<code>patch_size<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">128, 4<\/p>\n<\/td>\n<td>\n<p align=\"left\">128, 4<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\ud83d\udea7 \u0422\u0440\u0438 \u0433\u0440\u0430\u0431\u043b\u0438 \u043f\u043e \u0434\u043e\u0440\u043e\u0433\u0435<\/h3>\n<h4>1. flash-attn \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 CUDA<\/h4>\n<p><code>requirements.txt<\/code>\u00a0\u0442\u044f\u043d\u0435\u0442\u00a0<code>flash-attn==2.1.1<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u00a0<code>nvcc<\/code>\u00a0\u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 GPU \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a. \u041d\u0430 CPU-\u043c\u0430\u0448\u0438\u043d\u0435 \u043e\u043d \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u041b\u0435\u0447\u0435\u043d\u0438\u0435 &#8212; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0432 \u0435\u0433\u043e:<\/p>\n<pre><code>grep -v '^flash-attn' requirements.txt | uv pip install -r \/dev\/stdin<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 flash-attn \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 (\u0435\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u043b\u043e\u0432\u044b energy\/flow\/diffusion\/calm, \u0438 \u0442\u043e &#8212; \u043f\u043e\u0434\u00a0<code>if is_flash_attn_2_available()<\/code>).<\/p>\n<h4>2. deepspeed \u043d\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 NumPy 2.x<\/h4>\n<p>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0434\u0430\u043b\u043e \u0443\u0436\u0435\u00a0<strong>\u0432\u043d\u0443\u0442\u0440\u0438<\/strong>\u00a0<code>Trainer.train()<\/code>\u00a0\u0441 \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u043e\u0439:<\/p>\n<p>File &#171;&#8230;\/accelerate\/utils\/<a href=\"http:\/\/other.py\" rel=\"noopener noreferrer nofollow\">other.py<\/a>&#171;, line 80, in extract_model_from_parallel from deepspeed import DeepSpeedEngine &#8230; File &#171;&#8230;\/deepspeed\/autotuning\/<a href=\"http:\/\/scheduler.py\" rel=\"noopener noreferrer nofollow\">scheduler.py<\/a>&#171;, line 8 from numpy import BUFSIZE ImportError: cannot import name &#8216;BUFSIZE&#8217; from &#8216;numpy&#8217;<\/p>\n<p><code>numpy.BUFSIZE<\/code>\u00a0\u0443\u0431\u0440\u0430\u043b\u0438 \u0432 NumPy 2.0, \u0430\u00a0<code>deepspeed==0.10.0<\/code>\u00a0\u043d\u0430 \u043d\u0435\u0433\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c HF-<code>accelerate<\/code>\u00a0\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 deepspeed\u00a0<strong>\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d<\/strong>\u00a0(<code>is_deepspeed_available()<\/code>\u00a0= \u00ab\u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00bb). deepspeed \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 GPU &#8212; \u0443 \u043d\u0430\u0441 \u0435\u0433\u043e \u043d\u0435\u0442 \u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0435 \u0447\u0438\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043d\u0435\u0441\u0442\u0438 \u0435\u0433\u043e:<\/p>\n<pre><code>uv pip uninstall deepspeed<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>(\u041e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c NumPy \u0432\u043d\u0438\u0437 &#8212; \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u043e: \u043a\u043e\u043b\u0451\u0441\u0430 pandas\/pyarrow \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043f\u043e\u0434 NumPy 2.x, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0439\u043c\u0430\u0442\u044c ABI-\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.)<\/p>\n<h4>3. \u0422\u0438\u0445\u0438\u0439 OOM \u043d\u0430 33 \u0413\u0411 \u043b\u043e\u0433\u0438\u0442\u043e\u0432<\/h4>\n<p>\u0421\u0430\u043c\u043e\u0435 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0421 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u00a0<code>block_size=2048<\/code>\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00a0<strong>\u043c\u043e\u043b\u0447\u0430 \u0443\u043c\u0438\u0440\u0430\u043b \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u043c \u0448\u0430\u0433\u0435<\/strong>\u00a0&#8212; \u0431\u0435\u0437 \u0442\u0440\u0435\u0439\u0441\u0431\u044d\u043a\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u0447\u0435\u0437\u0430\u043b. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c OOM-\u043a\u0438\u043b\u043b\u0435\u0440\u0430 (SIGKILL).<\/p>\n<p>\u041f\u0440\u0438\u0447\u0438\u043d\u0430 &#8212; \u0432 \u0444\u043e\u0440\u043c\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0430 \u043b\u043e\u0433\u0438\u0442\u043e\u0432. \u0414\u0435\u043a\u043e\u0434\u0435\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u043b\u043e\u0433\u0438\u0442\u044b \u043d\u0430\u00a0<strong>\u0432\u0435\u0441\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438<\/strong>:<\/p>\n<p>logits: (batch x block_size x vocab) = 32 x 2048 x 128256 x 4 \u0431\u0430\u0439\u0442\u0430 \u2248 33.6 \u0413\u0411<\/p>\n<p>\u041f\u043b\u044e\u0441 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u043d\u0430 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0432 backward \u2192 ~67 \u0413\u0411 \u043d\u0430 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u043f\u0440\u0438 56 \u0413\u0411 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445. \u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439 kill. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0441\u043f\u0430\u0441\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e batch \u0431\u044b\u043b 8 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0448\u043b\u043e \u043d\u0430 GPU \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e.<\/p>\n<p>\u041b\u0435\u0447\u0435\u043d\u0438\u0435: \u043b\u043e\u0433\u0438\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u044b \u043f\u043e\u00a0<code>batch x block_size<\/code>. \u0414\u0430\u043d\u043d\u044b\u0435 \u0443 \u043d\u0430\u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u0438\u043d\u043d\u044b\u0439\u00a0<code>block_size<\/code>\u00a0\u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u0421\u043d\u0438\u0437\u0438\u043b\u0438 \u0435\u0433\u043e \u0434\u043e\u00a0<strong>256<\/strong>\u00a0(batch \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 32):<\/p>\n<p>32 x 256 x 128256 x 4 \u2248 4.2 \u0413\u0411 \u2190 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0437\u0430\u043f\u0430\u0441\u043e\u043c<\/p>\n<p>RSS \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e\u0441\u043b\u0435 \u0444\u0438\u043a\u0441\u0430 \u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f \u043d\u0430 ~6.6 \u0413\u0411 &#8212; \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e.<\/p>\n<h3>\ud83d\ude80 \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430<\/h3>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0432\u0435\u043b\u0438 \u0432 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u043b\u0430\u0443\u043d\u0447\u0435\u0440 (\u0432\u0430\u0436\u043d\u043e: \u0437\u0430\u043f\u0443\u0441\u043a\u00a0<strong>\u043c\u043e\u0434\u0443\u043b\u0435\u043c<\/strong>\u00a0<code>-m train.train_autoencoder<\/code>\u00a0\u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f\u00a0<code>import models<\/code>):<\/p>\n<pre><code>.venv\/bin\/python -m train.train_autoencoder \\    --train_file .\/data\/jobs_requirements.json \\    --validation_file .\/data\/jobs_requirements.json \\    --tokenizer_name .\/llama3_tokenizer \\    --config_overrides \"latent_size=128\" \\    --block_size 256 \\    --output_dir .\/checkpoints\/autoencoder_requirements \\    --overwrite_output_dir \\    --per_device_train_batch_size 32 \\    --per_device_eval_batch_size 32 \\    --learning_rate 2e-4 \\    --num_train_epochs 5 \\    --do_train --do_eval \\    --save_safetensors False \\    --logging_steps 10 --report_to none<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u0435\u043b\u043e\u0447\u0438, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f:<\/p>\n<ul>\n<li>\n<p>\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u00a0<code>--validation_file<\/code>\u00a0\u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u00a0<code>.jsonl<\/code>\u00a0(\u0442\u043e\u043b\u044c\u043a\u043e csv\/json\/txt) &#8212; \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0441\u0438\u043c\u043b\u0438\u043d\u043a\u00a0<code>.json<\/code>;<\/p>\n<\/li>\n<li>\n<p><code>--save_safetensors False<\/code>\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d: \u0443 \u043c\u043e\u0434\u0435\u043b\u0438 tied-\u0432\u0435\u0441\u0430 (<code>lm_head<\/code>\u00a0\u2261 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438), \u0438 safetensors \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u044b.<\/p>\n<\/li>\n<\/ul>\n<h3>\ud83d\udcca \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<p>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435:\u00a0<strong>220 \u0448\u0430\u0433\u043e\u0432, 5 \u044d\u043f\u043e\u0445, 22 \u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430 CPU.<\/strong>\u00a0\u041b\u043e\u0441\u0441 \u043f\u0430\u0434\u0430\u043b \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u043e (\u0441 ~47 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0439 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043e ~10.6 \u043a \u043f\u044f\u0442\u043e\u0439 \u044d\u043f\u043e\u0445\u0435 \u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u043e\u0439 \u0446\u0435\u043b\u0438).<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u0435\u0442\u0440\u0438\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">eval_loss<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.20<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>eval perplexity<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>9.04<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">train_runtime<\/p>\n<\/td>\n<td>\n<p align=\"left\">22 \u043c\u0438\u043d 20 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432\/\u0441<\/p>\n<\/td>\n<td>\n<p align=\"left\">5.2 (train) \/ 14.3 (eval)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<blockquote>\n<p><em>\u041f\u043e\u0447\u0435\u043c\u0443 train-loss (~10.6) \u0432\u044b\u0448\u0435 eval-loss (2.20)? \u0412 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043e\u043c\u043d\u043e\u0436\u0430\u0435\u0442 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043b\u043e\u0441\u0441 \u043d\u0430\u00a0<\/em><code><em>patch_size<\/em><\/code><em>, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 KL, \u043a\u0430\u0441\u0442\u0443\u0435\u0442 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438 \u0432 bf16 \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u00a0<\/em><code><em>ae_dropout=0.15<\/em><\/code><em>; \u043d\u0430 eval \u0432\u0441\u0451 \u044d\u0442\u043e \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u0442\u044b\u0439 fp32. \u0422\u0430\u043a \u0447\u0442\u043e \u0440\u0430\u0437\u0440\u044b\u0432 \u043e\u0436\u0438\u0434\u0430\u0435\u043c, \u044d\u0442\u043e \u043d\u0435 \u0431\u0430\u0433.<\/em><\/p>\n<\/blockquote>\n<h4>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u00ab\u0441\u0435\u0431\u044f\u00bb: round-trip \u0447\u0435\u0440\u0435\u0437 \u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0438 \u0434\u0435\u043a\u043e\u0434\u0435\u0440<\/h4>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 &#8212; \u043f\u0440\u043e\u0433\u043d\u0430\u0442\u044c \u0444\u0440\u0430\u0437\u0443\u00a0<code>\u0442\u0435\u043a\u0441\u0442 \u2192 encoder \u2192 \u043b\u0430\u0442\u0435\u043d\u0442 \u2192 decoder \u2192 \u0442\u0435\u043a\u0441\u0442<\/code>\u00a0\u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c. \u0414\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e: \u0432\u00a0<code>eval()<\/code>, \u0431\u0435\u0440\u044f\u00a0<code><strong>mean<\/strong><\/code><strong>\u00a0\u043b\u0430\u0442\u0435\u043d\u0442\u0430<\/strong>\u00a0\u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e (\u043c\u0438\u043d\u0443\u044f VAE-\u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435), \u0438 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0432\u0445\u043e\u0434 \u043a\u0430\u043a \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 (\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c EOS, \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c pad \u0434\u043e \u043a\u0440\u0430\u0442\u043d\u043e\u0441\u0442\u0438 K):<\/p>\n<pre><code>ids = tok(text)[\"input_ids\"] + [tok.eos_token_id]while len(ids) % P: ids.append(pad_id)x = torch.tensor(ids).view(1, -1).reshape(-1, P)   # \u043f\u0430\u0442\u0447\u0438 (L\/4, 4)latent = model.encoder(input_ids=x)mean, _ = torch.chunk(latent, 2, dim=-1)           # \u0431\u0435\u0440\u0451\u043c meanlogits = model.decoder(latent_states=mean)pred = logits.argmax(-1).reshape(-1)               # \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"243\" width=\"243\">\n<p align=\"left\">\u0412\u0445\u043e\u0434<\/p>\n<\/th>\n<th data-colwidth=\"325\" width=\"325\">\n<p align=\"left\">\u0412\u044b\u0445\u043e\u0434<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0430\u043c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"243\" width=\"243\">\n<p align=\"left\"><code>React JS 18+<\/code><\/p>\n<\/td>\n<td data-colwidth=\"325\" width=\"325\">\n<p align=\"left\"><code>React \u043e\u0442 3+<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">75%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"243\" width=\"243\">\n<p align=\"left\"><code>Understanding of REST API<\/code><\/p>\n<\/td>\n<td data-colwidth=\"325\" width=\"325\">\n<p align=\"left\"><code>\u0435\u0433\u0440\u0430 \u0438 REST API<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">75%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"243\" width=\"243\">\n<p align=\"left\">`\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 JavaScript: \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (async\/await Promises), ES6+<\/p>\n<\/td>\n<td data-colwidth=\"325\" width=\"325\">\n<p align=\"left\"><code>\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 JavaScript:\u043e\u0432\u044b\u043a\u0430\u043d\u0438\u044f, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ( CI\/CD,\u0442\u0430\u043c\u0438), \u0435\u0433\u0440\u0430+<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">75%<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4>\u0427\u0435\u0441\u0442\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440<\/h4>\n<p>\u0420\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f\u00a0<strong>\u0443\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u0430\u044f, \u043d\u043e \u0448\u0443\u043c\u043d\u0430\u044f<\/strong>: \u043a\u0430\u0440\u043a\u0430\u0441 \u0438 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0435 \u043a\u0443\u0441\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f (\u00abReact &#8230; +\u00bb, \u00abREST API\u00bb, \u00ab\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 JavaScript: &#8230; \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 &#8230;\u00bb), \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438\u0441\u043a\u0430\u0436\u0430\u0435\u0442\u0441\u044f. \u0418 \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c: \u0440\u043e\u0432\u043d\u043e\u00a0<strong>75% \u043d\u0430 \u0444\u0440\u0430\u0437\u0430\u0445 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u043e\u0439 \u0434\u043b\u0438\u043d\u044b<\/strong>\u00a0&#8212; \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u0435\u0440\u044f\u0435\u0442 ~1 \u0442\u043e\u043a\u0435\u043d \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0430\u0442\u0447\u0430 \u0432 4. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f, \u0447\u0442\u043e \u043b\u0430\u0442\u0435\u043d\u0442 \u0432 128 \u0447\u0438\u0441\u0435\u043b \u0441\u0436\u0438\u043c\u0430\u0435\u0442 4&#215;512 = 2048-\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u0442\u0447\u0430, \u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e 5 \u044d\u043f\u043e\u0445 \u043d\u0430 \u043a\u0440\u043e\u0448\u0435\u0447\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 &#8212; \u044d\u0442\u043e \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430\u00a0<strong>\u043d\u0435\u0434\u043e\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/strong>, \u0430 \u043d\u0435 \u043d\u0430 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abnear-perfect reconstruction\u00bb \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 15 \u043c\u043b\u0440\u0434 \u0442\u043e\u043a\u0435\u043d\u043e\u0432; \u043c\u044b \u0434\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 ~44 000 \u0440\u0430\u0437 \u043c\u0435\u043d\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u23ed\ufe0f \u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435<\/h3>\n<p>\u041e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0440\u044b\u0447\u0430\u0433\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u0434\u043e\u043c\u0435\u043d\u0435:<\/p>\n<ul>\n<li>\n<p><strong>\u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u043f\u043e\u0445<\/strong>\u00a0(20-50 \u0432\u043c\u0435\u0441\u0442\u043e 5) &#8212; \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u0430\u043b\u043e, \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0437\u0434\u0435\u0441\u044c \u0441\u043a\u043e\u0440\u0435\u0435 \u0432 \u043f\u043b\u044e\u0441 \u0434\u043b\u044f AE-\u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438;<\/p>\n<\/li>\n<li>\n<p><strong>\u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/strong>\u00a0\u0442\u043e\u0433\u043e \u0436\u0435 \u0434\u043e\u043c\u0435\u043d\u0430;<\/p>\n<\/li>\n<li>\n<p>\u0435\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f GPU &#8212; \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u00a0<code>block_size<\/code>\/<code>batch<\/code>\u00a0\u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430 \u0438 bf16, \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0438;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u00a0<code>latent_size<\/code>\u00a0(\u0448\u0438\u0440\u0435 \u043b\u0430\u0442\u0435\u043d\u0442 \u2192 \u0442\u043e\u0447\u043d\u0435\u0435 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f, \u043d\u043e \u00ab\u0442\u044f\u0436\u0435\u043b\u0435\u0435\u00bb \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0434\u0438\u0438 2) \u0438 \u0441\u00a0<code>kl_weight<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0412\u044b\u0432\u043e\u0434\u044b<\/h4>\n<ol>\n<li>\n<p>\u0410\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 CALM &#8212; \u044d\u0442\u043e\u00a0<strong>MLP-VAE \u043d\u0430 \u043f\u0430\u0442\u0447\u0430\u0445 \u0431\u0435\u0437 attention<\/strong>, \u0438 \u044d\u0442\u043e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e: \u0437\u0430\u0434\u0430\u0447\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0436\u0430\u0442\u0438\u044f \u0447\u0430\u043d\u043a\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u00a0<strong>\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0451\u0433\u043a\u0430\u044f, \u0447\u0442\u043e\u0431\u044b \u043a\u0440\u0443\u0442\u0438\u0442\u044c\u0441\u044f \u043d\u0430 CPU<\/strong>\u00a0&#8212; 75M \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 87% \u044d\u0442\u043e \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u0432 ML, \u0430 \u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435: \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c\u00a0<code>deepspeed<\/code>\/NumPy \u0438 OOM \u0438\u0437-\u0437\u0430 \u043f\u043e\u043b\u043d\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u043d\u044b\u0445 \u043b\u043e\u0433\u0438\u0442\u043e\u0432 \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0432 128k. \u041e\u0431\u0430 \u043b\u0435\u0447\u0430\u0442\u0441\u044f \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443, \u0435\u0441\u043b\u0438 \u043f\u043e\u043d\u044f\u0442\u044c \u043f\u0440\u0438\u0447\u0438\u043d\u0443.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430 \u043c\u0438\u043a\u0440\u043e\u0441\u043a\u043e\u043f\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u0437\u0430 22 \u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430 CPU \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0447\u0438\u0439, \u043d\u043e \u043b\u043e\u0441\u0441\u043e\u0432\u044b\u0439 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 (perplexity 9.04, ~75% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438) &#8212; \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u043b\u044c\u0448\u0435 \u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b.<\/p>\n<\/li>\n<\/ol>\n<p>\u041a\u043e\u0434 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430: \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u00a0<code>train\/run_autoencoder_<\/code><a href=\"http:\/\/requirements.sh\" rel=\"noopener noreferrer nofollow\"><code>requirements.sh<\/code><\/a>\u00a0\u0438 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438\u00a0<code>roundtrip_<\/code><a href=\"http:\/\/autoencoder.py\" rel=\"noopener noreferrer nofollow\"><code>autoencoder.py<\/code><\/a>. \u0424\u043e\u0440\u043a\u00a0<a href=\"https:\/\/github.com\/iconicompany\/calm\" rel=\"noopener noreferrer nofollow\">iconicompany\/calm<\/a>, \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b &#8212;\u00a0<a href=\"https:\/\/github.com\/shaochenze\/calm\" rel=\"noopener noreferrer nofollow\">shaochenze\/calm<\/a>, \u0441\u0442\u0430\u0442\u044c\u044f &#8212;\u00a0<a href=\"https:\/\/arxiv.org\/abs\/2510.27688\" rel=\"noopener noreferrer nofollow\">arXiv:2510.27688<\/a>.<\/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\/1047034\/\">https:\/\/habr.com\/ru\/articles\/1047034\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0437\u044f\u043b\u0438 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0438\u0437 \u0441\u0432\u0435\u0436\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u044b\u00a0CALM (Continuous Autoregressive Language Models), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0447\u0438\u0442\u0441\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0447\u0430\u043d\u043a \u0438\u0437 K=4 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0438 \u043e\u0431\u0443\u0447\u0438\u043b\u0438 \u0435\u0433\u043e \u043d\u0435 \u043d\u0430 15 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 Pile \u043d\u0430 8 GPU, \u043a\u0430\u043a \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435, \u0430 \u043d\u0430 18 \u0442\u044b\u0441\u044f\u0447\u0430\u0445 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 IT-\u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 &#8212; \u043d\u0430 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u0431\u0435\u0437 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b. \u041f\u043e \u0434\u043e\u0440\u043e\u0433\u0435 \u0432\u044b\u0433\u0440\u0435\u0431\u043b\u0438 \u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0433\u0440\u0430\u0431\u043b\u0438 (flash-attn \u0431\u0435\u0437 CUDA, deepspeed, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 NumPy 2.x, \u0438 \u0442\u0438\u0445\u0438\u0439 OOM \u043d\u0430 33 \u0413\u0411 \u043b\u043e\u0433\u0438\u0442\u043e\u0432). \u041d\u0438\u0436\u0435 &#8212; \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0438 \u0447\u0435\u0441\u0442\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b round-trip-\u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438.\ud83d\udca1 \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u0432 \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044f\u0445\u0421\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 LLM \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435: \u043e\u043d\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0442\u0435\u043a\u0441\u0442\u00a0\u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0442\u043e\u043a\u0435\u043d\u0443 \u0437\u0430 \u0448\u0430\u0433. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u043e\u043a\u0435\u043d \u2192 \u043f\u043e\u0434\u0430\u043b \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0432\u0445\u043e\u0434 \u2192 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439. \u0427\u0435\u043c \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u043e\u0442\u0432\u0435\u0442, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0448\u0430\u0433\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u0438 \u044d\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0438\u0442\u0441\u044f \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435.\u0410\u0432\u0442\u043e\u0440\u044b\u00a0CALM\u00a0(GitHub,\u00a0\u0431\u043b\u043e\u0433) \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0441\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443: \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u00a0\u043e\u0434\u0438\u043d \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 \u0432\u0435\u043a\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0441\u0440\u0430\u0437\u0443\u00a0\u0447\u0430\u043d\u043a \u0438\u0437 K \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u0415\u0441\u043b\u0438 K=4, \u0442\u043e \u0447\u0438\u0441\u043b\u043e \u0448\u0430\u0433\u043e\u0432 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438 \u043f\u0430\u0434\u0430\u0435\u0442 \u0432 4 \u0440\u0430\u0437\u0430.\u041f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043e\u0441\u044c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f &#8212; \u0430\u0432\u0442\u043e\u0440\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0435\u0451\u00a0semantic bandwidth (K): \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u0438 \u043e\u0431\u044a\u0451\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u0437\u0430 \u043e\u0434\u0438\u043d \u0448\u0430\u0433.\u0427\u0442\u043e\u0431\u044b \u044d\u0442\u043e \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u0443\u0436\u043d\u043e \u0434\u0432\u0435 \u043c\u043e\u0434\u0435\u043b\u0438:\u0410\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438\u00a0&#8212; \u0443\u0447\u0438\u0442\u0441\u044f \u0441\u0436\u0438\u043c\u0430\u0442\u044c K \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440 \u0438 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043f\u043e\u0447\u0442\u0438 \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u044c. \u042d\u0442\u043e \u00ab\u0441\u043b\u043e\u0432\u0430\u0440\u044c\u00bb \u043c\u0435\u0436\u0434\u0443 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043c\u0438\u0440\u043e\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u043c \u043b\u0430\u0442\u0435\u043d\u0442\u043d\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c.Continuous-domain LM\u00a0&#8212; \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u0432 \u044d\u0442\u043e\u043c \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 (\u0430 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d).\u0422\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u0443\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0434\u0438\u0441\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e softmax-\u043c\u0438\u0440\u0430, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 maximum likelihood \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e &#8212; \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 CALM \u0435\u0441\u0442\u044c \u0446\u0435\u043b\u044b\u0439 likelihood-free \u0442\u0443\u043b\u043a\u0438\u0442:\u00a0Energy-based training, \u043c\u0435\u0442\u0440\u0438\u043a\u0430\u00a0BrierLM\u00a0\u0438\u00a0temperature sampling\u00a0\u043f\u043e\u0432\u0435\u0440\u0445 \u0447\u0451\u0440\u043d\u043e\u0433\u043e \u044f\u0449\u0438\u043a\u0430-\u0441\u044d\u043c\u043f\u043b\u0435\u0440\u0430.\u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f &#8212;\u00a0\u043f\u0440\u043e \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0434\u0438\u044e, \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440. \u0418\u043c\u0435\u043d\u043d\u043e \u043e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0430 \u0432\u0441\u044f \u0437\u0430\u0442\u0435\u044f: \u0435\u0441\u043b\u0438 \u0447\u0430\u043d\u043a \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0437 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0442\u043e \u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e.\ud83d\udcda \u0417\u043e\u043e\u043f\u0430\u0440\u043a \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438\u0427\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043a\u0443\u0434\u0430 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0448 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442, \u0432\u043e\u0442 \u0447\u0442\u043e \u043b\u0435\u0436\u0438\u0442 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 CALM:\u041c\u043e\u0434\u0435\u043b\u044c\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044bAutoencoder\u0441\u0436\u0430\u0442\u0438\u0435 K \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u2194 \u0432\u0435\u043a\u0442\u043e\u0440 (\u0441\u0442\u0430\u0434\u0438\u044f 1)75MCALM-M \/ L \/ XL\u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044f (\u0441\u0442\u0430\u0434\u0438\u044f 2)371M \/ 735M \/ 1.82BAR baseline\u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440 \u0434\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f-\u0414\u043b\u044f \u0441\u0442\u0430\u0434\u0438\u0438 2 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u00a0\u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u00ab\u0433\u043e\u043b\u043e\u0432\u044b\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0435\u043a\u0442\u043e\u0440\u0430:Energy-based\u00a0(train_energy.py) &#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439, \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0443;Diffusion\u00a0(train_diffusion.py);Flow Matching\u00a0(train_flow.py).\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u0435\u0440\u044f\u044e\u0442 \u043c\u0435\u0442\u0440\u0438\u043a\u043e\u0439\u00a0BrierLM: CALM-M \u0434\u0430\u0451\u0442 5.72, CALM-XL &#8212; 8.53, \u0442\u043e\u043a\u0435\u043d\u043d\u044b\u0439 baseline \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 &#8212; 6.05. \u042d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u0430 \u0432 \u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u043e\u0431\u043e\u0448\u043b\u0430 diffusion \u0438 flow.\u041c\u044b \u0432\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e \u043d\u0435 \u043b\u0435\u0437\u043b\u0438 &#8212; \u043d\u0430\u0448 \u0444\u043e\u043a\u0443\u0441 \u0441\u0442\u0440\u043e\u0433\u043e \u043d\u0430 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0435.\ud83c\udfd7\ufe0f \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430: \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e \u0441\u043b\u043e\u044f\u043c\u042d\u0442\u043e \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0410\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 CALM &#8212; \u043d\u0435 \u00ab\u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440-\u044d\u043d\u043a\u043e\u0434\u0435\u0440\u00bb, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c. \u042d\u0442\u043e\u00a0\u0432\u0430\u0440\u0438\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 (VAE), \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u0430\u0442\u0447\u0430, \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043d\u0430 MLP-\u0441\u043b\u043e\u044f\u0445, \u0431\u0435\u0437 self-attention. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e.\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u0431\u043b\u043e\u043a: AELayer (MLP, \u0431\u0435\u0437 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f)class AELayer(nn.Module):    def __init__(self, config):        self.mlp = LlamaMLP(config)                 # SwiGLU \u043a\u0430\u043a \u0432 LLaMA        self.layernorm = LlamaRMSNorm(config.hidden_size, eps=config.rms_norm_eps)    def forward(self, hidden_states):        residual = hidden_states        hidden_states = self.layernorm(hidden_states)        hidden_states = self.mlp(hidden_states)        return residual + hidden_states             # pre-norm + residual\u041d\u0438\u043a\u0430\u043a\u043e\u0433\u043e attention. \u042d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e: \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0430\u0442\u0447 \u0438\u0437 K \u0442\u043e\u043a\u0435\u043d\u043e\u0432\u00a0\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u00a0\u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445. \u0415\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0430 &#8212; \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u0436\u0430\u0442\u0438\u0435\/\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0430 \u0447\u0430\u043d\u043a\u0430, \u0430 \u043d\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u0438 2. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 AE \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0435\u0448\u0451\u0432\u044b\u043c \u0438 \u0431\u044b\u0441\u0442\u0440\u044b\u043c.\u042d\u043d\u043a\u043e\u0434\u0435\u0440: 4 \u0442\u043e\u043a\u0435\u043d\u0430 \u2192 \u043e\u0434\u0438\u043d \u0432\u0435\u043a\u0442\u043e\u0440\u041f\u043e\u0442\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445 (\u0434\u043b\u044f K=patch_size=4,\u00a0hidden_size=512,\u00a0latent_size=128):\u0412\u0445\u043e\u0434\u00a0input_ids\u00a0\u0440\u0435\u0448\u0435\u0439\u043f\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u0442\u0447\u0438:\u00a0(B, L) \u2192 (B\u00b7L\/4, 4).\u042d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438:\u00a0(N, 4) \u2192 (N, 4, 512).\u0421\u0442\u0430\u0434\u0438\u044f 0:\u00a0\u043e\u0434\u0438\u043d\u00a0AELayer\u00a0\u043f\u043e\u0432\u0435\u0440\u0445 4 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.Squeeze:\u00a0\u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u0443\u0435\u043c 4 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0441\u0436\u0438\u043c\u0430\u0435\u043c &#8212;\u00a0Linear(4\u00b7512 \u2192 512). \u0412\u043e\u0442 \u0442\u0443\u0442 \u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044f \u043f\u0430\u0442\u0447\u0430:\u00a0(N, 4, 512) \u2192 (N, 1, 512).\u0421\u0442\u0430\u0434\u0438\u044f 1:\u00a0\u0435\u0449\u0451 \u043e\u0434\u0438\u043d\u00a0AELayer.hidden_to_latent:\u00a0Linear(512 \u2192 256)\u00a0\u2192\u00a0(N, 1, 256).\u041f\u043e\u0447\u0435\u043c\u0443 256, \u0430 \u043d\u0435 128? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e\u00a0VAE: 256 =\u00a0latent_size\u00b72\u00a0&#8212; \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043d\u0430\u00a0mean, \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043d\u0430\u00a0log_std.mean, log_std = torch.chunk(latent_states, 2, dim=-1)   # \u043f\u043e 128std = torch.exp(log_std)eps = torch.randn_like(mean)latent_states = mean + eps * std                        # \u0440\u0435\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438\u0437\u0430\u0446\u0438\u044fkl_loss = 0.5 * (mean**2 + std**2 &#8212; 1 &#8212; 2*log_std)kl_loss = torch.clamp(kl_loss, min=config.kl_clamp).sum(-1).mean()\u0422\u043e \u0435\u0441\u0442\u044c \u043b\u0430\u0442\u0435\u043d\u0442 &#8212; \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440, \u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0430\u0443\u0441\u0441\u0438\u0430\u043d\u044b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f. KL-\u0447\u043b\u0435\u043d \u0441\u00a0kl_clamp=0.5\u00a0\u0438 \u0432\u0435\u0441\u043e\u043c\u00a0kl_weight=1e-3\u00a0\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0443\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0431\u044b\u043b\u043e \u0433\u043b\u0430\u0434\u043a\u0438\u043c (\u0432\u0430\u0436\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0430\u0434\u0438\u0438 2, \u0433\u0434\u0435 \u043f\u043e \u043d\u0435\u043c\u0443 \u043d\u0430\u0434\u043e \u00ab\u0445\u043e\u0434\u0438\u0442\u044c\u00bb \u0430\u0432\u0442\u043e\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0435\u0439).\u0414\u0435\u043a\u043e\u0434\u0435\u0440: \u0432\u0435\u043a\u0442\u043e\u0440 \u2192 4 \u0442\u043e\u043a\u0435\u043d\u0430\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0443:latent_to_hidden:\u00a0Linear(128 \u2192 512).\u0421\u0442\u0430\u0434\u0438\u044f 0:\u00a0\u043e\u0434\u0438\u043d\u00a0AELayer.Expand:\u00a0Linear(512 \u2192 4\u00b7512)\u00a0\u0438 \u0440\u0435\u0448\u0435\u0439\u043f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 4 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 &#8212; \u00ab\u0440\u0430\u0437\u0436\u0438\u043c\u0430\u0435\u043c\u00bb \u043f\u0430\u0442\u0447.\u0421\u0442\u0430\u0434\u0438\u044f 1:\u00a0\u0435\u0449\u0451 \u043e\u0434\u0438\u043d\u00a0AELayer.lm_head: \u043f\u0440\u043e\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u044c. \u0412\u0435\u0441\u0430\u00a0lm_head\u00a0\u0441\u0432\u044f\u0437\u0430\u043d\u044b (tied)\u00a0\u0441 \u043c\u0430\u0442\u0440\u0438\u0446\u0435\u0439 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432 \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430 &#8212; \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.\u041b\u043e\u0441\u0441 \u0440\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 &#8212; \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044f \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0430\u043c, \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u043d\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u00a0patch_size\u00a0\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0441 KL:loss = CrossEntropy(logits, labels)if self.training:    loss = loss * patch_size + kl_loss * kl_weight\u0413\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0444\u0438\u0433)\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435patch_size\u00a0(K)4hidden_size512intermediate_size\u00a0(MLP)1280latent_size128num_encoder_layers2num_decoder_layers2ae_dropout0.15kl_weight\u00a0\/\u00a0kl_clamp1e-3 \/ 0.5\u0442\u043e\u043a\u0435\u043d\u0430\u0439\u0437\u0435\u0440Llama-3 (~128k \u0441\u043b\u043e\u0432\u0430\u0440\u044c)\u0432\u0441\u0435\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432~75.8M\u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 \u0444\u0430\u043a\u0442: \u0438\u0437 75.8M \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432\u00a0\u043f\u043e\u0434\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c &#8212; \u044d\u0442\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432\u00a0(~128k x 512 \u2248 65M). \u0421\u0430\u043c\u0430 \u00ab\u043b\u043e\u0433\u0438\u043a\u0430\u00bb \u044d\u043d\u043a\u043e\u0434\u0435\u0440\u0430-\u0434\u0435\u043a\u043e\u0434\u0435\u0440\u0430 \u0432\u0435\u0441\u0438\u0442 \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043b\u0451\u0433\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c &#8212; \u0447\u0442\u043e \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0431\u0435\u0437 GPU.\ud83d\udd2c \u041d\u0430\u0448 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u043e\u043c\u0435\u043d\u043d\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u044f\u0445\u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0443\u0447\u0430\u0442 \u043d\u0430 ~15 \u043c\u043b\u0440\u0434 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u00a0pile-uncopyrighted, \u043d\u0430 8 GPU, \u0432 bf16, 30 000 \u0448\u0430\u0433\u043e\u0432. \u041d\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0435:\u00a0\u043a\u0430\u043a \u043f\u043e\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u044d\u0442\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043d\u0430 \u0443\u0437\u043a\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0438 \u043d\u0430 \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435?\u0414\u0430\u043d\u043d\u044b\u0435jobs_requirements.jsonl\u00a0&#8212; 18 065 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 IT-\u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439, \u0441\u043c\u0435\u0441\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e \u0438 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e:{&#171;text&#187;: &#171;React JS 18+&#187;}{&#171;text&#187;: &#171;\u041f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 REST API&#187;}{&#171;text&#187;: &#171;\u0423\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u0435 JavaScript: \u0437\u0430\u043c\u044b\u043a\u0430\u043d\u0438\u044f, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (async\/await | Promises), ES6+&#187;}\u0412\u0441\u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0441\u043a\u043b\u0435\u0439\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c ~340k \u0442\u043e\u043a\u0435\u043d\u043e\u0432. \u042d\u0442\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430 \u043f\u044f\u0442\u044c-\u0448\u0435\u0441\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432 \u043c\u0435\u043d\u044c\u0448\u0435 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430 &#8212; \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e\u00a0proof-of-concept \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438, \u0430 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0441\u0442\u0430\u0442\u044c\u0438. \u0414\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c\u0441\u044f \u043e\u0431 \u044d\u0442\u043e\u043c \u0441\u0440\u0430\u0437\u0443, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u0446\u0438\u0444\u0440\u044b.\u0416\u0435\u043b\u0435\u0437\u043e\u041c\u0430\u0448\u0438\u043d\u0430 \u0431\u0435\u0437 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b:\u00a062 \u0413\u0411 RAM, 28 \u044f\u0434\u0435\u0440 CPU, \u043d\u0438\u00a0nvidia-smi, \u043d\u0438\u00a0nvcc,\u00a0torch.cuda.is_available() == False. \u0422\u043e \u0435\u0441\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u00ab\u0431\u044b\u0442\u043e\u0432\u044b\u0435\u00bb.\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b (\u0441\u0442\u0430\u0442\u044c\u044f)\u041d\u0430\u0448 \u0437\u0430\u043f\u0443\u0441\u043a\u0434\u0430\u043d\u043d\u044b\u0435~15B \u0442\u043e\u043a\u0435\u043d\u043e\u0432 Pile18k \u0441\u0442\u0440\u043e\u043a \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 (~340k \u0442\u043e\u043a\u0435\u043d\u043e\u0432)\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e8x GPU, bf161x CPU, fp32block_size2048256\u00a0(\u0441\u043c. \u0433\u0440\u0430\u0431\u043b\u0438 \u043d\u0438\u0436\u0435)per_device_train_batch_size832learning_rate3e-42e-4\u044d\u043f\u043e\u0445\u0438 \/ \u0448\u0430\u0433\u04381 \u044d\u043f\u043e\u0445\u0430 \/ 30 000 \u0448\u0430\u0433\u043e\u04325 \u044d\u043f\u043e\u0445 \/ 220 \u0448\u0430\u0433\u043e\u0432latent_size,\u00a0patch_size128, 4128, 4\ud83d\udea7 \u0422\u0440\u0438 \u0433\u0440\u0430\u0431\u043b\u0438 \u043f\u043e \u0434\u043e\u0440\u043e\u0433\u04351. flash-attn \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u0435\u0437 CUDArequirements.txt\u00a0\u0442\u044f\u043d\u0435\u0442\u00a0flash-attn==2.1.1, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u00a0nvcc\u00a0\u043d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 GPU \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a. \u041d\u0430 CPU-\u043c\u0430\u0448\u0438\u043d\u0435 \u043e\u043d \u043d\u0435 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435. \u041b\u0435\u0447\u0435\u043d\u0438\u0435 &#8212; \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0432 \u0435\u0433\u043e:grep -v &#8216;^flash-attn&#8217; requirements.txt | uv pip install -r \/dev\/stdin\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0441\u0430\u043c \u0430\u0432\u0442\u043e\u044d\u043d\u043a\u043e\u0434\u0435\u0440 flash-attn \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 (\u0435\u0433\u043e \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u043b\u043e\u0432\u044b energy\/flow\/diffusion\/calm, \u0438 \u0442\u043e &#8212; \u043f\u043e\u0434\u00a0if is_flash_attn_2_available()).2. deepspeed \u043d\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 NumPy 2.x\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0430\u0434\u0430\u043b\u043e \u0443\u0436\u0435\u00a0\u0432\u043d\u0443\u0442\u0440\u0438\u00a0Trainer.train()\u00a0\u0441 \u0442\u0430\u043a\u043e\u0439 \u0442\u0440\u0430\u0441\u0441\u043e\u0439:File &#171;&#8230;\/accelerate\/utils\/other.py&#187;, line 80, in extract_model_from_parallel from deepspeed import DeepSpeedEngine &#8230; File &#171;&#8230;\/deepspeed\/autotuning\/scheduler.py&#187;, line 8 from numpy import BUFSIZE ImportError: cannot import name &#8216;BUFSIZE&#8217; from &#8216;numpy&#8217;numpy.BUFSIZE\u00a0\u0443\u0431\u0440\u0430\u043b\u0438 \u0432 NumPy 2.0, \u0430\u00a0deepspeed==0.10.0\u00a0\u043d\u0430 \u043d\u0435\u0433\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c HF-accelerate\u00a0\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 deepspeed\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u00a0(is_deepspeed_available()\u00a0= \u00ab\u043f\u0430\u043a\u0435\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00bb). deepspeed \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0430 GPU &#8212; \u0443 \u043d\u0430\u0441 \u0435\u0433\u043e \u043d\u0435\u0442 \u0438 \u0431\u044b\u0442\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0430\u043c\u043e\u0435 \u0447\u0438\u0441\u0442\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 &#8212; \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043d\u0435\u0441\u0442\u0438 \u0435\u0433\u043e:uv pip uninstall deepspeed(\u041e\u0442\u043a\u0430\u0442\u044b\u0432\u0430\u0442\u044c NumPy \u0432\u043d\u0438\u0437 &#8212; \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u043e: \u043a\u043e\u043b\u0451\u0441\u0430 pandas\/pyarrow \u0432 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043f\u043e\u0434 NumPy 2.x, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0439\u043c\u0430\u0442\u044c ABI-\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.)3. \u0422\u0438\u0445\u0438\u0439 OOM \u043d\u0430 33 \u0413\u0411 \u043b\u043e\u0433\u0438\u0442\u043e\u0432\u0421\u0430\u043c\u043e\u0435 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u0421 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u043c\u00a0block_size=2048\u00a0\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00a0\u043c\u043e\u043b\u0447\u0430 \u0443\u043c\u0438\u0440\u0430\u043b \u043d\u0430 \u043d\u0443\u043b\u0435\u0432\u043e\u043c \u0448\u0430\u0433\u0435\u00a0&#8212; \u0431\u0435\u0437 \u0442\u0440\u0435\u0439\u0441\u0431\u044d\u043a\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u0447\u0435\u0437\u0430\u043b. \u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u044c OOM-\u043a\u0438\u043b\u043b\u0435\u0440\u0430 (SIGKILL).\u041f\u0440\u0438\u0447\u0438\u043d\u0430 &#8212; \u0432 \u0444\u043e\u0440\u043c\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u0430 \u043b\u043e\u0433\u0438\u0442\u043e\u0432. \u0414\u0435\u043a\u043e\u0434\u0435\u0440 \u0432\u044b\u0434\u0430\u0451\u0442 \u043b\u043e\u0433\u0438\u0442\u044b \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438:logits: (batch x block_size x vocab) = 32 x 2048 x 128256 x 4 \u0431\u0430\u0439\u0442\u0430 \u2248 33.6 \u0413\u0411\u041f\u043b\u044e\u0441 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u043d\u0430 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u0432 backward \u2192 ~67 \u0413\u0411 \u043d\u0430 \u043e\u0434\u0438\u043d \u0448\u0430\u0433 \u043f\u0440\u0438 56 \u0413\u0411 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445. \u041e\u0442\u0441\u044e\u0434\u0430 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439 kill. \u0412 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435 \u0441\u043f\u0430\u0441\u0430\u043b\u043e \u0442\u043e, \u0447\u0442\u043e batch \u0431\u044b\u043b 8 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0448\u043b\u043e \u043d\u0430 GPU \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u044c\u044e.\u041b\u0435\u0447\u0435\u043d\u0438\u0435: \u043b\u043e\u0433\u0438\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u044b \u043f\u043e\u00a0batch x block_size. \u0414\u0430\u043d\u043d\u044b\u0435 \u0443 \u043d\u0430\u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043b\u0438\u043d\u043d\u044b\u0439\u00a0block_size\u00a0\u043d\u0435 \u043d\u0443\u0436\u0435\u043d. \u0421\u043d\u0438\u0437\u0438\u043b\u0438 \u0435\u0433\u043e \u0434\u043e\u00a0256\u00a0(batch \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 32):32 x 256 x 128256 x 4 \u2248 4.2 \u0413\u0411 \u2190 \u043f\u043e\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0441 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u043c \u0437\u0430\u043f\u0430\u0441\u043e\u043cRSS \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u043e\u0441\u043b\u0435 \u0444\u0438\u043a\u0441\u0430 \u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f \u043d\u0430 ~6.6 \u0413\u0411 &#8212; \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e.\ud83d\ude80 \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0412\u0441\u0435 \u043f\u0440\u0430\u0432\u043a\u0438 \u0441\u0432\u0435\u043b\u0438 \u0432 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0439 \u043b\u0430\u0443\u043d\u0447\u0435\u0440 (\u0432\u0430\u0436\u043d\u043e: \u0437\u0430\u043f\u0443\u0441\u043a\u00a0\u043c\u043e\u0434\u0443\u043b\u0435\u043c\u00a0-m train.train_autoencoder\u00a0\u0438\u0437 \u043a\u043e\u0440\u043d\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0438\u043d\u0430\u0447\u0435 \u043d\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f\u00a0import models):.venv\/bin\/python -m train.train_autoencoder \\    &#8212;train_file .\/data\/jobs_requirements.json \\    &#8212;validation_file .\/data\/jobs_requirements.json \\    &#8212;tokenizer_name .\/llama3_tokenizer \\&#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-483486","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/483486","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=483486"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/483486\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=483486"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=483486"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=483486"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}