{"id":357118,"date":"2024-05-20T23:43:54","date_gmt":"2024-05-20T23:43:54","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=357118"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-20T23:43:54","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=357118","title":{"rendered":"<span>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Hugging Face \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f GPT-2 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8fa\/e34\/821\/8fae34821d8521e7414e78929bc2f9d8.png\" width=\"1189\" height=\"274\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8fa\/e34\/821\/8fae34821d8521e7414e78929bc2f9d8.png\"\/><\/figure>\n<p>Hugging Face \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 \u0434\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u043c\u043e-\u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Hugging Face.\u00a0<strong>\u041a \u043a\u043e\u043d\u0446\u0443 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c GPT-2 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438.<\/strong><\/p>\n<p>\u0414\u0435\u043c\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/huggingface.co\/spaces\/juancopi81\/multitrack-midi-music-generator\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0441\u0442\u0430\u043b\u0430 \u0432\u044b\u0434\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 <a href=\"https:\/\/www.linkedin.com\/in\/dr-tristan-behrens-734967a2\" rel=\"noopener noreferrer nofollow\"><u>\u0434\u043e\u043a\u0442\u043e\u0440\u0430 \u0422\u0440\u0438\u0441\u0442\u0430\u043d\u0430 \u0411\u0435\u0440\u0435\u043d\u0441\u0430<\/u><\/a>.<\/p>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0418\u0418 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0444\u0435\u0440\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u0412\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 ChatGPT \u0438 Stable Diffusion \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0438. \u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (Facebook, OpenAI \u0438 Stability AI) \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0438\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e, \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0432 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430:<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u044b\u0440\u043e\u0435 \u0430\u0443\u0434\u0438\u043e<\/strong>: \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u044b\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u0430 (.wav, .mp3) .\u00a0\u0422\u0430\u043a\u0443\u044e \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u043b\u044f <a href=\"https:\/\/stableaudio.com\/\" rel=\"noopener noreferrer nofollow\"><u>StableAudio<\/u><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/huggingface.co\/spaces\/facebook\/MusicGen\" rel=\"noopener noreferrer nofollow\"><u>MusicGen<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0443\u0437\u044b\u043a\u0430<\/strong>: \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u044b\u0440\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0430\u0443\u0434\u0438\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u0435\u043b\u043e\u0434\u0438\u0438 \u043d\u0430 \u0444\u043b\u0435\u0439\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u0442\u043e\u043c \u043d\u043e\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 MIDI \u0438\u043b\u0438 MusicXML. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f OpenAI \u043e\u0431\u0443\u0447\u0430\u043b\u0430 <a href=\"https:\/\/openai.com\/research\/musenet\" rel=\"noopener noreferrer nofollow\"><u>MuseNet<\/u><\/a>\u00a0(\u0443\u0436\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e) \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0445\u0438\u0442\u0440\u0443\u044e \u0438\u0434\u0435\u044e: \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438 (\u0432 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b MIDI) \u0432 \u0441\u043b\u043e\u0432\u0430, \u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u043c\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 NLP!<\/p>\n<h3>\u0421\u0431\u043e\u0440 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0433\u043e \u0432 \u0441\u043b\u043e\u0432\u0430<\/h3>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/strong>\u00a0\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 MIDI, \u044f \u043a\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 <a href=\"https:\/\/huggingface.co\/datasets\/juancopi81\/mmm_track_lmd_8bars_nots\" rel=\"noopener noreferrer nofollow\"><u>Hugging Face<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u043c <a href=\"https:\/\/huggingface.co\/datasets\/TristanBehrens\/js-fakes-4bars\" rel=\"noopener noreferrer nofollow\"><u>JS Fake Chorales<\/u><\/a>.<\/p>\n<p>\u0421\u0431\u043e\u0440 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 MIDI, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u043a\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u041a\u043e\u043b\u0438\u043d\u043e\u043c \u0420\u044d\u0444\u0444\u0435\u043b\u043e\u043c \u2014 <a href=\"https:\/\/colinraffel.com\/projects\/lmd\/\" rel=\"noopener noreferrer nofollow\"><u>Lakh MIDI dataset (LMD)<\/u><\/a>, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0443\u044e \u0432 \u0441\u0435\u0431\u044f 176581 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b MIDI. \u0418\u0437 LDM \u043c\u044b \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e Clean MIDI (14751 \u0444\u0430\u0439\u043b) \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0436\u0430\u043d\u0440\u044b<\/h4>\n<p>\u0417\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0451 \u0436\u0430\u043d\u0440. \u042d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432. \u042f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Spotify API \u043f\u043e\u043b\u0443\u0447\u0443 \u0436\u0430\u043d\u0440\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044e, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044e ChatGPT \u0434\u043b\u044f \u0438\u0445 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0436\u0430\u043d\u0440\u043e\u0432.<\/p>\n<pre><code class=\"python\"># \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 Spotify API genres = {} for i,artist in enumerate(artists):     try:         results = sp.search(q=artist, type='artist',limit=1)         items = results['artists']['items']         genre_list = items[0]['genres'] if len(items) else items['genres']         genres[artist] = (genre_list[0]).replace(\" \", \"_\")         if i &lt; 5:             print(\"INFO: Preview {}\/5\".format(i + 1),                   artist, genre_list[:5])     except Exception as e:         genres[artist] = \"MISC\"         print(\"INFO: \", artist, \"not included: \", e)<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b, \u043d\u043e \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b CSV \u0441 \u0436\u0430\u043d\u0440\u0430\u043c\u0438\u00a0<a href=\"https:\/\/github.com\/juancopi81\/mmm_tokenizer_lmd_clean\/blob\/main\/source\/preprocess\/loading\/lmd_genres.csv\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u044b\u043b\u043e\u0436\u0435\u043d \u043d\u0430 GitHub<\/u><\/a>.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0436\u0430\u043d\u0440\u044b? \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u0430 <code>\"GENRE={NAME_OF_GENRE}\"<\/code>, \u0447\u0442\u043e \u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0436\u0430\u043d\u0440\u0430.<\/p>\n<h4>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h4>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/7c7\/d35\/d94\/7c7d35d946231bfa5e00707c869eff71.jpeg\" alt=\"Tokenizing Dataset\" title=\"\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0442 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b.\" width=\"1189\" height=\"274\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7c7\/d35\/d94\/7c7d35d946231bfa5e00707c869eff71.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0442 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0432\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0442\u043e\u043a\u0435\u043d\u044b, \u0430 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438! \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u0444\u0430\u0439\u043b\u0430 MIDI \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432 (\u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u043b\u0435\u043a\u0441\u0438\u043a\u043e\u043d\u0443) \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 GPT-2.<\/p>\n<h4>\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043d\u0430 \u0431\u043b\u043e\u043a\u0438<\/h4>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0438\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u00ab\u0442\u0430\u043a\u0442\u00bb (bar) \u2014 \u044d\u0442\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0435\u0439. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 4 \u0438\u043b\u0438 16, \u0438 \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043d\u043e \u043c\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b MIDI \u0434\u043b\u0438\u043d\u043e\u0439 \u0432\u043e\u0441\u0435\u043c\u044c \u0442\u0430\u043a\u0442\u043e\u0432. \u0414\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0432 Colab:<\/p>\n<pre><code class=\"python\">for i, midi_path in enumerate(tqdm(midi_paths, desc=\"CHUNKING MIDIS\")):     try:         # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430         relative_path = midi_path.relative_to(Path(\"path\/to\/dataset\/lmd\", dataset))         output_dir = merged_out_dir \/ relative_path.parent         output_dir.mkdir(parents=True, exist_ok=True)          # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438 \u0443\u0436\u0435 \u0431\u043b\u043e\u043a\u0438         chunk_paths = list(output_dir.glob(f\"{midi_path.stem}_*.mid\"))         if len(chunk_paths) > 0:             print(f\"Chunks for {midi_path} already exist, skipping...\")             continue          # \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c MIDI, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e         midi = MidiFile(midi_path)         ticks_per_cut = MAX_NB_BAR * midi.ticks_per_beat * 4         nb_cuts = ceil(midi.max_tick \/ ticks_per_cut)         if nb_cuts &lt; 2:             continue         print(f\"Processing {midi_path}\")         midis = [deepcopy(midi) for _ in range(nb_cuts)]          for j, track in enumerate(midi.instruments):  # \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0442\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e             track.notes.sort(key=lambda x: x.start)             for midi_short in midis:  # \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u043d\u043e\u0442\u044b \u0438\u0437 \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0445 MIDI                 midi_short.instruments[j].notes = []             for note in track.notes:                 cut_id = note.start \/\/ ticks_per_cut                 note_copy = deepcopy(note)                 note_copy.start -= cut_id * ticks_per_cut                 note_copy.end -= cut_id * ticks_per_cut                 midis[cut_id].instruments[j].notes.append(note_copy)          # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c MIDI         for j, midi_short in enumerate(midis):             if sum(len(track.notes) for track in midi_short.instruments) &lt; MIN_NB_NOTES:                 continue             midi_short.dump(output_dir \/ f\"{midi_path.stem}_{j}.mid\")      except Exception as e:         print(f\"An error occurred while processing {midi_path}: {e}\")<\/code><\/pre>\n<p>\u0412\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u0434\u0430. \u041f\u043e\u043b\u043d\u044b\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/colab.research.google.com\/drive\/1KLbe-ZnIyvpPypVqYapBRs-o5Q1E7a9R?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<h4>\u0418\u0437 \u043a\u043e\u043c\u0430\u043d\u0434 MIDI \u0432 \u0441\u043b\u043e\u0432\u0430<\/h4>\n<p>\u0421\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u0432\u043e\u0441\u044c\u043c\u0438\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b MIDI, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432\u0430. \u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438. \u0412\u043e\u0442 \u043e\u0434\u043d\u0438 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3394171.3413671\" rel=\"noopener noreferrer nofollow\"><u>REMI<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2201.10936\" rel=\"noopener noreferrer nofollow\"><u>REMIPlus<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1808.03715\" rel=\"noopener noreferrer nofollow\"><u>MIDI-Like<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/ojs.aaai.org\/index.php\/AAAI\/article\/view\/16091\" rel=\"noopener noreferrer nofollow\"><u>CPWord<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2008.06048\" rel=\"noopener noreferrer nofollow\"><u>MMM<\/u><\/a><\/p>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/miditok.readthedocs.io\/en\/latest\/tokenizations.html\" rel=\"noopener noreferrer nofollow\"><u>\u041f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0439 \u043e\u0431\u0437\u043e\u0440<\/u><\/a>\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/Natooz\/MidiTok\" rel=\"noopener noreferrer nofollow\"><u>MidiTok<\/u><\/a> \u2014 \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 Python \u0434\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 MIDI.<\/p>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<th>\n<p>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f<\/p>\n<\/th>\n<th>\n<p>\u0422\u0435\u043c\u043f<\/p>\n<\/th>\n<th>\n<p>\u0422\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440<\/p>\n<\/th>\n<th>\n<p>\u0410\u043a\u043a\u043e\u0440\u0434\u044b<\/p>\n<\/th>\n<th data-colwidth=\"102\" width=\"102\">\n<p>\u041f\u0430\u0443\u0437\u044b<\/p>\n<\/th>\n<th data-colwidth=\"91\" width=\"91\">\n<p>\u041f\u0435\u0434\u0430\u043b\u044c \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430<\/p>\n<\/th>\n<th>\n<p>\u041c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u044f \u0437\u0432\u0443\u043a\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MIDILike<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">REMI<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TSD<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Structured<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CPWord<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Octuple<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MuMIDI<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MMM<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MMM: \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 Multi-Track Music Machine. MMM \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043d\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 MIDI \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432\u0430. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<h4>MMM: Multi-Track Music Machine<\/h4>\n<p>\u0414\u0436\u0435\u0444\u0444 \u042d\u043d\u0441 \u0438 \u0424\u0438\u043b\u0438\u043f \u041f\u0430\u0441\u043a\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 MMM \u0432 \u043d\u0430\u0443\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/arxiv.org\/abs\/2008.06048\" rel=\"noopener noreferrer nofollow\"><u>MMM: Exploring Conditional Multi-Track Music Generation with the Transformer<\/u><\/a>. \u0427\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dae\/82a\/99d\/dae82a99dfd89e08ab617d75f4e1389b.png\" alt=\"MMM: Multi-Track Music Machine Tokenization Method\" title=\"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f MultiTrack \u0438 Bar Fill. \u0422\u043e\u043a\u0435\u043d\u044b bar\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0442\u0430\u043a\u0442\u0430\u043c, \u0430 \u0442\u043e\u043a\u0435\u043d\u044b track\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0434\u043e\u0440\u043e\u0436\u043a\u0430\u043c.\" width=\"957\" height=\"724\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dae\/82a\/99d\/dae82a99dfd89e08ab617d75f4e1389b.png\"\/><\/p>\n<div><figcaption><em>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f MultiTrack \u0438 Bar Fill. \u0422\u043e\u043a\u0435\u043d\u044b bar\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0442\u0430\u043a\u0442\u0430\u043c, \u0430 \u0442\u043e\u043a\u0435\u043d\u044b track\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0434\u043e\u0440\u043e\u0436\u043a\u0430\u043c.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412  MMM \u0447\u0438\u0441\u043b\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 <a href=\"https:\/\/www.inspiredacoustics.com\/en\/MIDI_note_numbers_and_center_frequencies\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u044b\u0441\u043e\u0442\u0443 \u043d\u043e\u0442<\/u><\/a>\u00a0\u0438 <a href=\"https:\/\/soundprogramming.net\/file-formats\/general-midi-instrument-list\/\" rel=\"noopener noreferrer nofollow\"><u>\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/u><\/a>\u00a0\u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 MIDI. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u0441\u0445\u0435\u043c\u0435 NOTE_ON=60 \u2014 \u044d\u0442\u043e C4, \u0430 INST=30 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0433\u0438\u0442\u0430\u0440\u0443 \u0441 \u043e\u0432\u0435\u0440\u0434\u0440\u0430\u0439\u0432\u043e\u043c (Overdriven Guitar). \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c NOTE_ON\/NOTE_OFF \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u043d\u043e\u0442\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u0432\u0443\u0447\u0430\u0442\u044c, \u0438 TIME_DELTA \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u043a\u0430\u043b\u044b. \u041d\u043e\u0442\u044b \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u044b \u0432 \u0442\u043e\u043a\u0435\u043d\u044b &lt;BAR_START> \u0438 &lt;BAR_END>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432 &lt;TRACK_START> \u0438 &lt;TRACK_END>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 &lt;PIECE_START> \u0438 &lt;PIECE_END>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u0432\u0437\u044f\u0442\u044b\u043c \u0438\u0437 <a href=\"https:\/\/arxiv.org\/abs\/2107.10388\" rel=\"noopener noreferrer nofollow\"><u>JS Fake Chorales<\/u><\/a>:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6525050072e08276d7ae9673\" data-style=\"\" id=\"6525050072e08276d7ae9673\" width=\"\"><\/div>\n<pre><code>PIECE_START STYLE=JSFAKES GENRE=JSFAKES TRACK_START INST=48 BAR_START NOTE_ON=68 TIME_DELTA=4 NOTE_OFF=68 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 NOTE_ON=63 TIME_DELTA=2 NOTE_OFF=63 NOTE_ON=65 TIME_DELTA=2 NOTE_OFF=65 BAR_END BAR_START NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 NOTE_ON=58 TIME_DELTA=2 NOTE_OFF=58 NOTE_ON=60 TIME_DELTA=2 NOTE_OFF=60 NOTE_ON=62 TIME_DELTA=4 NOTE_OFF=62 BAR_END BAR_START NOTE_ON=62 TIME_DELTA=4 NOTE_OFF=62 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 BAR_END BAR_START NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=63 TIME_DELTA=12 NOTE_OFF=63 BAR_END TRACK_END TRACK_START INST=0 BAR_START NOTE_ON=72 TIME_DELTA=4 NOTE_OFF=72 NOTE_ON=75 TIME_DELTA=4 NOTE_OFF=75 NOTE_ON=70 TIME_DELTA=4 NOTE_OFF=70 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 BAR_END BAR_START NOTE_ON=72 TIME_DELTA=2 NOTE_OFF=72 NOTE_ON=70 TIME_DELTA=2 NOTE_OFF=70 NOTE_ON=68 TIME_DELTA=4 NOTE_OFF=68 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 BAR_END BAR_START NOTE_ON=70 TIME_DELTA=4 NOTE_OFF=70 NOTE_ON=68 TIME_DELTA=4 NOTE_OFF=68 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=72 TIME_DELTA=4 NOTE_OFF=72 BAR_END BAR_START NOTE_ON=72 TIME_DELTA=4 NOTE_OFF=72 NOTE_ON=70 TIME_DELTA=12 NOTE_OFF=70 BAR_END TRACK_END TRACK_START INST=32 BAR_START NOTE_ON=53 TIME_DELTA=4 NOTE_OFF=53 NOTE_ON=48 TIME_DELTA=4 NOTE_OFF=48 NOTE_ON=50 TIME_DELTA=4 NOTE_OFF=50 NOTE_ON=51 TIME_DELTA=4 NOTE_OFF=51 BAR_END BAR_START NOTE_ON=48 TIME_DELTA=4 NOTE_OFF=48 NOTE_ON=53 TIME_DELTA=4 NOTE_OFF=53 NOTE_ON=55 TIME_DELTA=2 NOTE_OFF=55 NOTE_ON=57 TIME_DELTA=2 NOTE_OFF=57 NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 BAR_END BAR_START NOTE_ON=55 TIME_DELTA=4 NOTE_OFF=55 NOTE_ON=48 TIME_DELTA=2 NOTE_OFF=48 NOTE_ON=50 TIME_DELTA=2 NOTE_OFF=50 NOTE_ON=51 TIME_DELTA=4 NOTE_OFF=51 NOTE_ON=44 TIME_DELTA=2 NOTE_OFF=44 NOTE_ON=46 TIME_DELTA=2 NOTE_OFF=46 BAR_END BAR_START NOTE_ON=48 TIME_DELTA=2 NOTE_OFF=48 NOTE_ON=50 TIME_DELTA=2 NOTE_OFF=50 NOTE_ON=51 TIME_DELTA=12 NOTE_OFF=51 BAR_END TRACK_END TRACK_START INST=24 BAR_START NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=65 TIME_DELTA=2 NOTE_OFF=65 NOTE_ON=58 TIME_DELTA=2 NOTE_OFF=58 NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 BAR_END BAR_START NOTE_ON=63 TIME_DELTA=2 NOTE_OFF=63 NOTE_ON=62 TIME_DELTA=2 NOTE_OFF=62 NOTE_ON=60 TIME_DELTA=2 NOTE_OFF=60 NOTE_ON=62 TIME_DELTA=2 NOTE_OFF=62 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 BAR_END BAR_START NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 NOTE_ON=60 TIME_DELTA=4 NOTE_OFF=60 NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 NOTE_ON=58 TIME_DELTA=4 NOTE_OFF=58 BAR_END BAR_START NOTE_ON=56 TIME_DELTA=4 NOTE_OFF=56 NOTE_ON=55 TIME_DELTA=12 NOTE_OFF=55 BAR_END TRACK_END PIECE_END<\/code><\/pre>\n<p>\u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e\u0442 \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u043b \u0432\u0430\u043c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 MMM. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435! \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 LMD Clean \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432\u0430.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u043c\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/github.com\/Natooz\/MidiTok\" rel=\"noopener noreferrer nofollow\"><u>MidiTok<\/u><\/a>\u00a0(\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435) \u0438\u043b\u0438\u00a0<a href=\"https:\/\/github.com\/carlosholivan\/musicaiz\" rel=\"noopener noreferrer nofollow\"><u>Musicaiz<\/u><\/a>. \u0423 \u043e\u0431\u0435\u0438\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0437\u044f\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 <a href=\"https:\/\/github.com\/AI-Guru\/MMM-JSB\" rel=\"noopener noreferrer nofollow\"><u>MMM-JSB<\/u><\/a>\u00a0\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434 Lakh Midi Dataset, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043c\u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c. \u0410\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u044b\u043b\u043e\u0436\u0435\u043d <a href=\"https:\/\/github.com\/juancopi81\/mmm_tokenizer_lmd_clean\" rel=\"noopener noreferrer nofollow\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<p>\u0418\u0437 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0444\u0430\u0439\u043b\u044b \u0441\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0438 \u0442\u0430\u043a\u0442\u043e\u0432\u044b\u043c\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u043e\u0442 4\/4. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 \u043d\u0451\u043c \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0442\u043e\u043a\u0435\u043d <code>GENRE= token<\/code>\u00a0, \u0447\u0442\u043e\u0431\u044b \u043c\u044b \u043c\u043e\u0433\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0435 \u0436\u0430\u043d\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u043d\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c. \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Quantization_(music)\" rel=\"noopener noreferrer nofollow\"><u>\u0434\u0438\u0441\u043a\u0440\u0435\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/u><\/a>\u00a0\u043d\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0437\u0432\u0443\u043a\u0438 \u0431\u044b\u043b\u0438 \u043c\u0435\u043d\u0435\u0435 \u0440\u043e\u0431\u043e\u0442\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/colab.research.google.com\/drive\/1R-fMirk6E6-Y1Slfia5DXM1RWE3f4Dv2?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>\u044d\u0442\u043e\u0442 \u043d\u043e\u0443\u0442\u0431\u0443\u043a<\/u><\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0442\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u043e\u043b\u0433\u0438\u043c \u0438 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c: \u044f \u0432\u044b\u043b\u043e\u0436\u0438\u043b <a href=\"https:\/\/huggingface.co\/datasets\/juancopi81\/mmm_track_lmd_8bars_nots\" rel=\"noopener noreferrer nofollow\"><u>\u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442<\/u><\/a>\u00a0\u0432 Hub, \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c! Hugging Face \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441 \u043b\u0451\u0433\u043a\u043e\u0441\u0442\u044c\u044e \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044f \u0441\u043e\u0437\u0434\u0430\u043b \u043a\u0430\u0434\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 (data frame) \u0434\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b \u0435\u0433\u043e \u0432 Hub \u043a\u0430\u043a \u0434\u0430\u0442\u0430\u0441\u0435\u0442.<\/p>\n<pre><code class=\"python\"># \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u044b !pip install datasets  # \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0438\u0437 \u043d\u0443\u0436\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 import glob dataset_files = glob.glob(\"\/path\/to\/tokenized\/dataset\/*.txt\")  # \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u043a\u0430\u043a \u0434\u0430\u0442\u0430\u0441\u0435\u0442 HF from datasets import load_dataset dataset = load_dataset(\"text\", data_files=dataset_files)  # \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0432 \u043a\u0430\u0434\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 ds = dataset[\"train\"] df = ds.to_pandas()  # \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445...  from datasets import Dataset # \u041f\u0440\u0435\u0431\u0440\u0430\u0437\u0443\u0435\u043c DataFrame \u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 Hugging Face clean_dataset = Dataset.from_pandas(df)  # \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0432\u0445\u043e\u0434 \u0432 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Hugging Face from huggingface_hub import notebook_login notebook_login()  # \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0432 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442, \u0437\u0430\u043c\u0435\u043d\u0438\u0432 juancopi81 \u043d\u0430 \u0441\u0432\u043e\u0451 \u0438\u043c\u044f clean_dataset.push_to_hub(\"juancopi81\/mmm_track_lmd_8bars_nots\")<\/code><\/pre>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c <a href=\"https:\/\/colab.research.google.com\/drive\/1prOyyVm4FT42VrXAMd4xmvuDWDApuzO8?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<h3>\u041e\u0431\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0438 \u043c\u043e\u0434\u0435\u043b\u044c<\/h3>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043d\u0430\u0448 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0443\u0436\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0442\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0432\u0438\u0434\u0435 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0435\u0433\u043e, \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0432\u0448\u0438\u0441\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430, \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e <a href=\"https:\/\/huggingface.co\/datasets\/juancopi81\/mmm_track_lmd_8bars_nots\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u0437\u044f\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0438\u0437 Hub<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u0430\u043b\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438\u043b\u0438 \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b \u0434\u0430\u0442\u0430\u0441\u0435\u0442 <a href=\"https:\/\/huggingface.co\/datasets\/TristanBehrens\/js-fakes-4bars\" rel=\"noopener noreferrer nofollow\"><u>js-fakes-4bars<\/u><\/a>. \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 (LMD | JS Fake) \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0438.<\/p>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 <em>\u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432<\/em>, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u0445\u043e\u0436\u0430 \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438, \u043d\u043e \u044f\u0437\u044b\u043a \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 <em>\u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u043e\u0432<\/em>. \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0432\u043e \u043c\u043d\u043e\u0433\u043e\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442 <a href=\"https:\/\/huggingface.co\/learn\/nlp-course\/chapter0\/1?fw=pt\" rel=\"noopener noreferrer nofollow\"><u>\u043a\u0443\u0440\u0441 \u043f\u043e NLP<\/u><\/a> Hugging Face, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440.<\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/strong>\u00a0\u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u0442\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0443\u0440\u0441.<\/p>\n<h4>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440<\/h4>\n<p>Colab \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430:\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/1876dq54hRsWGWdsrC6E4cYdxmacb5a4S?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>LMD<\/u><\/a>\u00a0|\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/14OLVbQJlk3AwfpZTCxaAKQzL3QJuH4bU?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>JS Fake<\/u><\/a><\/p>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c GPT-2. \u042d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0435\u0432\u043e\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u043d\u0430 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u0430\u044f \u0438 \u043a \u0442\u043e\u043c\u0443 \u0436\u0435 Hugging Face \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u043b \u0435\u0451 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e GPT-2 \u043d\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0430 \u043d\u0430 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0451 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e, \u043d\u0430\u0447\u0430\u0432 \u0441 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0430\u0431\u0437\u0430\u0446, \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430 GPT-2:<\/p>\n<pre><code class=\"python\"># \u0411\u0435\u0440\u0451\u043c \u0432\u044b\u0431\u043e\u0440\u043a\u0443 \u0438\u0437 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 sample_10 = raw_datasets[\"train\"][\"text\"][10] sample = sample_10[:242] sample<\/code><\/pre>\n<pre><code>PIECE_START  GENRE=POP TRACK_START INST=35 DENSITY=1 BAR_START TIME_DELTA=6.0 NOTE_ON=40 TIME_DELTA=4.0 NOTE_ON=32 TIME_DELTA=0.10833333333333428 NOTE_OFF=40 TIME_DELTA=5.533333333333331 NOTE_OFF=32 BAR_END BAR_START NOTE_ON=31 TIME_DELTA=6.0<\/code><\/pre>\n<pre><code class=\"python\"># \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 GPT-2, \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0443 from transformers import AutoTokenizer  tokenizer = AutoTokenizer.from_pretrained(\"gpt2\") print(tokenizer(sample).tokens())<\/code><\/pre>\n<pre><code>['PI', 'EC', 'E', '', 'ST', 'ART', '\u0120', '\u0120GEN', 'RE', '=', 'P', 'OP', '\u0120TR', 'ACK', '', 'ST', 'ART', '\u0120INST', '=', '35', '\u0120D', 'ENS', 'ITY', '=', '1', '\u0120BAR', '', 'ST', 'ART', '\u0120TIME', '', 'D', 'EL', 'TA', '=', '6', '.', '0', '\u0120NOTE', '', 'ON', '=', '40', '\u0120TIME', '', 'D', 'EL', 'TA', '=', '4', '.', '0', '\u0120NOTE', '', 'ON', '=', '32', '\u0120TIME', '', 'D', 'EL', 'TA', '=', '0', '.', '108', '3333', '3333', '33', '34', '28', '\u0120NOTE', '', 'OFF', '=', '40', '\u0120TIME', '', 'D', 'EL', 'TA', '=', '5', '.', '5', '3333', '3333', '3333', '31', '\u0120NOTE', '', 'OFF', '=', '32', '\u0120BAR', '', 'END', '\u0120BAR', '', 'ST', 'ART', '\u0120NOTE', '', 'ON', '=', '31', '\u0120TIME', '_', 'D', 'EL', 'TA', '=', '6', '.', '0']<\/code><\/pre>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 GPT-2 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u0442 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0441 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438. \u0414\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0443\u0436\u0435\u043d \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<p>\u041f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441 <em>\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/em> \u0441\u043b\u043e\u0432. \u0412 \u044d\u0442\u043e\u0442 \u0448\u0430\u0433 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u043b\u043e\u0432 \u0432 \u043d\u0438\u0436\u043d\u0438\u0439 \u0440\u0435\u0433\u0438\u0441\u0442\u0440 \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0437\u043d\u0430\u043a\u043e\u0432 \u0443\u0434\u0430\u0440\u0435\u043d\u0438\u044f. \u041f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438 \u044d\u0442\u043e\u0442 \u044d\u0442\u0430\u043f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043b\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u043d\u0435 \u043d\u0443\u0436\u0435\u043d.<\/p>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u044d\u0442\u0430\u043f \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0432\u043e\u0434\u0430 \u043d\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043b\u043e\u0432\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0442\u044c \u0432\u0432\u043e\u0434 \u043f\u043e \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c:<\/p>\n<pre><code class=\"python\">from tokenizers import Tokenizer from tokenizers.models import WordLevel  # \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d UNK new_tokenizer = Tokenizer(model=WordLevel(unk_token=\"[UNK]\"))  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 from tokenizers.pre_tokenizers import WhitespaceSplit  new_tokenizer.pre_tokenizer = WhitespaceSplit()  # \u041f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 pre_tokenizer new_tokenizer.pre_tokenizer.pre_tokenize_str(sample)<\/code><\/pre>\n<pre><code>[('PIECE_START', (0, 11)), ('GENRE=POP', (13, 22)), ('TRACK_START', (23, 34)), ('INST=35', (35, 42)), ('DENSITY=1', (43, 52)), ('BAR_START', (53, 62)), ('TIME_DELTA=6.0', (63, 77)), ('NOTE_ON=40', (78, 88)), ('TIME_DELTA=4.0', (89, 103)), ('NOTE_ON=32', (104, 114)), ('TIME_DELTA=0.10833333333333428', (115, 145)), ('NOTE_OFF=40', (146, 157)), ('TIME_DELTA=5.533333333333331', (158, 186)), ('NOTE_OFF=32', (187, 198)), ('BAR_END', (199, 206)), ('BAR_START', (207, 216)), ('NOTE_ON=31', (217, 227)), ('TIME_DELTA=6.0', (228, 242))]<\/code><\/pre>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u043c\u044b \u043e\u0431\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0443\u044e \u043f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u043e) \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0435\u0433\u043e \u0432 Hub.<\/p>\n<pre><code class=\"python\"># \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0431\u0430\u0442\u0447\u0438 \u043f\u043e 1000 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 def get_training_corpus():   dataset = raw_datasets[\"train\"]   for i in range(0, len(dataset), 1000):     yield dataset[i : i + 1000][\"text\"]  from tokenizers.trainers import WordLevelTrainer  # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b trainer = WordLevelTrainer(     special_tokens=[\"[UNK]\", \"[CLS]\", \"[SEP]\", \"[PAD]\", \"[MASK]\"] )  # \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0435\u0433\u043e \u0432 Hub from transformers import PreTrainedTokenizerFast  new_tokenizer.save(\"tokenizer.json\")  new_tokenizer = PreTrainedTokenizerFast(tokenizer_file=\"tokenizer.json\") new_tokenizer.add_special_tokens({'pad_token': '[PAD]'})  new_tokenizer.push_to_hub(\"lmd_8bars_tokenizer\")<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043d\u0430\u0448 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre><code>['PIECE_START', 'GENRE=POP', 'TRACK_START', 'INST=35', 'DENSITY=1', 'BAR_START', 'TIME_DELTA=6.0', 'NOTE_ON=40', 'TIME_DELTA=4.0', 'NOTE_ON=32', 'TIME_DELTA=0.10833333333333428', 'NOTE_OFF=40', 'TIME_DELTA=5.533333333333331', 'NOTE_OFF=32', 'BAR_END', 'BAR_START', 'NOTE_ON=31', 'TIME_DELTA=6.0'] <\/code><\/pre>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043c\u044b \u0438 \u0445\u043e\u0442\u0435\u043b\u0438! \u041e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430! \u0422\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0432 Hub \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 GPT-2.<\/p>\n<h4>\u041c\u043e\u0434\u0435\u043b\u044c<\/h4>\n<p>Colab \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430:\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/1iVIu15k01EQf-i7qpOJ0cUMj_2JGr6fl?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>LMD<\/u><\/a>\u00a0|\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/1e4Am9DdZe_76BAbqdmag6SpedsxngDLt?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>JS Fake<\/u><\/a><\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u043a\u043e\u0433\u0434\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 \u0433\u043e\u0442\u043e\u0432\u044b, \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<ul>\n<li>\n<p>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0431\u0435\u0440\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0443\u0447\u0438\u043c \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u043d\u0435\u0440\u0430. \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0435\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432 <a href=\"https:\/\/wandb.ai\/site\" rel=\"noopener noreferrer nofollow\"><u>Weights and Biases<\/u><\/a>\u00a0(\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u0435\u043d \u0430\u043a\u043a\u0430\u0443\u043d\u0442 W&amp;B).<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/strong><\/p>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043c\u044b \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043b\u0438, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c. \u041d\u0443\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0441 Hugging Face \u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430. \u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u0443 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 GPT-2 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<pre><code class=\"python\"># \u0418\u043c\u043f\u043e\u0440\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a from datasets import load_dataset from transformers import AutoTokenizer  # \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 ds = load_dataset(\"juancopi81\/mmm_track_lmd_8bars_nots\", split=\"train\") # \u0423 \u043d\u0430\u0441 \u0432 ds \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \"train\", \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 test \u0438 train raw_datasets = ds.train_test_split(test_size=0.1, shuffle=True) # \u041c\u0435\u043d\u044f\u0435\u043c \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 tokenizer = AutoTokenizer.from_pretrained(\"juancopi81\/lmd_8bars_tokenizer\") raw_datasets<\/code><\/pre>\n<p><code>raw_datasets<\/code>\u00a0\u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 train \u0438 test.<\/p>\n<pre><code class=\"python\">DatasetDict({     train: Dataset({         features: ['text'],         num_rows: 159810     })     test: Dataset({         features: ['text'],         num_rows: 17757     }) })<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u0435\u0441\u044c \u0434\u0430\u0442\u0430\u0441\u0435\u0442. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0440\u0435\u0437\u0430\u0442\u044c \u0432\u0441\u0435 \u0442\u0435\u043a\u0441\u0442\u044b (\u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438) \u0434\u043b\u0438\u043d\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e context_length. \u0412 \u043c\u043e\u0434\u0435\u043b\u044f\u0445 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u043e\u0432 <code>context_length<\/code>\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u043b\u0438\u043d\u0443 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (\u0442\u043e\u043a\u0435\u043d\u043e\u0432), \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c. \u042d\u0442\u0430 \u0434\u043b\u0438\u043d\u0430 \u0447\u0430\u0441\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u0438\u0437-\u0437\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<pre><code class=\"python\"># \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 2048 \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442, \u043d\u043e \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c context_length = 2048  # \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 def tokenize(element):   outputs = tokenizer(       element[\"text\"],       truncation=True, #\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 JSB       max_length=context_length,       padding=False   )   return {\"input_ids\": outputs[\"input_ids\"]}  # \u0421\u043e\u0437\u0434\u0430\u0451\u043c tokenized_dataset. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c map \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0434\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0445 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432. tokenized_datasets = raw_datasets.map(     tokenize, batched=True, remove_columns=raw_datasets[\"train\"].column_names )  tokenized_datasets<\/code><\/pre>\n<pre><code class=\"python\">DatasetDict({     train: Dataset({         features: ['input_ids'],         num_rows: 159810     })     test: Dataset({         features: ['input_ids'],         num_rows: 17757     }) })<\/code><\/pre>\n<p><code>tokenized_dataset<\/code>\u00a0\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>input_ids<\/code>, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h4>\u0412\u044b\u0431\u043e\u0440 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438<\/h4>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043e\u0431\u0443\u0447\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c\u00a0<a href=\"https:\/\/huggingface.co\/docs\/transformers\/main\/model_doc\/gpt2\" rel=\"noopener noreferrer nofollow\"><u>GPT-2<\/u><\/a>. \u041f\u0440\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 GPT-2. \u042f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0432 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043a\u043e\u0434 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0437\u0430\u043a\u043e\u043d\u043e\u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043d\u0430\u0443\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e <a href=\"https:\/\/arxiv.org\/abs\/2203.15556\" rel=\"noopener noreferrer nofollow\"><u>Chinchilla<\/u><\/a>\u00a0(\u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f, \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0449\u0435\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438). \u042f \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0430 \u0438\u0437 <a href=\"https:\/\/github.com\/karpathy\/nanoGPT\/blob\/master\/scaling_laws.ipynb\" rel=\"noopener noreferrer nofollow\"><u>\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u041a\u0430\u0440\u043f\u0430\u0442\u0438<\/u><\/a>.<\/p>\n<blockquote>\n<p><strong><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/em><\/strong><em>\u00a0\u044f \u043f\u043e\u043a\u0430 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443\u044e \u044d\u0442\u0443 \u0447\u0430\u0441\u0442\u044c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u041f\u0440\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0431\u0443\u0434\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u043e\u0443\u0442\u0431\u0443\u043a. \u0421 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u044e \u0432\u0430\u0448\u0438 \u043e\u0442\u0437\u044b\u0432\u044b!<\/em><\/p>\n<\/blockquote>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e (\u0441 \u043c\u0430\u043b\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043d\u0430\u043c \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0430 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041a\u0430\u043a \u0432\u044b \u0432\u0438\u0434\u0435\u043b\u0438, \u0434\u0435\u043c\u043e \u0438\u0437 \u043d\u0430\u0447\u0430\u043b\u0430 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 GPU \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043c\u0443\u0437\u044b\u043a\u0443 \u0437\u0430 \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<\/p>\n<pre><code class=\"python\"># \u041c\u043e\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 n_layer=6 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0451\u0432 \u0442\u0440\u0430\u043d\u0441\u0444\u043e\u0440\u043c\u0435\u0440\u0430 n_head=8 # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e multi-head attention heads n_emb=512 # \u0420\u0430\u0437\u043c\u0435\u0440 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u043e\u0432  from transformers import AutoConfig, GPT2LMHeadModel  config = AutoConfig.from_pretrained(     \"gpt2\",     vocab_size=len(tokenizer),     n_positions=context_length,     n_layer=n_layer,     n_head=n_head,     pad_token_id=tokenizer.pad_token_id,     bos_token_id=tokenizer.bos_token_id,     eos_token_id=tokenizer.eos_token_id,     n_embd=n_emb )  model = GPT2LMHeadModel(config)<\/code><\/pre>\n<h4>Data Collator<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0442\u0447\u0438 \u0434\u043b\u044f \u043c\u043e\u0434\u0435\u043b\u0438. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0435\u0442\u043a\u0438 \u0432 \u043a\u0430\u0443\u0437\u0430\u043b\u044c\u043d\u043e\u0439 \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 (Causal Language Model) (\u0441\u043e \u0441\u0434\u0432\u0438\u0433\u043e\u043c \u043d\u0430 \u043e\u0434\u0438\u043d \u044d\u043b\u0435\u043c\u0435\u043d\u0442), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c. \u041d\u043e \u043d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u0432\u0441\u0451 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0437\u0430 \u043d\u0430\u0441 data collator Hugging Face, \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442 \u043d\u0430\u0448\u0443 \u0436\u0438\u0437\u043d\u044c!<\/p>\n<pre><code class=\"python\">from transformers import DataCollatorForLanguageModeling # \u041e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 masked language modeling (MLM), \u0438 causal language modeling (CLM) # \u0414\u043b\u044f CLM \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0434\u0430\u0442\u044c mlm=False data_collator = DataCollatorForLanguageModeling(tokenizer, mlm=False) <\/code><\/pre>\n<h4>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438<\/h4>\n<p>\u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435, \u0438 \u043d\u0430\u0441\u0442\u0430\u043b \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u0441\u0442\u0438\u043d\u044b: \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438! \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u043f\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e \u0445\u043e\u0434\u0443 \u0434\u0435\u043b\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435: \u0432\u044b \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u043b\u044b\u0448\u0430\u0442\u044c, \u043a\u0430\u043a \u0432\u0430\u0448\u0430 \u0418\u0418-\u043c\u0443\u0437\u044b\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e \u0441\u043c\u0435\u043d\u043e\u0439 \u044d\u043f\u043e\u0445.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Weights and Biases \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0440\u0435\u043d\u0435\u0440\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043b \u043c\u0443\u0437\u044b\u043a\u0443 \u0432 eval_loop. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435, \u0430 \u0437\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0441\u0430\u043c\u044b\u0439 \u0432\u0430\u0436\u043d\u044b\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442:<\/p>\n<pre><code class=\"python\">from transformers import Trainer, TrainingArguments  # \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0435\u0440 \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043e\u0432 SAMPLE_RATE=44100 class CustomTrainer(Trainer):     def __init__(self, *args, **kwargs):         super().__init__(*args, **kwargs)      def evaluation_loop(         self,         dataloader,         description,         prediction_loss_only=None,         ignore_keys=None,         metric_key_prefix=\"eval\",     ):         # \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 super, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0432\u043e\u0434 eval         eval_output = super().evaluation_loop(             dataloader,             description,             prediction_loss_only,             ignore_keys,             metric_key_prefix,         )          # \u043b\u043e\u0433\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 `wandb.Histogram`.         if wandb.run is not None:             input_ids = tokenizer.encode(\"PIECE_START STYLE=JSFAKES GENRE=JSFAKES TRACK_START\", return_tensors=\"pt\").cuda()             # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b.             voice1_generated_ids = model.generate(                 input_ids,                 max_length=512,                 do_sample=True,                 temperature=0.75,                 eos_token_id=tokenizer.encode(\"TRACK_END\")[0]             )             voice2_generated_ids = model.generate(                 voice1_generated_ids,                 max_length=512,                 do_sample=True,                 temperature=0.75,                 eos_token_id=tokenizer.encode(\"TRACK_END\")[0]             )             voice3_generated_ids = model.generate(                 voice2_generated_ids,                 max_length=512,                 do_sample=True,                 temperature=0.75,                 eos_token_id=tokenizer.encode(\"TRACK_END\")[0]             )             voice4_generated_ids = model.generate(                 voice3_generated_ids,                 max_length=512,                 do_sample=True,                 temperature=0.75,                 eos_token_id=tokenizer.encode(\"TRACK_END\")[0]             )             token_sequence = tokenizer.decode(voice4_generated_ids[0])             note_sequence = token_sequence_to_note_sequence(token_sequence)             synth = note_seq.fluidsynth             array_of_floats = synth(note_sequence, sample_rate=SAMPLE_RATE)             int16_data = note_seq.audio_io.float_samples_to_int16(array_of_floats)             wandb.log({\"Generated_audio\": wandb.Audio(int16_data, SAMPLE_RATE)})           return eval_output<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438. \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code class=\"python\"># \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0440\u0435\u043d\u0435\u0440\u0430 from argparse import Namespace  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0441 \u043c\u0435\u0442\u043a\u043e\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 output_path = \"output\" steps = 5000 # \u0417\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b config = {\"output_dir\": output_path,           \"num_train_epochs\": 1,           \"per_device_train_batch_size\": 8,           \"per_device_eval_batch_size\": 4,           \"evaluation_strategy\": \"steps\",           \"save_strategy\": \"steps\",           \"eval_steps\": steps,           \"logging_steps\":steps,           \"logging_first_step\": True,           \"save_total_limit\": 5,           \"save_steps\": steps,           \"lr_scheduler_type\": \"cosine\",           \"learning_rate\":5e-4,           \"warmup_ratio\": 0.01,           \"weight_decay\": 0.01,           \"seed\": 1,           \"load_best_model_at_end\": True,           \"report_to\": \"wandb\"}  args = Namespace(**config)<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0438\u0445 \u0432 \u043d\u0430\u0448\u0435\u043c CustomTrainer:<\/p>\n<pre><code class=\"python\">train_args = TrainingArguments(**config)  # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 CustomTrainer trainer = CustomTrainer(     model=model,     tokenizer=tokenizer,     args=train_args,     data_collator=data_collator,     train_dataset=tokenized_datasets[\"train\"],     eval_dataset=tokenized_datasets[\"test\"], )<\/code><\/pre>\n<p>\u0418 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"python\"># \u041e\u0431\u0443\u0447\u0430\u0435\u043c \u043c\u043e\u0434\u0435\u043b\u044c trainer.train()<\/code><\/pre>\n<h4>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c Sweep \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0445 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432<\/h4>\n<p>\u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u043e\u0431\u0443\u0447\u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438. \u0418 \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e! \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0439\u0434\u0451\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u044b; \u044f \u0440\u0435\u0448\u0438\u043b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/docs.wandb.ai\/guides\/sweeps\" rel=\"noopener noreferrer nofollow\"><u>\u00absweep\u00bb \u0438\u0437 Weights and Biases<\/u><\/a>\u00a0\u0438\u0437-\u0437\u0430 \u0435\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f sweep \u0432 W&amp;B \u043d\u0443\u0436\u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0442\u044c \u043a\u043e\u0434. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u0440\u0430\u0437\u043e\u0431\u044c\u0451\u043c \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0432s\u0437\u044b\u0432\u0430\u0442\u044c \u0441 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u043f\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u0441\u0441\u044b\u043b\u043a\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>LMD:\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/1C3HvhipunxGxP0lfNKfZt-WRjLJrmdyy?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>\u043d\u043e\u0443\u0442\u0431\u0443\u043a<\/u><\/a>\u00a0|\u00a0<a href=\"https:\/\/github.com\/juancopi81\/lmd_gpt2\" rel=\"noopener noreferrer nofollow\"><u>GitHub<\/u><\/a><\/p>\n<\/li>\n<li>\n<p>JS Fake:\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/1AvmZ7FxjXHIsb8345AuDYNY04warwLhL?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>\u043d\u043e\u0443\u0442\u0431\u0443\u043a<\/u><\/a>\u00a0|\u00a0<a href=\"https:\/\/github.com\/juancopi81\/bach_gpt2_simple\" rel=\"noopener noreferrer nofollow\"><u>GitHub<\/u><\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e sweep \u0432 \u0444\u0430\u0439\u043b\u0435 YAML \u0438\u043b\u0438 \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u0435 Python. \u042d\u0442\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442 W&amp;B \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0437\u0443\u0447\u0438\u043c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"yaml\"># \u0418\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 program: train.py  # \u041c\u0435\u0442\u043e\u0434 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c grid, random \u0438\u043b\u0438 bayes method: random  # \u041f\u0440\u043e\u0435\u043a\u0442, \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u043e\u0442 sweep project: mlops-001-lmdGPT  # \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 metric:   name: eval\/loss   goal: minimize  # \u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 parameters:   learning_rate:     distribution: log_uniform_values     min: 5e-4     max: 3e-3   gradient_accumulation_steps:     values: [1, 2, 4]<\/code><\/pre>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0444\u0430\u0439\u043b YAML \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0434\u043b\u044f learning_rate \u0438 gradient_accumulation_steps \u2014 \u0434\u0432\u0443\u0445 \u0441\u0430\u043c\u044b\u0445 \u0432\u0430\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438!<\/p>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 sweep \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:<\/p>\n<p><strong>1. \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c sweep:<\/strong><\/p>\n<p><code>wandb sweep sweep.yaml<\/code><\/p>\n<p><strong>2. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0430\u0433\u0435\u043d\u0442(-\u044b) sweep:<\/strong>\u00a0\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 {wandb agent} \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438\u0437 \u0432\u044b\u0432\u043e\u0434\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. {runs for this agent} \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0435\u0434\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u0445 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432:<\/p>\n<p><code>wandb agent {wandb agent} --count {runs for this agent}<\/code><\/p>\n<p>\u042f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0432 GitHub (<a href=\"https:\/\/colab.research.google.com\/drive\/1c1yVZS5zDCz1a9ZTBmtv-2tM1JEwOlCA?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>LMD<\/u><\/a>\u00a0|\u00a0<a href=\"https:\/\/colab.research.google.com\/drive\/1q5pIPPmYXeWagj3yYEWS0O4RBOQI7HNP?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>JS Fake<\/u><\/a>)<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434 \u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u043c\u043e\u043d\u043e \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b sweep \u0432 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0435 W&amp;B:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5e0\/a29\/7d0\/5e0a297d0383c34c7f5f7b1ea517e3db.png\" alt=\"Tokenizing Dataset\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 sweep \u0432 W&amp;B.\" width=\"4224\" height=\"3328\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5e0\/a29\/7d0\/5e0a297d0383c34c7f5f7b1ea517e3db.png\"\/><\/p>\n<div><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 sweep \u0432 W&amp;B.<\/figcaption><\/div>\n<\/figure>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0448 \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u043c\u0438 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0438\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p><code>python train.py --learning_rate=0.0005 --per_device_train_batch_size=8 --per_device_eval_batch_size=4 --num_train_epochs=10 --push_to_hub=True --eval_steps=4994 --logging_steps=4994 --save_steps=4994 --output_dir=\"lmd-8bars-2048-epochs10\" --gradient_accumulation_steps=2<\/code><\/p>\n<p>\u0418 \u043d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u0430. \u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<h3>\u0414\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 Hugging Face Space<\/h3>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u0441\u0442\u0430\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0435\u0451 \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c! \u041c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (UI) \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0445\u043e\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0451 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043a\u0430\u043a <a href=\"https:\/\/huggingface.co\/spaces\" rel=\"noopener noreferrer nofollow\"><u>Hugging Face Space<\/u><\/a>. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Hugging Face.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 <a href=\"https:\/\/huggingface.co\/new-space\" rel=\"noopener noreferrer nofollow\"><u>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e space<\/u><\/a> \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 SDK \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Docker, \u0447\u0442\u043e\u0431\u044b \u0438\u043c\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435\u043c \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d Dockerfile, \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043c\u043d\u043e\u0439 \u0434\u043b\u044f \u0434\u0435\u043c\u043e ML:<\/p>\n<pre><code class=\"python\">FROM ubuntu:20.04  WORKDIR \/code  # \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u043b\u0438 \u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0441 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e\u043c - \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 ENV SYSTEM=spaces ENV SPACE_ID=juancopi81\/multitrack-midi-music-generator  COPY .\/requirements.txt \/code\/requirements.txt  # \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f tzdata RUN DEBIAN_FRONTEND=\"noninteractive\" apt-get -qq update &amp;&amp; \\     DEBIAN_FRONTEND=\"noninteractive\" apt-get install -y tzdata  # \u0412\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438 RUN apt-get update -qq &amp;&amp; \\     apt-get install -qq python3-pip build-essential libasound2-dev libjack-dev wget cmake pkg-config libglib2.0-dev ffmpeg  # \u0421\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 libfluidsynth RUN wget https:\/\/github.com\/FluidSynth\/fluidsynth\/archive\/refs\/tags\/v2.3.3.tar.gz &amp;&amp; \\     tar xzf v2.3.3.tar.gz &amp;&amp; \\     cd fluidsynth-2.3.3 &amp;&amp; \\     mkdir build &amp;&amp; \\     cd build &amp;&amp; \\     cmake .. &amp;&amp; \\     make &amp;&amp; \\     make install &amp;&amp; \\     cd ..\/..\/ &amp;&amp; \\     rm -rf fluidsynth-2.3.3 v2.3.3.tar.gz  ENV LD_LIBRARY_PATH=\/usr\/local\/lib:${LD_LIBRARY_PATH} RUN ldconfig  RUN pip3 install --no-cache-dir --upgrade -r \/code\/requirements.txt  # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \"user\"\u0441 user ID 1000 RUN useradd -m -u 1000 user  # \u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \"user\" USER user  # \u0417\u0430\u0434\u0430\u0451\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 home \u043f\u0430\u043f\u043a\u0443 home \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f user ENV HOME=\/home\/user \\     PATH=\/home\/user\/.local\/bin:$PATH  # \u0417\u0430\u0434\u0430\u0435\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043f\u0430\u043f\u043a\u0438 \u043f\u0430\u043f\u043a\u0443 home \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f user WORKDIR $HOME\/app  # \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u0430\u043f\u043a\u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432 $HOME\/app, \u0434\u0435\u043b\u0430\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c user COPY --chown=user . $HOME\/app  CMD [\"python3\", \"main.py\"]<\/code><\/pre>\n<p>\u041c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0438\u0437 Ubuntu \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 FluidSynth, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438. \u0412 \u0444\u0430\u0439\u043b\u0435 requirements.txt \u0435\u0441\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b Python. \u0418\u0437\u0443\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/huggingface.co\/spaces\/juancopi81\/multitrack-midi-music-generator\/blob\/main\/requirements.txt\" rel=\"noopener noreferrer nofollow\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<p>\u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043a \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u043d\u043e\u0442\u0430\u043c. \u041d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u044f \u0441\u043a\u0440\u044b\u0432\u0430\u043b \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u041f\u043e \u0441\u0443\u0442\u0438, \u044d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 <a href=\"https:\/\/github.com\/magenta\/note-seq\" rel=\"noopener noreferrer nofollow\"><u>note_seq<\/u><\/a><u> <\/u><a href=\"https:\/\/github.com\/magenta\/note-seq\" rel=\"noopener noreferrer nofollow\"><u>Magenta<\/u><\/a>\u00a0\u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f note_sequence, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 MIDI \u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0412\u043e\u0442 \u043a\u043e\u0434 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e; \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 <a href=\"https:\/\/www.linkedin.com\/in\/dr-tristan-behrens-734967a2\" rel=\"noopener noreferrer nofollow\"><u>\u0434\u043e\u043a\u0442\u043e\u0440\u0443 \u0422\u0440\u0438\u0441\u0442\u0430\u043d\u0443 \u0411\u0435\u0440\u0435\u043d\u0441\u0443<\/u><\/a>.<\/p>\n<pre><code class=\"python\">from typing import Optional  from note_seq.protobuf.music_pb2 import NoteSequence from note_seq.constants import STANDARD_PPQ   def token_sequence_to_note_sequence(     token_sequence: str,     qpm: float = 120.0,     use_program: bool = True,     use_drums: bool = True,     instrument_mapper: Optional[dict] = None,     only_piano: bool = False, ) -> NoteSequence:     \"\"\"     \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u0442.     \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b:         token_sequence (str): \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.         qpm (float, optional): \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u044b\u0445 \u043d\u043e\u0442 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 120.0.         use_program (bool, optional): \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e True.         use_drums (bool, optional): \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0431\u0430\u0440\u0430\u0431\u0430\u043d\u044b. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e True.         instrument_mapper (Optional[dict], optional): \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e None.         only_piano (bool, optional): \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0430\u043d\u0438\u043d\u043e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e False.     \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:         NoteSequence: \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0443\u044e\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u0442.     \"\"\"     if isinstance(token_sequence, str):         token_sequence = token_sequence.split()      note_sequence = empty_note_sequence(qpm)      # \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0442 \u0438 \u0442\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e QPM     note_length_16th = 0.25 * 60 \/ qpm     bar_length = 4.0 * 60 \/ qpm      # \u0420\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0432\u0441\u0435\u0445 \u043d\u043e\u0442.     current_program = 1     current_is_drum = False     current_instrument = 0     track_count = 0     for _, token in enumerate(token_sequence):         if token == \"PIECE_START\":             pass         elif token == \"PIECE_END\":             break         elif token == \"TRACK_START\":             current_bar_index = 0             track_count += 1             pass         elif token == \"TRACK_END\":             pass         elif token == \"KEYS_START\":             pass         elif token == \"KEYS_END\":             pass         elif token.startswith(\"KEY=\"):             pass         elif token.startswith(\"INST\"):             instrument = token.split(\"=\")[-1]             if instrument != \"DRUMS\" and use_program:                 if instrument_mapper is not None:                     if instrument in instrument_mapper:                         instrument = instrument_mapper[instrument]                 current_program = int(instrument)                 current_instrument = track_count                 current_is_drum = False             if instrument == \"DRUMS\" and use_drums:                 current_instrument = 0                 current_program = 0                 current_is_drum = True         elif token == \"BAR_START\":             current_time = current_bar_index * bar_length             current_notes = {}         elif token == \"BAR_END\":             current_bar_index += 1             pass         elif token.startswith(\"NOTE_ON\"):             pitch = int(token.split(\"=\")[-1])             note = note_sequence.notes.add()             note.start_time = current_time             note.end_time = current_time + 4 * note_length_16th             note.pitch = pitch             note.instrument = current_instrument             note.program = current_program             note.velocity = 80             note.is_drum = current_is_drum             current_notes[pitch] = note         elif token.startswith(\"NOTE_OFF\"):             pitch = int(token.split(\"=\")[-1])             if pitch in current_notes:                 note = current_notes[pitch]                 note.end_time = current_time         elif token.startswith(\"TIME_DELTA\"):             delta = float(token.split(\"=\")[-1]) * note_length_16th             current_time += delta         elif token.startswith(\"DENSITY=\"):             pass         elif token == \"[PAD]\":             pass         else:             pass      # \u0414\u0435\u043b\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438.     instruments_drums = []     for note in note_sequence.notes:         pair = [note.program, note.is_drum]         if pair not in instruments_drums:             instruments_drums += [pair]         note.instrument = instruments_drums.index(pair)      if only_piano:         for note in note_sequence.notes:             if not note.is_drum:                 note.instrument = 0                 note.program = 0      return note_sequence   def empty_note_sequence(qpm: float = 120.0, total_time: float = 0.0) -> NoteSequence:     \"\"\"     \u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u043f\u0443\u0441\u0442\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u0442.     \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b:         qpm (float, optional): \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043d\u044b\u0445 \u043d\u043e\u0442 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 120.0.         total_time (float, optional): \u043e\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0.0.     \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:         NoteSequence: \u043f\u0443\u0441\u0442\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u0442.     \"\"\"     note_sequence = NoteSequence()     note_sequence.tempos.add().qpm = qpm     note_sequence.ticks_per_quarter = STANDARD_PPQ     note_sequence.total_time = total_time     return note_sequence<\/code><\/pre>\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/huggingface.co\/spaces\/juancopi81\/multitrack-midi-music-generator\/blob\/main\/utils.py\" rel=\"noopener noreferrer nofollow\"><u>utils.py<\/u><\/a>\u00a0\u0435\u0441\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u042f \u0440\u0435\u0448\u0438\u043b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u0437\u0430 \u0440\u0430\u0437, \u0447\u0442\u043e\u0431\u044b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0431\u044b\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043d\u0430\u0434 \u0441\u0438\u043d\u0442\u0435\u0437\u043e\u043c \u043c\u0443\u0437\u044b\u043a\u0438:<\/p>\n<pre><code class=\"python\">def generate_new_instrument(seed: str, temp: float = 0.75) -> str:     \"\"\"     \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u043e\u0432\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 seed \u0438 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0435.     \u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b:         seed (str): \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438.         temp (float, optional): \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c\u044e. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e 0.75.     \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442:         str: \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.     \"\"\"     seed_length = len(tokenizer.encode(seed))      while True:         # \u041a\u043e\u0434\u0438\u0440\u0443\u0435\u043c \u0443\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b.         input_ids = tokenizer.encode(seed, return_tensors=\"pt\")          # \u041f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c \u0442\u0435\u043d\u0437\u043e\u0440 input_ids \u043d\u0430 \u0442\u043e \u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u0447\u0442\u043e \u0438 \u043c\u043e\u0434\u0435\u043b\u044c         input_ids = input_ids.to(model.device)          # \u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b.         eos_token_id = tokenizer.encode(\"TRACK_END\")[0]         generated_ids = model.generate(             input_ids,             max_new_tokens=2048,             do_sample=True,             temperature=temp,             eos_token_id=eos_token_id,         )         generated_sequence = tokenizer.decode(generated_ids[0])          # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043b\u0438 \u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \"NOTE_ON\" \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 seed         new_generated_sequence = tokenizer.decode(generated_ids[0][seed_length:])         if \"NOTE_ON\" in new_generated_sequence:             # \u0415\u0441\u043b\u0438 NOTE_ON, \u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0432\u043e\u0437\u0432\u0440\u0430\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u0437\u0430 \u0440\u0430\u0437             return generated_sequence<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b utils \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442, \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u043a\u043e\u0434 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<p>\u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 \u0444\u0430\u0439\u043b\u0435 <a href=\"https:\/\/huggingface.co\/spaces\/juancopi81\/multitrack-midi-music-generator\/blob\/main\/main.py\" rel=\"noopener noreferrer nofollow\"><u>main.py<\/u><\/a>\u00a0\u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043a\u043d\u043e\u043f\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e.<\/p>\n<pre><code class=\"python\"># \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u043a\u043d\u043e\u043f\u043e\u043a def run():     with demo:         gr.HTML(DESCRIPTION)         gr.DuplicateButton(value=\"Duplicate Space for private use\")         with gr.Row():             with gr.Column():                 temp = gr.Slider(                     minimum=0, maximum=1, step=0.05, value=0.85, label=\"Temperature\"                 )                 genre = gr.Dropdown(                     choices=genres, value=\"POP\", label=\"Select the genre\"                 )                 with gr.Row():                     btn_from_scratch = gr.Button(\"? Start from scratch\")                     btn_continue = gr.Button(\"\u27a1\ufe0f Continue Generation\")                     btn_remove_last = gr.Button(\"\u21a9\ufe0f Remove last instrument\")                     btn_regenerate_last = gr.Button(\"? Regenerate last instrument\")             with gr.Column():                 with gr.Box():                     audio_output = gr.Video(show_share_button=True)                     midi_file = gr.File()                     with gr.Row():                         qpm = gr.Slider(                             minimum=60, maximum=140, step=10, value=120, label=\"Tempo\"                         )                         btn_qpm = gr.Button(\"Change Tempo\")         with gr.Row():             with gr.Column():                 plot_output = gr.Plot()             with gr.Column():                 instruments_output = gr.Markdown(\"# List of generated instruments\")         with gr.Row():             text_sequence = gr.Text()             empty_sequence = gr.Text(visible=False)         with gr.Row():             num_tokens = gr.Text(visible=False)         btn_from_scratch.click(             fn=generate_song,             inputs=[genre, temp, empty_sequence, qpm],             outputs=[                 audio_output,                 midi_file,                 plot_output,                 instruments_output,                 text_sequence,                 num_tokens,             ],         )         btn_continue.click(             fn=generate_song,             inputs=[genre, temp, text_sequence, qpm],             outputs=[                 audio_output,                 midi_file,                 plot_output,                 instruments_output,                 text_sequence,                 num_tokens,             ],         )         btn_remove_last.click(             fn=remove_last_instrument,             inputs=[text_sequence, qpm],             outputs=[                 audio_output,                 midi_file,                 plot_output,                 instruments_output,                 text_sequence,                 num_tokens,             ],         )         btn_regenerate_last.click(             fn=regenerate_last_instrument,             inputs=[text_sequence, qpm],             outputs=[                 audio_output,                 midi_file,                 plot_output,                 instruments_output,                 text_sequence,                 num_tokens,             ],         )         btn_qpm.click(             fn=change_tempo,             inputs=[text_sequence, qpm],             outputs=[                 audio_output,                 midi_file,                 plot_output,                 instruments_output,                 text_sequence,                 num_tokens,             ],         )      demo.launch(server_name=\"0.0.0.0\", server_port=7860)<\/code><\/pre>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043a\u043d\u043e\u043f\u043a\u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/cd3\/b97\/aee\/cd3b97aee961318d7a122aee7aaccaeb.png\" alt=\"UI to interact with the music model\" title=\"\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438.\" width=\"766\" height=\"258\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd3\/b97\/aee\/cd3b97aee961318d7a122aee7aaccaeb.png\"\/><\/p>\n<div><figcaption>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438.<\/figcaption><\/div>\n<\/figure>\n<p>\u0418 \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043a\u043e\u043c\u0443 \u0443\u0433\u043e\u0434\u043d\u043e. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u044d\u0442\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u043e \u0435\u0451 \u0432\u043b\u0438\u044f\u043d\u0438\u0438. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u044d\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435.<\/p>\n<h3>\u042d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u0441\u043f\u0435\u043a\u0442\u044b<\/h3>\n<p>\u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u0445\u043e\u0447\u0443 \u043f\u043e\u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c \u0432\u0430\u0441 \u0437\u0430 \u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u044d\u0442\u043e\u0442 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b, \u043e\u043d \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0443\u0433\u0430\u0435\u0442. \u042f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0435\u043c\u043b\u044e\u0441\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e, \u043d\u043e \u043f\u0440\u0438\u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0438 \u0432 \u043d\u0451\u043c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0435\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u042f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0443\u0447\u0443\u0441\u044c \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0441\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d \u0437\u0430 \u043b\u044e\u0431\u044b\u0435 \u043e\u0442\u0437\u044b\u0432\u044b \u0438 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430.<\/p>\n<p>\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u044f \u0440\u0435\u0448\u0438\u043b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e\u0431 \u044d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445. \u042f \u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u0432 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0447\u0438\u0442\u0430\u0442\u044c \u043c\u043d\u0435\u043d\u0438\u044f \u0438 \u043c\u044b\u0441\u043b\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435\u043c \u0438  \u043e\u043f\u0430\u0441\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0418\u0418 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u041a\u0430\u043a\u043e\u0432\u0430 \u0440\u043e\u043b\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0430\u043a\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c \u044d\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430 \u0440\u044b\u043d\u043e\u043a \u0442\u0440\u0443\u0434\u0430 \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u0442\u043e\u0432?<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u043b\u0438 \u043c\u044b \u043f\u0440\u0430\u0432\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0435\u0439 \u0438 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u043e\u0432, \u0441\u043e\u0437\u0434\u0430\u0432\u0448\u0438\u0445 \u043c\u0443\u0437\u044b\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439?<\/p>\n<\/li>\n<li>\n<p>\u041a\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438?<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c. \u041d\u0430 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432\u043e\u043b\u043d\u0443\u044e\u0449\u0435\u043c \u043c\u0435\u043d\u044f \u0430\u0441\u043f\u0435\u043a\u0442\u0435:\u00a0<strong>\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u043c \u0431\u0430\u0440\u044c\u0435\u0440\u0435<\/strong>.<\/p>\n<p>\u0426\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0431\u0430\u0440\u044c\u0435\u0440 (digital divide) \u2014\u00a0<em>\u00ab\u044d\u0442\u043e \u043d\u0435\u0440\u0430\u0432\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c\u00bb<\/em>\u00a0(\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a:\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Digital_divide\" rel=\"noopener noreferrer nofollow\"><u>Wikipedia<\/u><\/a>), \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0438\u0439 \u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u043c\u043e\u0441\u0442 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c\u0438, \u043a\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c, \u0438 \u0442\u0435\u043c\u0438, \u043a\u0442\u043e \u0435\u0433\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442.<\/p>\n<p><strong>\u041a\u0430\u043a \u043d\u0430\u0441\u0447\u0451\u0442 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u0431\u0430\u0440\u044c\u0435\u0440\u0430 \u0432 \u043c\u0438\u0440\u0435 \u043c\u0443\u0437\u044b\u043a\u0438?<\/strong><\/p>\n<blockquote>\n<p><em>\u00ab\u041c\u0443\u0437\u044b\u043a\u0430 \u2014 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u0442\u0432\u0430\u00bb, \u2014 \u0413\u0435\u043d\u0440\u0438 \u041b\u043e\u043d\u0433\u0444\u0435\u043b\u043b\u043e\u0443<\/em><\/p>\n<\/blockquote>\n<p>\u041c\u0443\u0437\u044b\u043a\u0430 \u2014 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \u0433\u0440\u0430\u043d\u0438\u0446, \u043a\u0443\u043b\u044c\u0442\u0443\u0440 \u0438 \u044d\u043f\u043e\u0445. \u041e\u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u043e \u0432\u0441\u0435\u0445 \u0446\u0438\u0432\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u0445. \u041e\u0434\u043d\u0430\u043a\u043e \u0436\u0438\u0432\u044b\u0435 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0437\u0430\u0442\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0443\u0433\u043e\u0434\u0443 \u043c\u0435\u0439\u043d\u0441\u0442\u0440\u0438\u043c\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u043f\u043e\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u043c, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<p>\u041c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u0438 \u0435\u0433\u043e \u0434\u0435\u043c\u043e\u043a\u0440\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438. \u041f\u0440\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 \u043c\u043e\u0434\u0435\u043b\u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u0443\u044e \u043c\u0443\u0437\u044b\u043a\u0443. \u041d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0441\u0438\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437 \u043d\u0430\u0441 \u043e\u0431\u0443\u0447\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u043e\u043a\u0430, \u0434\u0436\u0430\u0437\u0430 \u0438\u043b\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438. \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0434\u0430\u0436\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u043e \u0442\u0435\u0440\u043c\u0438\u043d \u00ab\u043a\u0440\u0430\u043d \u0411\u0430\u0445\u0430\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u043d\u043e\u0433\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0433\u0443\u0442 \u0441\u0438\u043d\u0442\u0435\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0443\u0437\u044b\u043a\u0443, \u043f\u043e\u0447\u0442\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0443\u044e \u043c\u0443\u0437\u044b\u043a\u0435 \u0411\u0430\u0445\u0430:\u00a0<em>\u00ab\u041a\u0440\u0430\u043d \u0411\u0430\u0445\u0430 \u2014 \u044d\u0442\u043e \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043b\u0438 \u0432\u044b\u0448\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u043d\u043e \u0446\u0435\u043d\u0438\u043c\u043e\u0433\u043e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u043d\u043e \u0438\u0437-\u0437\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0442\u043e\u043a\u0430 \u043e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0431\u044b\u0442\u044c \u0440\u0435\u0434\u043a\u0438\u043c, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u0435\u0435 \u0446\u0435\u043d\u043d\u044b\u043c\u00bb <\/em>(\u0438\u0437 <a href=\"https:\/\/twitter.com\/GalaxyKate\/status\/1583907942834716672\" rel=\"noopener noreferrer nofollow\"><u>Twitter<\/u><\/a>).<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0445\u0443\u0434\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0439 \u043b\u0438\u0448\u044c \u0443\u043b\u0443\u0447\u0448\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u043e\u0431\u043e\u0433\u0430\u0442\u0438\u0442 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u0438-\u043d\u043e\u0432\u0430\u0442\u043e\u0440\u044b \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <a href=\"https:\/\/twitter.com\/hexorcismos\" rel=\"noopener noreferrer nofollow\"><u>Hexorsismos<\/u><\/a>\u00a0\u0438\u043b\u0438 Yaboi Hanoi, \u0432\u044b\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u0439 <a href=\"https:\/\/www.aisongcontest.com\/participants-2022\/yaboi-hanoi\" rel=\"noopener noreferrer nofollow\"><u>2022 AI Song Contest<\/u><\/a>\u00a0\u0441 \u043c\u0435\u043b\u043e\u0434\u0438\u044f\u043c\u0438 \u0438 \u0441\u0430\u0443\u043d\u0434-\u0434\u0438\u0437\u0430\u0439\u043d\u043e\u043c, \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u043c\u0438 \u0442\u0430\u0439\u0441\u043a\u043e\u0439 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u043e\u0439.<\/p>\n<p><a href=\"https:\/\/soundcloud.com\/yaboihanoi\" rel=\"noopener noreferrer nofollow\">yaboihanoi<\/a>\u00a0\u00b7\u00a0<a href=\"https:\/\/soundcloud.com\/yaboihanoi\/enter-demons-and-gods\" rel=\"noopener noreferrer nofollow\">\u0e2d\u0e2a\u0e38\u0e23\u0e30\u0e40\u0e17\u0e27\u0e30\u0e0a\u0e38\u0e21\u0e19\u0e38\u0e21 &#8212; Enter Demons &amp; Gods<\/a><\/p>\n<p>\u0421 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u043c\u0443\u0437\u044b\u043a\u0438 \u0432 \u0418\u0418 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u0438, \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043c\u043d\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0433\u0438\u0435. \u041e\u043f\u0435\u043d\u0441\u043e\u0440\u0441-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0438\u043c\u0435\u0435\u0442 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0445 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438\u043d\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043e\u0431\u043c\u0435\u043d\u0443 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430\u043c\u0438 \u0438 \u0432 \u0446\u0435\u043b\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442\u0434\u0430\u044e\u0449\u0438\u0445 \u0434\u043e\u043b\u0436\u043d\u043e\u0435 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u043c\u0443 \u0441\u043f\u0435\u043a\u0442\u0440\u0443 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0439.<\/p>\n<p>\u041c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u2014 \u043a\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u043b \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u043e\u0440 \u042d\u043d\u0434\u0440\u044e \u042b\u043d, <em>\u044d\u0442\u043e \u043d\u043e\u0432\u043e\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u0438\u0447\u0435\u0441\u0442\u0432\u043e<\/em>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u043c\u0441\u044f \u043a \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u0438 \u0418\u0418, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442 \u043d\u0430\u0448 \u043c\u0438\u0440, \u0438 \u0432\u0441\u0435 \u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0430\u0432\u043e \u0433\u043e\u043b\u043e\u0441\u0430 \u0438 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0438, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u044f\u0437\u044b\u043a\u0430, \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u044b, \u043d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u044d\u0442\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u043d\u043e\u0441\u0442\u0438. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435, \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0433\u0443\u0442 \u0442\u0430\u0438\u0442\u044c\u0441\u044f \u0432 \u043c\u043e\u0449\u043d\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0432\u043b\u0438\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438 \u0438\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u0430\u043c\u0438.<\/p>\n<p>\u042f \u043f\u0440\u0438\u0437\u044b\u0432\u0430\u044e \u0432\u0430\u0441 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0435 \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u043a\u043b\u044e\u0437\u0438\u0432\u043d\u043e\u0433\u043e \u0418\u0418. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u0432 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u043a\u0430\u043a\u043e\u0439 \u0431\u044b \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043e\u043f\u044b\u0442\u0430 \u0432\u044b \u043d\u0438 \u0438\u043c\u0435\u043b\u0438. \u0426\u0435\u043d\u0435\u043d \u043b\u044e\u0431\u043e\u0439 \u0432\u043a\u043b\u0430\u0434, \u0430 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0443\u0441\u0438\u043b\u0438\u044f \u043c\u043e\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b \u0442\u0432\u043e\u0440\u0438\u0442\u044c \u0447\u0443\u0434\u0435\u0441\u0430. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441 \u043b\u044e\u0431\u044b\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0437\u043d\u0430\u043d\u0438\u0439 \u0432 <a href=\"https:\/\/discord.gg\/hugging-face-879548962464493619\" rel=\"noopener noreferrer nofollow\"><u>Discord Hugging Face<\/u><\/a>. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044f \u0440\u043e\u0434\u0438\u043b\u0441\u044f \u0432 \u041a\u043e\u043b\u0443\u043c\u0431\u0438\u0438 \u0438 \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432 Hugging Face \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 (MIDI \u0438\u043b\u0438 \u0430\u0443\u0434\u0438\u043e) \u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0448\u0438\u0440\u043e\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u041b\u0430\u0442\u0438\u043d\u0441\u043a\u043e\u0439 \u0410\u043c\u0435\u0440\u0438\u043a\u0438.\u00a0<a href=\"https:\/\/twitter.com\/juancopi81\" rel=\"noopener noreferrer nofollow\"><u>\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u043c\u043d\u0435, \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f<\/u><\/a>.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/766510\/\"> https:\/\/habr.com\/ru\/articles\/766510\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>Hugging Face \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432 \u0434\u043e \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u043c\u043e-\u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0442\u044c \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Hugging Face.\u00a0<strong>\u041a \u043a\u043e\u043d\u0446\u0443 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0443\u0447\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c GPT-2 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438.<\/strong><\/p>\n<p>\u0414\u0435\u043c\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/huggingface.co\/spaces\/juancopi81\/multitrack-midi-music-generator\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u0438 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u043e\u043c \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0441\u0442\u0430\u043b\u0430 \u0432\u044b\u0434\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u0430 <a href=\"https:\/\/www.linkedin.com\/in\/dr-tristan-behrens-734967a2\" rel=\"noopener noreferrer nofollow\"><u>\u0434\u043e\u043a\u0442\u043e\u0440\u0430 \u0422\u0440\u0438\u0441\u0442\u0430\u043d\u0430 \u0411\u0435\u0440\u0435\u043d\u0441\u0430<\/u><\/a>.<\/p>\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0418\u0418 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0432 \u0441\u0444\u0435\u0440\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u0412\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 ChatGPT \u0438 Stable Diffusion \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043b\u0438 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0438. \u041a\u0440\u0443\u043f\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (Facebook, OpenAI \u0438 Stability AI) \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0438\u0441\u044c \u043a \u044d\u0442\u043e\u043c\u0443 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044e, \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0432 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438.<\/p>\n<p>\u041e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430:<\/p>\n<ul>\n<li>\n<p><strong>\u0421\u044b\u0440\u043e\u0435 \u0430\u0443\u0434\u0438\u043e<\/strong>: \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u044b\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0432\u0443\u043a\u0430 (.wav, .mp3) .\u00a0\u0422\u0430\u043a\u0443\u044e \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442 \u0434\u043b\u044f <a href=\"https:\/\/stableaudio.com\/\" rel=\"noopener noreferrer nofollow\"><u>StableAudio<\/u><\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/huggingface.co\/spaces\/facebook\/MusicGen\" rel=\"noopener noreferrer nofollow\"><u>MusicGen<\/u><\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u0443\u0437\u044b\u043a\u0430<\/strong>: \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u044b\u0440\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0430\u0443\u0434\u0438\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043c\u0435\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043c\u0435\u043b\u043e\u0434\u0438\u0438 \u043d\u0430 \u0444\u043b\u0435\u0439\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043d\u0442\u043e\u043c \u043d\u043e\u0442\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c. \u041a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u0430 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 MIDI \u0438\u043b\u0438 MusicXML. \u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f OpenAI \u043e\u0431\u0443\u0447\u0430\u043b\u0430 <a href=\"https:\/\/openai.com\/research\/musenet\" rel=\"noopener noreferrer nofollow\"><u>MuseNet<\/u><\/a>\u00a0(\u0443\u0436\u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e) \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u0445\u0438\u0442\u0440\u0443\u044e \u0438\u0434\u0435\u044e: \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u0438 (\u0432 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u044b MIDI) \u0432 \u0441\u043b\u043e\u0432\u0430, \u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u043c\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 NLP!<\/p>\n<h3>\u0421\u0431\u043e\u0440 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0433\u043e \u0432 \u0441\u043b\u043e\u0432\u0430<\/h3>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435:<\/strong>\u00a0\u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 MIDI, \u044f \u043a\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044e \u0434\u0430\u0442\u0430\u0441\u0435\u0442, \u0432\u044b\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0430 <a href=\"https:\/\/huggingface.co\/datasets\/juancopi81\/mmm_track_lmd_8bars_nots\" rel=\"noopener noreferrer nofollow\"><u>Hugging Face<\/u><\/a>. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0432\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u043c <a href=\"https:\/\/huggingface.co\/datasets\/TristanBehrens\/js-fakes-4bars\" rel=\"noopener noreferrer nofollow\"><u>JS Fake Chorales<\/u><\/a>.<\/p>\n<p>\u0421\u0431\u043e\u0440 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0438 \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044e \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e, \u0432 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 MIDI, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439, \u043a\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u041a\u043e\u043b\u0438\u043d\u043e\u043c \u0420\u044d\u0444\u0444\u0435\u043b\u043e\u043c \u2014 <a href=\"https:\/\/colinraffel.com\/projects\/lmd\/\" rel=\"noopener noreferrer nofollow\"><u>Lakh MIDI dataset (LMD)<\/u><\/a>, \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0449\u0443\u044e \u0432 \u0441\u0435\u0431\u044f 176581 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b MIDI. \u0418\u0437 LDM \u043c\u044b \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e Clean MIDI (14751 \u0444\u0430\u0439\u043b) \u0441 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h4>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0436\u0430\u043d\u0440\u044b<\/h4>\n<p>\u0417\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044f \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0435\u0451 \u0436\u0430\u043d\u0440. \u042d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432. \u042f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0441\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Spotify API \u043f\u043e\u043b\u0443\u0447\u0443 \u0436\u0430\u043d\u0440\u044b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044e, \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u044e ChatGPT \u0434\u043b\u044f \u0438\u0445 \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0431\u043e\u043b\u0435\u0435-\u043c\u0435\u043d\u0435\u0435 \u0441\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0436\u0430\u043d\u0440\u043e\u0432.<\/p>\n<pre><code class=\"python\"># \u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043a\u043e\u0434\u0430 Spotify API genres = {} for i,artist in enumerate(artists):     try:         results = sp.search(q=artist, type='artist',limit=1)         items = results['artists']['items']         genre_list = items[0]['genres'] if len(items) else items['genres']         genres[artist] = (genre_list[0]).replace(\" \", \"_\")         if i &lt; 5:             print(\"INFO: Preview {}\/5\".format(i + 1),                   artist, genre_list[:5])     except Exception as e:         genres[artist] = \"MISC\"         print(\"INFO: \", artist, \"not included: \", e)<\/code><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435\u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b, \u043d\u043e \u043e\u043d\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0430\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c \u043d\u0430\u0448\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438. \u0413\u043e\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b CSV \u0441 \u0436\u0430\u043d\u0440\u0430\u043c\u0438\u00a0<a href=\"https:\/\/github.com\/juancopi81\/mmm_tokenizer_lmd_clean\/blob\/main\/source\/preprocess\/loading\/lmd_genres.csv\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u044b\u043b\u043e\u0436\u0435\u043d \u043d\u0430 GitHub<\/u><\/a>.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u043d\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0436\u0430\u043d\u0440\u044b? \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0432\u043e \u0432\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043a\u0435\u043d\u0430 <code>\"GENRE={NAME_OF_GENRE}\"<\/code>, \u0447\u0442\u043e \u043f\u0443\u0441\u0442\u0438\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0436\u0430\u043d\u0440\u0430.<\/p>\n<h4>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430<\/h4>\n<figure class=\"full-width\">\n<div><figcaption>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0442 \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0442\u043e\u043a\u0435\u043d\u044b.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u0432\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0432 \u0442\u043e\u043a\u0435\u043d\u044b, \u0430 \u044d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u044f\u0437\u044b\u043a\u043e\u0432\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438! \u0412 \u044d\u0442\u043e\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043e\u0442 \u0444\u0430\u0439\u043b\u0430 MIDI \u0432 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432 (\u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c\u0443 \u043b\u0435\u043a\u0441\u0438\u043a\u043e\u043d\u0443) \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0438 GPT-2.<\/p>\n<h4>\u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043d\u0430 \u0431\u043b\u043e\u043a\u0438<\/h4>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b \u043d\u0430 \u0432\u043e\u0441\u044c\u043c\u0438\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u043e\u043a\u043d\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u00ab\u0442\u0430\u043a\u0442\u00bb (bar) \u2014 \u044d\u0442\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u043b\u0435\u0439. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 4 \u0438\u043b\u0438 16, \u0438 \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u043d\u043e \u043c\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u044b \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0432 \u0446\u0438\u043a\u043b\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b MIDI \u0434\u043b\u0438\u043d\u043e\u0439 \u0432\u043e\u0441\u0435\u043c\u044c \u0442\u0430\u043a\u0442\u043e\u0432. \u0414\u043b\u044f \u0440\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u044f \u043d\u0430 \u0431\u043b\u043e\u043a\u0438 \u044f \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0432 Colab:<\/p>\n<pre><code class=\"python\">for i, midi_path in enumerate(tqdm(midi_paths, desc=\"CHUNKING MIDIS\")):     try:         # \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0432\u044b\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430         relative_path = midi_path.relative_to(Path(\"path\/to\/dataset\/lmd\", dataset))         output_dir = merged_out_dir \/ relative_path.parent         output_dir.mkdir(parents=True, exist_ok=True)          # \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438 \u0443\u0436\u0435 \u0431\u043b\u043e\u043a\u0438         chunk_paths = list(output_dir.glob(f\"{midi_path.stem}_*.mid\"))         if len(chunk_paths) > 0:             print(f\"Chunks for {midi_path} already exist, skipping...\")             continue          # \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c MIDI, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0435\u0433\u043e         midi = MidiFile(midi_path)         ticks_per_cut = MAX_NB_BAR * midi.ticks_per_beat * 4         nb_cuts = ceil(midi.max_tick \/ ticks_per_cut)         if nb_cuts &lt; 2:             continue         print(f\"Processing {midi_path}\")         midis = [deepcopy(midi) for _ in range(nb_cuts)]          for j, track in enumerate(midi.instruments):  # \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0442\u044b, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e             track.notes.sort(key=lambda x: x.start)             for midi_short in midis:  # \u043e\u0447\u0438\u0449\u0430\u0435\u043c \u043d\u043e\u0442\u044b \u0438\u0437 \u0443\u043a\u043e\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0445 MIDI                 midi_short.instruments[j].notes = []             for note in track.notes:                 cut_id = note.start \/\/ ticks_per_cut                 note_copy = deepcopy(note)                 note_copy.start -= cut_id * ticks_per_cut                 note_copy.end -= cut_id * ticks_per_cut                 midis[cut_id].instruments[j].notes.append(note_copy)          # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c MIDI         for j, midi_short in enumerate(midis):             if sum(len(track.notes) for track in midi_short.instruments) &lt; MIN_NB_NOTES:                 continue             midi_short.dump(output_dir \/ f\"{midi_path.stem}_{j}.mid\")      except Exception as e:         print(f\"An error occurred while processing {midi_path}: {e}\")<\/code><\/pre>\n<p>\u0412\u044b\u0448\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0430 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u0434\u0430. \u041f\u043e\u043b\u043d\u044b\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/colab.research.google.com\/drive\/1KLbe-ZnIyvpPypVqYapBRs-o5Q1E7a9R?usp=sharing\" rel=\"noopener noreferrer nofollow\"><u>\u0437\u0434\u0435\u0441\u044c<\/u><\/a>.<\/p>\n<h4>\u0418\u0437 \u043a\u043e\u043c\u0430\u043d\u0434 MIDI \u0432 \u0441\u043b\u043e\u0432\u0430<\/h4>\n<p>\u0421\u0435\u0433\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0432 \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u0432\u043e\u0441\u044c\u043c\u0438\u0442\u0430\u043a\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b MIDI, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432\u0430. \u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0438. \u0412\u043e\u0442 \u043e\u0434\u043d\u0438 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3394171.3413671\" rel=\"noopener noreferrer nofollow\"><u>REMI<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2201.10936\" rel=\"noopener noreferrer nofollow\"><u>REMIPlus<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/1808.03715\" rel=\"noopener noreferrer nofollow\"><u>MIDI-Like<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/ojs.aaai.org\/index.php\/AAAI\/article\/view\/16091\" rel=\"noopener noreferrer nofollow\"><u>CPWord<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2008.06048\" rel=\"noopener noreferrer nofollow\"><u>MMM<\/u><\/a><\/p>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/miditok.readthedocs.io\/en\/latest\/tokenizations.html\" rel=\"noopener noreferrer nofollow\"><u>\u041f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0439 \u043e\u0431\u0437\u043e\u0440<\/u><\/a>\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/github.com\/Natooz\/MidiTok\" rel=\"noopener noreferrer nofollow\"><u>MidiTok<\/u><\/a> \u2014 \u043c\u043e\u0449\u043d\u043e\u0433\u043e \u043f\u0430\u043a\u0435\u0442\u0430 Python \u0434\u043b\u044f \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 MIDI.<\/p>\n<h4>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0439 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0442\u043e\u043a\u0435\u043d\u043e\u0432.<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<tr>\n<th>\n<p>\u0422\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u044f<\/p>\n<\/th>\n<th>\n<p>\u0422\u0435\u043c\u043f<\/p>\n<\/th>\n<th>\n<p>\u0422\u0430\u043a\u0442\u043e\u0432\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440<\/p>\n<\/th>\n<th>\n<p>\u0410\u043a\u043a\u043e\u0440\u0434\u044b<\/p>\n<\/th>\n<th data-colwidth=\"102\" width=\"102\">\n<p>\u041f\u0430\u0443\u0437\u044b<\/p>\n<\/th>\n<th data-colwidth=\"91\" width=\"91\">\n<p>\u041f\u0435\u0434\u0430\u043b\u044c \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u0437\u0432\u0443\u043a\u0430<\/p>\n<\/th>\n<th>\n<p>\u041c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u044f \u0437\u0432\u0443\u043a\u0430<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MIDILike<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">REMI<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TSD<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Structured<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CPWord<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Octuple<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MuMIDI<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">MMM<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2705<\/p>\n<\/td>\n<td data-colwidth=\"102\" width=\"102\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td data-colwidth=\"91\" width=\"91\">\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u274c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u044d\u0442\u043e\u043c \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0435 \u044f \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c MMM: \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0446\u0438\u0438 Multi-Track Music Machine. MMM \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u043d\u043e \u043c\u043e\u0449\u043d\u0430\u044f \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 MIDI \u0432 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432\u0430. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.<\/p>\n<h4>MMM: Multi-Track Music Machine<\/h4>\n<p>\u0414\u0436\u0435\u0444\u0444 \u042d\u043d\u0441 \u0438 \u0424\u0438\u043b\u0438\u043f \u041f\u0430\u0441\u043a\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u043e\u043a\u0435\u043d\u0438\u0437\u0430\u0442\u043e\u0440 MMM \u0432 \u043d\u0430\u0443\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/arxiv.org\/abs\/2008.06048\" rel=\"noopener noreferrer nofollow\"><u>MMM: Exploring Conditional Multi-Track Music Generation with the Transformer<\/u><\/a>. \u0427\u0442\u043e\u0431\u044b \u043b\u0443\u0447\u0448\u0435 \u043f\u043e\u043d\u044f\u0442\u044c \u044d\u0442\u0443 \u043c\u0435\u0442\u043e\u0434\u0438\u043a\u0443, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<figure class=\"full-width\">\n<div><figcaption><em>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u044f MultiTrack \u0438 Bar Fill. \u0422\u043e\u043a\u0435\u043d\u044b bar\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0442\u0430\u043a\u0442\u0430\u043c, \u0430 \u0442\u043e\u043a\u0435\u043d\u044b track\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e\u043b\u043d\u044b\u043c \u0434\u043e\u0440\u043e\u0436\u043a\u0430\u043c.<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412  MMM \u0447\u0438\u0441\u043b\u0430 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 <a href=\"https:\/\/www.inspiredacoustics.com\/en\/MIDI_note_numbers_and_center_frequencies\" rel=\"noopener noreferrer nofollow\"><u>\u0432\u044b\u0441\u043e\u0442\u0443 \u043d\u043e\u0442<\/u><\/a>\u00a0\u0438 <a href=\"https:\/\/soundprogramming.net\/file-formats\/general-midi-instrument-list\/\" rel=\"noopener noreferrer nofollow\"><u>\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b<\/u><\/a>\u00a0\u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 MIDI. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435 \u0441\u0445\u0435\u043c\u0435 NOTE_ON=60 \u2014 \u044d\u0442\u043e C4, \u0430 INST=30 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0433\u0438\u0442\u0430\u0440\u0443 \u0441 \u043e\u0432\u0435\u0440\u0434\u0440\u0430\u0439\u0432\u043e\u043c (Overdriven Guitar). \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c NOTE_ON\/NOTE_OFF \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0433\u0434\u0435 \u043d\u043e\u0442\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u0437\u0432\u0443\u0447\u0430\u0442\u044c, \u0438 TIME_DELTA \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0448\u043a\u0430\u043b\u044b. \u041d\u043e\u0442\u044b \u043e\u0431\u0451\u0440\u043d\u0443\u0442\u044b \u0432 \u0442\u043e\u043a\u0435\u043d\u044b &lt;BAR_START> \u0438 &lt;BAR_END>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0432\u043d\u0443\u0442\u0440\u044c \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u043e\u0432 &lt;TRACK_START> \u0438 &lt;TRACK_END>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 &lt;PIECE_START> \u0438 &lt;PIECE_END>, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0445 \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c, \u0432\u0437\u044f\u0442\u044b\u043c \u0438\u0437 <a href=\"https:\/\/arxiv.org\/abs\/2107.10388\" rel=\"noopener noreferrer nofollow\"><u>JS Fake Chorales<\/u><\/a>:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/6525050072e08276d7ae9673\" data-style=\"\" id=\"6525050072e08276d7ae9673\" width=\"\"><\/div>\n<pre><code>PIECE_START STYLE=JSFAKES GENRE=JSFAKES TRACK_START INST=48 BAR_START NOTE_ON=68 TIME_DELTA=4 NOTE_OFF=68 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 NOTE_ON=63 TIME_DELTA=2 NOTE_OFF=63 NOTE_ON=65 TIME_DELTA=2 NOTE_OFF=65 BAR_END BAR_START NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 NOTE_ON=58 TIME_DELTA=2 NOTE_OFF=58 NOTE_ON=60 TIME_DELTA=2 NOTE_OFF=60 NOTE_ON=62 TIME_DELTA=4 NOTE_OFF=62 BAR_END BAR_START NOTE_ON=62 TIME_DELTA=4 NOTE_OFF=62 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 BAR_END BAR_START NOTE_ON=63 TIME_DELTA=4 NOTE_OFF=63 NOTE_ON=63 TIME_DELTA=12 NOTE_OFF=63 BAR_END TRACK_END TRACK_START INST=0 BAR_START NOTE_ON=72 TIME_DELTA=4 NOTE_OFF=72 NOTE_ON=75 TIME_DELTA=4 NOTE_OFF=75 NOTE_ON=70 TIME_DELTA=4 NOTE_OFF=70 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 BAR_END BAR_START NOTE_ON=72 TIME_DELTA=2 NOTE_OFF=72 NOTE_ON=70 TIME_DELTA=2 NOTE_OFF=70 NOTE_ON=68 TIME_DELTA=4 NOTE_OFF=68 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=65 TIME_DELTA=4 NOTE_OFF=65 BAR_END BAR_START NOTE_ON=70 TIME_DELTA=4 NOTE_OFF=70 NOTE_ON=68 TIME_DELTA=4 NOTE_OFF=68 NOTE_ON=67 TIME_DELTA=4 NOTE_OFF=67 NOTE_ON=72 TIME_DELTA=4 NOTE_OFF=72 BAR_END BAR_START NOTE_ON=72 TIME_DELTA=4 NOTE_OFF=72 NOTE_ON=70 TIME_DELTA=12 NOTE_OFF=70 BAR_END TRACK_END TRACK_START INST=32 BAR_START NOTE_ON=53 TIME_DELTA=4 NOTE_OFF=53 NOTE_ON=48 TIME_DELTA=4 NOTE_OFF=48 NOTE_ON=50 TIME_DELTA=4 NOTE_OFF=50 NOTE_ON=51 TIME_DELTA=4 NOTE_OFF=51 BAR_END BAR_START NOTE_ON=48 TIME_DELTA=4 <\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-357118","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/357118","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=357118"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/357118\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=357118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=357118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=357118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}