{"id":356334,"date":"2024-05-20T23:27:28","date_gmt":"2024-05-20T23:27:28","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=356334"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=356334","title":{"rendered":"<span>LLaMA 2, RWKV, Santacoder \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 LLM \u043d\u0430 iOS<\/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<p>\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u0440\u0435\u0448\u0438\u043b \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u044f\u0437\u044b\u043a Swift \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0iOS. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0432\u00a0\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0443\u043c\u0435\u0432\u0448\u0435\u0433\u043e <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a>\u043f\u043e\u0434\u00a0iOS. \u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a 3B \u0438 7B \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u00a0iPhone 12\u00a0Pro \u0441\u00a0\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e. \u041f\u043e\u0434 \u00ab\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439\u00bb \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u044f \u0438\u043c\u0435\u044e \u0432\u00a0\u0432\u0438\u0434\u0443 \u0442\u0430\u043a\u0443\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435\u00a0\u0443\u0441\u043f\u0435\u0432\u0430\u043b \u0437\u0430\u0441\u043a\u0443\u0447\u0430\u0442\u044c, \u0447\u0438\u0442\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u0427\u0442\u043e\u00a0\u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c (\u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438\u00a0\u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438) \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435. <\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041c\u044b\u0441\u043b\u044c \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u043d\u0430\u00a0iOS \u0443\u00a0\u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0432\u044b\u0448\u043b\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/drawthings.ai\/\" rel=\"noopener noreferrer nofollow\">Draw Things<\/a>, \u043f\u0440\u043e\u00a0\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 <a href=\"https:\/\/habr.com\/ru\/companies\/qiwi\/articles\/708504\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0430\u00a0\u0425\u0430\u0431\u0440\u0435<\/a>. \u041c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u044f \u043c\u043e\u0433\u0443 \u0431\u0435\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 (\u0432 \u043f\u043e\u0435\u0437\u0434\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440), \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u00ab\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u0441\u044f\u043a\u043e\u0433\u043e\u00bb \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u0431\u0435\u0437\u00a0\u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a, \u0446\u0435\u043d\u0437\u0443\u0440\u044b \u0438 \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b: \u0435\u0441\u043b\u0438 Stable Diffusion \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0430\u00a0iOS, \u0442\u043e \u0447\u0442\u043e\u00a0\u043c\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438? \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLM Farm<\/a>. <\/p>\n<h3>\u041e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 LLaMA.cpp<\/h3>\n<p><a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f LLM inference <span class=\"habrahidden\">(\u044f \u0442\u0430\u043a \u0438 \u043d\u0435\u00a0\u0440\u0435\u0448\u0438\u043b \u043a\u0430\u043a\u00a0\u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043a\u0430\u043a\u00a0\u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445)<\/span> \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432 LLaMA <span class=\"habrahidden\">(\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0436\u0435 \u0438 Falcon \u0438 Starcoder)<\/span> \u0441\u00a0\u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0439, \u043d\u0430\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445. \u041e\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430\u00a0\u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u043b\u044f\u00a0\u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u00a0\u0436\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u043c. \u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e\u00a0\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a <a href=\"https:\/\/github.com\/saharNooby\/rwkv.cpp\" rel=\"noopener noreferrer nofollow\">rwkv.cpp<\/a>, <a href=\"https:\/\/github.com\/leejet\/stable-diffusion.cpp\" rel=\"noopener noreferrer nofollow\">stable\u2011diffusion.cpp<\/a>, <a href=\"https:\/\/github.com\/Maknee\/minigpt4.cpp\" rel=\"noopener noreferrer nofollow\">minigpt4.cpp<\/a> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h3>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 LLM inference \u043d\u0430\u00a0iOS \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430\u00a0\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0434\u0430\u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 500\u041c\u0411 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438. \u0412\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u043a\u00a0\u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0432\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 iOS \u0438 MacOS Apple \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0430 Metal. <\/p>\n<h3>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437\u00a0\u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u044d\u0442\u043e \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435. \u041a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u00a0\u2014 \u044d\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u0437\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u00a0\u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 8\u00a0\u0431\u0438\u0442\u043d\u044b\u0445 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432\u043c\u0435\u0441\u0442\u043e 32\u00a0\u0438\u043b\u0438 16\u00a0\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439. <\/p>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0430\u043d <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u0432\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 8\u00a0\u0434\u043e 2\u00a0\u0431\u0438\u0442. \u041c\u0435\u0442\u043e\u0434\u044b \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>\u00a0\u0431\u044b\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b, \u0438 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0430\u043c\u044b\u043c\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 k_quants.c. \u0414\u043b\u044f\u00a0\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430 \u00abk\u00bb, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 q4_km. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u00a0k_quants \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\/pull\/1684\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u0412\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\/discussions\/406\" rel=\"noopener noreferrer nofollow\">\u0435\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/a> \u0441\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u00a0\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: <span class=\"habrahidden\">(\u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0442\u044b \u0438\u043b\u0438\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0431\u0440\u0435\u0434\u0430, \u0442\u0430\u043a \u044f \u043f\u0435\u0440\u0435\u0432\u0435\u043b perplexity)<\/span><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/539\/b16\/6cf\/539b166cf1f159cb650ce33bf7638f0b.png\" alt=\"\" title=\"\" width=\"631\" height=\"441\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/539\/b16\/6cf\/539b166cf1f159cb650ce33bf7638f0b.png\"\/><\/figure>\n<details class=\"spoiler\">\n<summary>\u0415\u0449\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/916\/9b7\/c21\/9169b7c2192e4c1809dbfba374eba311.png\" alt=\"\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 wikitext2 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 512. \u0412\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0442\u043e\u043a\u0435\u043d \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e \u043d\u0430 MacBook M1 Pro \u0441 32 \u0413\u0411 \u041e\u0417\u0423 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 4 \u0438 8 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.\" title=\"\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 wikitext2 \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 512. \u0412\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0442\u043e\u043a\u0435\u043d \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e \u043d\u0430 MacBook M1 Pro \u0441 32 \u0413\u0411 \u041e\u0417\u0423 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 4 \u0438 8 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.\" width=\"683\" height=\"221\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/916\/9b7\/c21\/9169b7c2192e4c1809dbfba374eba311.png\"\/><\/p>\n<div><figcaption>\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 <a href=\"https:\/\/paperswithcode.com\/dataset\/wikitext-2\" rel=\"noopener noreferrer nofollow\">wikitext2<\/a> \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 512. \u0412\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0442\u043e\u043a\u0435\u043d \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e \u043d\u0430 MacBook M1 Pro \u0441 32 \u0413\u0411 \u041e\u0417\u0423 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 4 \u0438 8 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/8b7\/c00\/882\/8b7c00882743b15c7b97e7ff058d905a.png\" width=\"619\" height=\"261\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8b7\/c00\/882\/8b7c00882743b15c7b97e7ff058d905a.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/469\/64d\/334\/46964d334ac65c9d4a5190ccca606b8f.png\" width=\"619\" height=\"261\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/469\/64d\/334\/46964d334ac65c9d4a5190ccca606b8f.png\"\/><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0418\u0437\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 8-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u00a0\u0443\u0445\u0443\u0434\u0448\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 4\u00a0\u0440\u0430\u0437\u0430 \u043f\u043e\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e F32. \u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u0436\u0435 \u043c\u0435\u0441\u0442\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043d\u0430\u00a0\u0434\u0438\u0441\u043a\u0435. \u0421\u0430\u043c\u044b\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0435\u0439 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 4-\u0431\u0438\u0442\u043d\u043e\u0435 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 <strong>q4_k_m<\/strong>. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 7B \u043d\u0430\u00a0iPhone \u0441\u00a0\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <strong>q3_km<\/strong> \u0438\u043b\u0438 <strong>q4_ks<\/strong>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0438\u00a0\u0442\u0430\u043a\u043e\u043c \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u0445\u0432\u0430\u0442\u0430\u0435\u0442 Shared RAM \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Metal \u043d\u0430\u00a0iPhone, \u0447\u0442\u043e\u00a0\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. <\/p>\n<p>\u0422\u0430\u043a\u00a0\u0436\u0435 \u0434\u043b\u044f\u00a0\u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <a href=\"https:\/\/pythonspeed.com\/articles\/reduce-memory-array-copies\/\" rel=\"noopener noreferrer nofollow\">mmap<\/a> \u0444\u0430\u0439\u043b\u043e\u0432. \u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u00a0\u043c\u0435\u0440\u0435 \u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438, \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 mmap \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u00a0\u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e\u00a0\u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u00a0\u0436\u0435 \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 3B, \u0431\u0435\u0437\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e mmap, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441 <em>increased<\/em>\u2011<em>memory<\/em>\u2011<em>limit<\/em> entitlements, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u043e \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u044c\u044e LLaMA-2\u20137B q3_k:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/211\/bbb\/827\/211bbb8278718c7c3542b7ac7c23a803.png\" alt=\"mmap \u0432\u043a\u043b\u044e\u0447\u0435\u043d\" title=\"mmap \u0432\u043a\u043b\u044e\u0447\u0435\u043d\" width=\"346\" height=\"294\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/211\/bbb\/827\/211bbb8278718c7c3542b7ac7c23a803.png\"\/><\/p>\n<div><figcaption>mmap \u0432\u043a\u043b\u044e\u0447\u0435\u043d<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4d6\/84f\/116\/4d684f1162dc966aa16720589d86815d.png\" alt=\"mmap \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\" title=\"mmap \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\" width=\"348\" height=\"300\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4d6\/84f\/116\/4d684f1162dc966aa16720589d86815d.png\"\/><\/p>\n<div><figcaption>mmap \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u043d\u0430\u00a0\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 RAM, \u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e\u00a0LLaMA 2\u00a0\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u00a0\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441 128\u00a0\u041c\u0411 RAM, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043e\u0431\u044a\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u00a0mmap \u0444\u0430\u0439\u043b \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>\u041f\u043e\u00a0\u0438\u0442\u043e\u0433\u0443 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0432\u00a0\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441\u00a0mmap, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c 3B \u0438 7B \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0430\u0436\u0435 \u043d\u0430\u00a0iPhone, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c <a href=\"https:\/\/habr.com\/ru\/articles\/759386\/\" rel=\"noopener noreferrer nofollow\">Saiga2<\/a> \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441\u00a0\u043d\u0435\u0439 \u043d\u0430\u00a0\u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435. <span class=\"habrahidden\">\u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u00a0Saiga2\u00a0\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u00a0\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0438, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u00a0\u043c\u043e\u0434\u0435\u043b\u044c 7B q3_k \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0431\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0443\u043f\u043e\u0432\u0430\u0442\u043e \u043f\u043e\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u00a0q8_0\u00a0(\u0438\u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0435\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043c\u043f\u0442\u0430).<\/span><\/p>\n<p>\u0412 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a\u00a0CUDA, OpenCL \u0438 <strong>Metal<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c. \u0414\u043b\u044f\u00a0\u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b Metal \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u00a0iOS, \u044f \u0432\u043d\u0435\u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u043a\u043e\u0434 <em>ggml\u2011metal.m<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438\u00a0\u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Metal \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 3B q4_k \u0438 7B q3_k \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u00a0iPhone 12\u00a0pro \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439. \u041f\u0440\u0438\u043c\u0435\u0440 \u0435\u0441\u0442\u044c \u0432\u00a0\u0432\u0438\u0434\u0435\u043e \u043d\u0438\u0436\u0435.<\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0430 iOS<\/h3>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 C, <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>\u00a0\u2014 \u043d\u0430\u00a0C++, ggml\u2011metal\u00a0\u2014 \u043d\u0430\u00a0Objective C, \u0430\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430\u00a0Swift. \u0414\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0438\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/github.com\/guinmoon\/llmfarm_core.swift\" rel=\"noopener noreferrer nofollow\">llmfarm_core.swift<\/a>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f\u00a0\u2014 <strong>llmfarm_core_cpp<\/strong>\u00a0\u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>, <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a>\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 inference, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0430\u0445 C, C++ \u0438 Objective C. <\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f\u00a0\u2014 <strong>llmfarm_core<\/strong>\u00a0\u2014 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 Swift \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 llmfarm_core_cpp, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f\u00a0\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \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 \u0441\u00a0LLM. <\/p>\n<p>\u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a>\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0440\u0430\u043d\u044c\u0448\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a. \u041a\u0440\u043e\u043c\u0435 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 GGML \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 inference, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0gptneox, rwkv \u0438 \u0434\u0440. \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 inference, \u0438 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 Metal \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 inference, \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 Swift, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0442\u00a0\u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <strong>LLMBase<\/strong>. \u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/932\/067\/687\/932067687b5684ab184c46ac26ad3f5f.png\" width=\"900\" height=\"330\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/932\/067\/687\/932067687b5684ab184c46ac26ad3f5f.png\"\/><\/figure>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 inference:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/722780\/\" rel=\"noopener noreferrer nofollow\">LLaMa<\/a> <a href=\"https:\/\/huggingface.co\/models?other=llama-2\" rel=\"noopener noreferrer nofollow\">(2)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/falconllm.tii.ae\/\" rel=\"noopener noreferrer nofollow\">Falcon<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/BlinkDL\/rwkv-4-raven\" rel=\"noopener noreferrer nofollow\">RWKV<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/docs\/transformers\/model_doc\/gpt_neox\" rel=\"noopener noreferrer nofollow\">GPTNeoX<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/docs\/transformers\/model_doc\/gpt2\" rel=\"noopener noreferrer nofollow\">GPT-2<\/a> (<a href=\"https:\/\/www.cerebras.net\/model-lab\/\" rel=\"noopener noreferrer nofollow\">Cerebras<\/a>)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/replit\/replit-code-v1_5-3b\" rel=\"noopener noreferrer nofollow\">Replit<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/blog\/starcoder\" rel=\"noopener noreferrer nofollow\">StarCoder<\/a> (<a href=\"https:\/\/huggingface.co\/bigcode\/santacoder\" rel=\"noopener noreferrer nofollow\">SantaCoder<\/a>)<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0437 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>. \u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0llama, \u043d\u043e\u00a0\u0438 \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 inference, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435. \u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u00a0LLMFarm \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2306.01286\" rel=\"noopener noreferrer nofollow\">Temperature<\/a> (temp, tok-k, top-p)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.trentonbricken.com\/Tail-Free-Sampling\/\" rel=\"noopener noreferrer nofollow\">Tail Free Sampling<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2202.00666\" rel=\"noopener noreferrer nofollow\">Locally Typical Sampling<\/a>\u00a0<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2007.14966\" rel=\"noopener noreferrer nofollow\">Mirostat<\/a>\u00a0<\/p>\n<\/li>\n<li>\n<p>Greedy<\/p>\n<\/li>\n<li>\n<p>Grammar<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 Metal \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e llama, falcon \u0438 starcoder. <a href=\"https:\/\/github.com\/guinmoon\/llmfarm_core.swift\" rel=\"noopener noreferrer nofollow\">LLMFarm_core<\/a>\u00a0\u0431\u044b\u043b \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 SPM. \u0412\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0447\u0430\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0435\u00a0\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0442.\u00a0\u0434. \u0422\u0430\u043a\u00a0\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 prompt \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u00a0\u043f\u043e\u0434\u043e\u0431\u0438\u0438:<\/p>\n<pre><code class=\"1c\">[INST] &lt;&lt;SYS>> You are a helpful, respectful and honest assistant. Always answer as helpfully as possible.  If you don't know the answer to a question, please don't share false information. &lt;&lt;\/SYS>> {{prompt}}[\/INST]<\/code><\/pre>\n<h3>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/h3>\n<h4>\u0412\u0435\u0440\u0441\u0438\u0438 GGML<\/h4>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e, \u043d\u043e\u00a0\u0435\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 <strong>\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b<\/strong> \u0434\u0440\u0443\u0433 \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u043c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 inference, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0gpt-2, gptneox, replit, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0432\u00a0\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u00a0\u0432\u00a0rwkv \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430\u00a0\u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430\u044f \u0441\u0432\u0435\u0436\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438. \u0422\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435,\u00a0\u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u0435. \u042f \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0443\u0442\u0435\u043c\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0434\u043e\u043b\u0436\u043d\u043e\u00a0\u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0435\u00bb \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438\u043b\u0438\u00a0\u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430. <span class=\"habrahidden\">(\u042f \u043d\u0435\u00a0\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u043f\u043e\u00a0C++, \u0430\u00a0\u043d\u0430\u00a0Swift \u043f\u0438\u0448\u0443 \u0432\u043f\u0435\u0440\u0432\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445, \u0434\u043b\u044f\u00a0\u043c\u0435\u043d\u044f\u00a0\u0431\u044b\u043b\u0438 \u043d\u043e\u0432\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e\u2011\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u044f\u0449\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0438\u043c \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.)<\/span><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/755\/a4d\/5ad\/755a4d5adacc7e2f1665b7ad1f7acc5a.png\" alt=\"\u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 ggml\" title=\"\u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 ggml\" width=\"901\" height=\"308\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/755\/a4d\/5ad\/755a4d5adacc7e2f1665b7ad1f7acc5a.png\"\/><\/p>\n<div><figcaption>\u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 ggml<\/figcaption><\/div>\n<\/figure>\n<h4>\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h4>\n<p><a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 \u0421, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u0412\u00a0\u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <strong>null<\/strong> \u0438\u043b\u0438\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u0443\u0434\u0430\u0447\u0435\u0439, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>GGML_ASSERT<\/em>, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<pre><code class=\"cpp\">#define GGML_ASSERT(x) \\    do { \\        if (!(x)) { \\            fprintf(stderr, \"GGML_ASSERT: %s:%d: %s\\n\", __FILE__, __LINE__, #x); \\            abort(); \\        } \\    } while (0)<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430\u00a0C \u0438 C++, \u0430\u00a0\u0442\u0430\u043a\u00a0\u0436\u0435 Objective\u2011C \u0438 C++ \u0438 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 try\u2011catch \u0432\u00a0Objective\u2011C. \u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0434 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 C++<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">\/\/ ggml.h #include \"exception_helper.h\" #define GGML_ASSERT(x) \\     do { \\         if (!(x)) { \\             fprintf(stderr, \"GGML_ASSERT: %s:%d: %s\\n\", __FILE__, __LINE__, #x); \\             char descr[500]; \\             sprintf(descr, \"GGML_ASSERT: %s:%d: %s\\n\", __FILE__, __LINE__, #x);\\             throw_exception(descr); \\         } \\     } while (0)  \/\/  exception_helper.h #ifdef __cplusplus #define EXTERNC extern \"C\" #else #define EXTERNC #endif EXTERNC void throw_exception(const char* description); #undef EXTERNC  \/\/  exception_helper.cpp #include \"exception_helper.h\" #include &lt;stdexcept>  void throw_exception(const char* description){     throw std::invalid_argument(description); }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 Objective-C<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"objectivec\">\/\/  exception_helper_objc.mm  #import &lt;Foundation\/Foundation.h>  #import \"exception_helper_objc.h\" #include &lt;exception>  @implementation ExceptionCather + (BOOL)catchException:(noEscape void(^)(void))tryBlock error:(__autoreleasing NSError **)error {     try {         tryBlock();         return YES;     }     catch(NSException* e) {         NSLog(@\"%@\", e.reason);         *error = [[NSError alloc] initWithDomain:e.name code:-1 userInfo:e.userInfo];         return NO;     }     catch (std::exception&amp; e) {         NSString* what = [NSString stringWithUTF8String: e.what()];         NSDictionary* userInfo = @{NSLocalizedDescriptionKey : what};         *error = [[NSError alloc] initWithDomain:@\"cpp_exception\" code:-2 userInfo:userInfo];         return NO;     }     catch(...) {         NSDictionary* userInfo = @{NSLocalizedDescriptionKey:@\"Other C++ exception\"};         *error = [[NSError alloc] initWithDomain:@\"cpp_exception\" code:-3 userInfo:userInfo];         return NO;     } } @end<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0427\u0442\u043e\u0431\u044b \u043b\u043e\u0432\u0438\u0442\u044c \u0432\u044b\u0448\u0435\u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0432 Swift <s>\u043d\u0443\u0436\u043d\u043e<\/s> \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e: <\/p>\n<pre><code class=\"swift\">do{     try ExceptionCather.catchException {         self.model = llama_load_model_from_file(path, params)     } }catch {     print(error)     throw error }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u00a0\u0442\u0440\u0438 \u044d\u0442\u0430\u043f\u0430, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u00ab\u043f\u0440\u043e\u0431\u0440\u043e\u0441\u00bb \u043e\u0448\u0438\u0431\u043e\u043a \u0443\u0440\u043e\u0432\u043d\u044f \u0421\u00a0\u0434\u043e\u00a0\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0443\u0440\u043e\u0432\u043d\u044f Swift.<\/p>\n<p>\u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0435 \u0435\u0449\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <a href=\"https:\/\/testflight.apple.com\/join\/6SpPLIVM\" rel=\"noopener noreferrer nofollow\">TestFlight<\/a>. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u0432\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c (<a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\/blob\/main\/models.md\" rel=\"noopener noreferrer nofollow\">\u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438<\/a> \u043d\u0430\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432<a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\"> \u043c\u043e\u0435\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>). \u0417\u0430\u0442\u0435\u043c \u0432 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0447\u0430\u0442, \u0443\u043a\u0430\u0437\u0430\u0432 \u043f\u0443\u0442\u044c \u043a\u00a0\u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0432\u044b\u0431\u0440\u0430\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d.<\/p>\n<h2>\u0424\u043e\u0440\u043c\u0430\u0442 \u043c\u043e\u0434\u0435\u043b\u0435\u0439<\/h2>\n<p>\u0412\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d \u0441\u0432\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0444\u0430\u0439\u043b\u043e\u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043c\u0435\u043d\u044f\u043b\u0441\u044f. \u0424\u043e\u0440\u043c\u0430\u0442 \u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043f\u043e\u00a0\u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u00a0\u0437\u0430\u00a0\u0441\u043c\u0435\u043d\u044b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043b\u0438\u00a0\u0434\u043b\u044f\u00a0\u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 mmap. \u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u043f\u0440\u0438\u00a0\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430\u00a0\u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0442\u0435\u0440\u044f\u043b\u0430\u0441\u044c \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c \u0441\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438 \u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u043d\u043e\u0432\u043e. \u041d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0430\u043c\u0430\u044f \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f GGUF v2, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u00a0\u0441\u0430\u0439\u0442\u0435 <a href=\"https:\/\/huggingface.co\/\" rel=\"noopener noreferrer nofollow\">huggingface<\/a> \u043f\u043e\u00a0\u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u0444\u043e\u0440\u043c\u0430\u0442\u0435 GGJT v3, \u043d\u043e\u00a0\u0438\u0445 \u043b\u0435\u0433\u043a\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u00a0\u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\/blob\/master\/convert-llama-ggml-to-gguf.py\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442\u0430<\/a>. \u0424\u043e\u0440\u043c\u0430\u0442 GGJT v3\u00a0\u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u044f \u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043d\u0443\u0442\u0440\u0438 \u043c\u043e\u0436\u043d\u043e\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u044c \u0447\u0442\u043e\u00a0\u0442\u0430\u043c \u0437\u0430\u00a0inference \u0438 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0434\u0430\u043d\u043d\u044b\u0435. GGUF\u00a0\u2014 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u00a0\u0441\u0435\u0431\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u044e\u0447 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0445 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438, \u043a\u0430\u043a\u0438\u0435 \u0443\u00a0\u043d\u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u0430\u00a0\u0442\u0430\u043a\u00a0\u0436\u0435 \u0431\u0435\u0437\u00a0\u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442.<\/p>\n<h3>\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 <\/h3>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440. \u0412\u00a0\u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u0438. \u0421\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0430\u0442\u043e\u0432 \u0441\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438. \u0412\u00a0\u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u043e\u0433\u043e \u0447\u0430\u0442\u0430, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0449\u0430\u0442\u044c\u0441\u044f \u0441\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043d\u0430\u00a0SwiftUI, \u0447\u0442\u043e\u00a0\u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u00a0\u043d\u0430\u00a0iOS (\u0432\u0435\u0440\u0441\u0438\u044f 16+), \u0442\u0430\u043a \u0438 \u043d\u0430\u00a0MacOS (\u0432\u0435\u0440\u0441\u0438\u044f 13+). \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043d\u0435\u00a0\u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0430 \u0432\u00a0\u0441\u0432\u044f\u0437\u0438 \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 Metal 3, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u0431\u043e\u043b\u0435\u0435 \u043d\u043e\u0432\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445, \u0430\u00a0\u0442\u0430\u043a\u00a0\u0436\u0435 \u0438\u0437\u00a0\u0437\u0430\u00a0\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 SwiftUI.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/738\/a81\/927\/738a81927325149e7928beefbabab4e4.png\" width=\"1302\" height=\"721\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/738\/a81\/927\/738a81927325149e7928beefbabab4e4.png\"\/><\/figure>\n<h3>\u0417\u0430\u0447\u0435\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c CoreML? <\/h3>\n<p>\u041d\u0430\u00a0\u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438, <a href=\"https:\/\/github.com\/huggingface\/blog\/blob\/main\/swift-coreml-llm.md\" rel=\"noopener noreferrer nofollow\">\u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440<\/a> \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c LLaMA 2\u00a0\u043d\u0430\u00a0CoreML, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0441\u043c\u043e\u0433 \u043d\u0430\u0439\u0442\u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0Mac \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0447\u0435\u043c GGML.<\/p>\n<h3>\u0427\u0442\u043e \u043f\u043e \u043f\u043e\u0432\u043e\u0434\u0443 Fine Tune?<\/h3>\n<p><a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 LoRA \u0430\u0434\u0430\u043f\u0442\u0435\u0440\u043e\u0432 \u0431\u0435\u0437\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f mmap. \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u043c <a href=\"https:\/\/github.com\/xaedes\/llama.cpp\/tree\/finetune-lora\/examples\/finetune\" rel=\"noopener noreferrer nofollow\">\u0444\u043e\u0440\u043a\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440<\/a> finetune, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u0431\u044b\u043b \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0432\u00a0\u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u0432\u0435\u0442\u043a\u0443 \u043f\u043e\u0441\u043b\u0435 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\/releases\/tag\/b1287\" rel=\"noopener noreferrer nofollow\">\u044d\u0442\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430<\/a>. \u0412\u00a0\u0441\u043a\u043e\u0440\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044f \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c LoRA.<\/p>\n<h3>\u041f\u043e\u0441\u043b\u0435\u0441\u043b\u043e\u0432\u0438\u0435<\/h3>\n<p>\u0412\u00a0\u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043e\u0434\u0435\u043b\u0438 7B \u043d\u0430\u00a0iPhone 12\u00a0Pro \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u043e\u043a\u043e\u043b\u043e 1\u00a0\u0442\u043e\u043a\u0435\u043d\u0430 \u0432\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0435\u00a0\u0431\u044b\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0446\u0435\u043b\u044f\u0445. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441, \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c \u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u0437\u0430\u00a0\u0432\u0440\u0435\u043c\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, 7B \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Metal \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442 \u0441\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u043c\u043e\u0435\u0433\u043e \u0447\u0442\u0435\u043d\u0438\u044f \u0438\u00a0\u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0438 \u0441\u043a\u043e\u0440\u043e \u0432 \u043d\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 GPT-2\u00a0(Cerebras) \u0441\u00a0Metal \u0438 mmap. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c ruGPT3.5\u00a0\u043e\u0442\u00a0\u0421\u0431\u0435\u0440\u0431\u0430\u043d\u043a\u0430 \u0434\u0430\u0436\u0435 \u043d\u0430\u00a0iPad Pro (\u0443\u0436\u0435 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u043d\u0430 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u0434\u043b\u044f\u00a0Mac).<\/p>\n<p>\u041d\u0430\u00a0\u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u044d\u0442\u0430\u043b\u043e\u043d\u043e\u043c \u043f\u043e\u00a0\u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <span class=\"habrahidden\">(\u0432\u0440\u043e\u0434\u0435 \u0442\u043e\u043b\u044c\u043a\u043e GPTQ \u043d\u0430\u00a0NVidia \u0432\u00a0\u0447\u0435\u043c \u0442\u043e \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u044f \u043d\u0435\u00a0\u043f\u0440\u0430\u0432 \u043f\u043e\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430)<\/span><strong> <\/strong>. \u042f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e\u00a0\u0432\u00a0\u0441\u043a\u043e\u0440\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0438 \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 inference. \u041d\u0435\u0434\u0430\u0432\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 stable\u2011diffusion\u2011cpp, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u00a0GGML. \u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u00a0\u043d\u0435\u043c \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 GPU, \u043d\u043e\u00a0\u044f \u0443\u0432\u0435\u0440\u0435\u043d, \u0447\u0442\u043e\u00a0\u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c. <\/p>\n<p>\u042f \u0440\u0430\u0434 \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u00a0\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0418\u0418. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u043d\u0441\u0442\u0440\u0443\u043e\u0437\u043d\u044b\u0439 ChatGPT \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u0442\u044c \u043b\u0435\u0433\u043a\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0430\u00a0\u041f\u041a \u0438 \u0442\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u00a0\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u041e\u0434\u043d\u0430\u043a\u043e \u0443\u00a0\u043c\u043d\u043e\u0433\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0440 \u0434\u043b\u044f\u00a0\u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438. \u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u00ab\u043f\u043e\u0431\u043e\u043b\u0442\u0430\u0442\u044c\u00bb \u0441\u00a0\u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c \u0443\u0436\u0435 \u0443\u0436\u0435 \u043d\u0430\u0441\u043a\u0443\u0447\u0438\u043b\u043e \u043b\u044e\u0434\u044f\u043c, \u043e\u043d\u0438 \u0441\u0442\u0440\u0435\u043c\u044f\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 \u0434\u043b\u044f\u00a0\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u0427\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0432\u043b\u0435\u0447\u0435\u043d\u043e \u0432\u00a0\u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0442\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u00a0\u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f LLM \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439.<\/p>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0430\u0431\u043e\u0442\u044b: <\/h3>\n<p>ORCA 3B \u043d\u0430 iPhone 12 Pro Max \u0441\u043e\u0447\u0438\u043d\u044f\u0435\u0442 \u043f\u0435\u0441\u043d\u044e \u043f\u0440\u043e \u0425\u0430\u0431\u0440.<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/652454d87f26cf30b3f12b56\" data-style=\"\" id=\"652454d87f26cf30b3f12b56\" width=\"\"><\/div>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/fae\/dbf\/06e\/faedbf06e3b8224961a5646e6452a81b.png\" alt=\"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub\" title=\"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub\" width=\"48\" height=\"48\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fae\/dbf\/06e\/faedbf06e3b8224961a5646e6452a81b.png\"\/><\/p>\n<div><figcaption><a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub<\/a><\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a6e\/3bc\/685\/a6e3bc6856405aff660d4eb04d4ee0e3.png\" alt=\"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 TestFlight\" title=\"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 TestFlight\" width=\"48\" height=\"48\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a6e\/3bc\/685\/a6e3bc6856405aff660d4eb04d4ee0e3.png\"\/><\/p>\n<div><figcaption><a href=\"https:\/\/testflight.apple.com\/join\/6SpPLIVM\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 TestFlight<\/a><\/figcaption><\/div>\n<\/figure>\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\/764598\/\"> https:\/\/habr.com\/ru\/articles\/764598\/<\/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<p>\u041e\u0434\u043d\u0430\u0436\u0434\u044b \u044f \u0440\u0435\u0448\u0438\u043b \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u044f\u0437\u044b\u043a Swift \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f\u00a0iOS. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u044f \u0440\u0435\u0448\u0438\u043b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0441\u044f \u0432\u00a0\u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430\u0448\u0443\u043c\u0435\u0432\u0448\u0435\u0433\u043e <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a>\u043f\u043e\u0434\u00a0iOS. \u042f \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u043f\u0435\u0440\u0435\u0434 \u0441\u043e\u0431\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0443 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a 3B \u0438 7B \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u00a0iPhone 12\u00a0Pro \u0441\u00a0\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e. \u041f\u043e\u0434 \u00ab\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439\u00bb \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u044f \u0438\u043c\u0435\u044e \u0432\u00a0\u0432\u0438\u0434\u0443 \u0442\u0430\u043a\u0443\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435\u00a0\u0443\u0441\u043f\u0435\u0432\u0430\u043b \u0437\u0430\u0441\u043a\u0443\u0447\u0430\u0442\u044c, \u0447\u0438\u0442\u0430\u044f \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c. \u0427\u0442\u043e\u00a0\u0438\u0437\u00a0\u044d\u0442\u043e\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c (\u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438\u00a0\u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u00a0\u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438) \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435. <\/p>\n<p>\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0438\u0441\u0442\u043e\u0440\u0438\u0438. \u041c\u044b\u0441\u043b\u044c \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u043d\u0430\u00a0iOS \u0443\u00a0\u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0432\u044b\u0448\u043b\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/drawthings.ai\/\" rel=\"noopener noreferrer nofollow\">Draw Things<\/a>, \u043f\u0440\u043e\u00a0\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 <a href=\"https:\/\/habr.com\/ru\/companies\/qiwi\/articles\/708504\/\" rel=\"noopener noreferrer nofollow\">\u043f\u0438\u0441\u0430\u043b\u0438 \u043d\u0430\u00a0\u0425\u0430\u0431\u0440\u0435<\/a>. \u041c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0442\u043e, \u0447\u0442\u043e\u00a0\u044f \u043c\u043e\u0433\u0443 \u0431\u0435\u0437\u00a0\u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 (\u0432 \u043f\u043e\u0435\u0437\u0434\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440), \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u00ab\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u0441\u044f\u043a\u043e\u0433\u043e\u00bb \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u0431\u0435\u0437\u00a0\u043f\u043e\u0434\u043f\u0438\u0441\u043e\u043a, \u0446\u0435\u043d\u0437\u0443\u0440\u044b \u0438 \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439. \u042f \u043f\u043e\u0434\u0443\u043c\u0430\u043b: \u0435\u0441\u043b\u0438 Stable Diffusion \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0430\u00a0iOS, \u0442\u043e \u0447\u0442\u043e\u00a0\u043c\u0435\u0448\u0430\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044f\u0437\u044b\u043a\u043e\u0432\u044b\u0435 \u043c\u043e\u0434\u0435\u043b\u0438? \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLM Farm<\/a>. <\/p>\n<h3>\u041e \u043f\u0440\u043e\u0435\u043a\u0442\u0435 LLaMA.cpp<\/h3>\n<p><a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f LLM inference <span class=\"habrahidden\">(\u044f \u0442\u0430\u043a \u0438 \u043d\u0435\u00a0\u0440\u0435\u0448\u0438\u043b \u043a\u0430\u043a\u00a0\u043b\u0443\u0447\u0448\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043a\u0430\u043a\u00a0\u0435\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430 \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0438\u0442\u0435 \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445)<\/span> \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432 LLaMA <span class=\"habrahidden\">(\u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0443\u0436\u0435 \u0438 Falcon \u0438 Starcoder)<\/span> \u0441\u00a0\u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0439, \u043d\u0430\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445. \u041e\u043d \u043e\u0441\u043d\u043e\u0432\u0430\u043d \u043d\u0430\u00a0\u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0439\u0441\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0434\u043b\u044f\u00a0\u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u043c\u00a0\u0436\u0435 \u0430\u0432\u0442\u043e\u0440\u043e\u043c. \u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043e\u00a0\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u043c\u0430\u0448\u0438\u043d\u043d\u044b\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a <a href=\"https:\/\/github.com\/saharNooby\/rwkv.cpp\" rel=\"noopener noreferrer nofollow\">rwkv.cpp<\/a>, <a href=\"https:\/\/github.com\/leejet\/stable-diffusion.cpp\" rel=\"noopener noreferrer nofollow\">stable\u2011diffusion.cpp<\/a>, <a href=\"https:\/\/github.com\/Maknee\/minigpt4.cpp\" rel=\"noopener noreferrer nofollow\">minigpt4.cpp<\/a> \u0438 \u0434\u0440\u0443\u0433\u0438\u0435.<\/p>\n<h3>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430<\/h3>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 LLM inference \u043d\u0430\u00a0iOS \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u044d\u0442\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041d\u0430\u00a0\u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0434\u0430\u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 500\u041c\u0411 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438. \u0412\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u044d\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439, \u043a\u00a0\u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0432\u00a0\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 iOS \u0438 MacOS Apple \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0430 Metal. <\/p>\n<h3>\u0420\u0435\u0448\u0435\u043d\u0438\u0435<\/h3>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437\u00a0\u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u043f\u0430\u043c\u044f\u0442\u0438, \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u044d\u0442\u043e \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435. \u041a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438\u00a0\u2014 \u044d\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u0437\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432\u00a0\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u00a0\u0431\u043e\u043b\u0435\u0435 \u043d\u0438\u0437\u043a\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 8\u00a0\u0431\u0438\u0442\u043d\u044b\u0445 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0432\u043c\u0435\u0441\u0442\u043e 32\u00a0\u0438\u043b\u0438 16\u00a0\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439. <\/p>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0430\u043d <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u0432\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0442 8\u00a0\u0434\u043e 2\u00a0\u0431\u0438\u0442. \u041c\u0435\u0442\u043e\u0434\u044b \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>\u00a0\u0431\u044b\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b, \u0438 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0441\u0430\u043c\u044b\u043c\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 k_quants.c. \u0414\u043b\u044f\u00a0\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u0441\u0442\u0430\u0432\u043a\u0430 \u00abk\u00bb, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 q4_km. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u00a0k_quants \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\/pull\/1684\" rel=\"noopener noreferrer nofollow\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u0412\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\/discussions\/406\" rel=\"noopener noreferrer nofollow\">\u0435\u0441\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/a> \u0441\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u043c\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u00a0\u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0435\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438: <span class=\"habrahidden\">(\u043d\u0435\u043f\u043e\u043b\u043d\u043e\u0442\u044b \u0438\u043b\u0438\u00a0\u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u0431\u0440\u0435\u0434\u0430, \u0442\u0430\u043a \u044f \u043f\u0435\u0440\u0435\u0432\u0435\u043b perplexity)<\/span><\/p>\n<figure class=\"full-width\"><\/figure>\n<details class=\"spoiler\">\n<summary>\u0415\u0449\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b<\/summary>\n<div class=\"spoiler__content\">\n<figure class=\"full-width\">\n<div><figcaption>\u0418\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u044b \u043d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 <a href=\"https:\/\/paperswithcode.com\/dataset\/wikitext-2\" rel=\"noopener noreferrer nofollow\">wikitext2<\/a> \u0441 \u0434\u043b\u0438\u043d\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 512. \u0412\u0440\u0435\u043c\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u0442\u043e\u043a\u0435\u043d \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043e \u043d\u0430 MacBook M1 Pro \u0441 32 \u0413\u0411 \u041e\u0417\u0423 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 4 \u0438 8 \u043f\u043e\u0442\u043e\u043a\u043e\u0432.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><\/figure>\n<figure class=\"full-width\"><\/figure>\n<\/p>\n<\/div>\n<\/details>\n<p>\u0418\u0437\u00a0\u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 8-\u0431\u0438\u0442\u043d\u043e\u0433\u043e \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u00a0\u0443\u0445\u0443\u0434\u0448\u0430\u0435\u0442\u0441\u044f, \u043f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u0438 \u0441\u043e\u043a\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 4\u00a0\u0440\u0430\u0437\u0430 \u043f\u043e\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u00a0\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e F32. \u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u0442\u043e\u043b\u044c\u043a\u043e\u00a0\u0436\u0435 \u043c\u0435\u0441\u0442\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043d\u0430\u00a0\u0434\u0438\u0441\u043a\u0435. \u0421\u0430\u043c\u044b\u043c \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u0435\u0436\u0434\u0443 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u043f\u043e\u0442\u0435\u0440\u0435\u0439 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f 4-\u0431\u0438\u0442\u043d\u043e\u0435 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 <strong>q4_k_m<\/strong>. \u041e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 7B \u043d\u0430\u00a0iPhone \u0441\u00a0\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u044f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <strong>q3_km<\/strong> \u0438\u043b\u0438 <strong>q4_ks<\/strong>, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u0440\u0438\u00a0\u0442\u0430\u043a\u043e\u043c \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043e\u0434\u0435\u043b\u0438, \u0445\u0432\u0430\u0442\u0430\u0435\u0442 Shared RAM \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Metal \u043d\u0430\u00a0iPhone, \u0447\u0442\u043e\u00a0\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. <\/p>\n<p>\u0422\u0430\u043a\u00a0\u0436\u0435 \u0434\u043b\u044f\u00a0\u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c <a href=\"https:\/\/pythonspeed.com\/articles\/reduce-memory-array-copies\/\" rel=\"noopener noreferrer nofollow\">mmap<\/a> \u0444\u0430\u0439\u043b\u043e\u0432. \u042d\u0442\u043e\u0442 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u00a0\u043f\u0430\u043c\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u043e\u00a0\u043c\u0435\u0440\u0435 \u0438\u0445 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438, \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0432\u0441\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0443\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 mmap \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a\u00a0\u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u043c\u044f\u0442\u0438, \u0447\u0442\u043e\u00a0\u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e \u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u00a0\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u0422\u0430\u043a\u00a0\u0436\u0435 \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u0435 3B, \u0431\u0435\u0437\u00a0\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u0433\u043e mmap, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0441 <em>increased<\/em>\u2011<em>memory<\/em>\u2011<em>limit<\/em> entitlements, \u0438\u043d\u0430\u0447\u0435 \u043e\u043d\u043e \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f. \u0412\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u044c\u044e LLaMA-2\u20137B q3_k:<\/p>\n<figure class=\"\">\n<div><figcaption>mmap \u0432\u043a\u043b\u044e\u0447\u0435\u043d<\/figcaption><\/div>\n<\/figure>\n<figure class=\"\">\n<div><figcaption>mmap \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c, \u043d\u0430\u00a0\u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043e\u0431\u044a\u0435\u043c \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u043e\u0439 RAM, \u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0447\u0442\u043e\u00a0LLaMA 2\u00a0\u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u00a0\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0441 128\u00a0\u041c\u0411 RAM, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043e\u0431\u044a\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u043f\u043e\u0434\u00a0mmap \u0444\u0430\u0439\u043b \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>\u041f\u043e\u00a0\u0438\u0442\u043e\u0433\u0443 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438, \u0432\u00a0\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441\u00a0mmap, \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c 3B \u0438 7B \u043c\u043e\u0434\u0435\u043b\u0438, \u0434\u0430\u0436\u0435 \u043d\u0430\u00a0iPhone, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c <a href=\"https:\/\/habr.com\/ru\/articles\/759386\/\" rel=\"noopener noreferrer nofollow\">Saiga2<\/a> \u0438 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u0441\u00a0\u043d\u0435\u0439 \u043d\u0430\u00a0\u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435. <span class=\"habrahidden\">\u041a\u00a0\u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u00a0\u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u00a0Saiga2\u00a0\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u00a0\u043a\u0432\u0430\u043d\u0442\u043e\u0432\u0430\u043d\u0438\u0438, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a\u00a0\u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u00a0\u043c\u043e\u0434\u0435\u043b\u044c 7B q3_k \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0431\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0433\u043b\u0443\u043f\u043e\u0432\u0430\u0442\u043e \u043f\u043e\u00a0\u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441\u00a0q8_0\u00a0(\u0438\u043b\u0438 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043d\u0435\u00a0\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043c\u043f\u0442\u0430).<\/span><\/p>\n<p>\u0412 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f\u00a0\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0438\u0434\u043e\u0432 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a\u00a0CUDA, OpenCL \u0438 <strong>Metal<\/strong>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c. \u0414\u043b\u044f\u00a0\u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b Metal \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430\u00a0iOS, \u044f \u0432\u043d\u0435\u0441 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u00a0\u043a\u043e\u0434 <em>ggml\u2011metal.m<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438\u00a0\u0431\u044b\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0432\u00a0\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f Metal \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 3B q4_k \u0438 7B q3_k \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043d\u0430\u00a0iPhone 12\u00a0pro \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439. \u041f\u0440\u0438\u043c\u0435\u0440 \u0435\u0441\u0442\u044c \u0432\u00a0\u0432\u0438\u0434\u0435\u043e \u043d\u0438\u0436\u0435.<\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0441\u0435 \u043d\u0430 iOS<\/h3>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 C, <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>\u00a0\u2014 \u043d\u0430\u00a0C++, ggml\u2011metal\u00a0\u2014 \u043d\u0430\u00a0Objective C, \u0430\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043d\u0430\u00a0Swift. \u0414\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0438\u0445 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u0430\u043a\u0435\u0442 <a href=\"https:\/\/github.com\/guinmoon\/llmfarm_core.swift\" rel=\"noopener noreferrer nofollow\">llmfarm_core.swift<\/a>, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. <\/p>\n<p>\u041f\u0435\u0440\u0432\u0430\u044f\u00a0\u2014 <strong>llmfarm_core_cpp<\/strong>\u00a0\u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0434 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>, <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a>\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 inference, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0430\u0445 C, C++ \u0438 Objective C. <\/p>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f\u00a0\u2014 <strong>llmfarm_core<\/strong>\u00a0\u2014 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 Swift \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 llmfarm_core_cpp, \u0430\u00a0\u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f\u00a0\u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \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 \u0441\u00a0LLM. <\/p>\n<p>\u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a>\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0440\u0430\u043d\u044c\u0448\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a. \u041a\u0440\u043e\u043c\u0435 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u043d\u0430\u00a0\u043e\u0441\u043d\u043e\u0432\u0435 GGML \u0442\u0430\u043a\u0436\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u0440\u0443\u0433\u0438\u0435 inference, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0gptneox, rwkv \u0438 \u0434\u0440. \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a>. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 inference, \u0438 \u043d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 Metal \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 inference, \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 Swift, \u043d\u0430\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u044b \u043e\u0442\u00a0\u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 <strong>LLMBase<\/strong>. \u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 inference:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/articles\/722780\/\" rel=\"noopener noreferrer nofollow\">LLaMa<\/a> <a href=\"https:\/\/huggingface.co\/models?other=llama-2\" rel=\"noopener noreferrer nofollow\">(2)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/falconllm.tii.ae\/\" rel=\"noopener noreferrer nofollow\">Falcon<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/BlinkDL\/rwkv-4-raven\" rel=\"noopener noreferrer nofollow\">RWKV<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/docs\/transformers\/model_doc\/gpt_neox\" rel=\"noopener noreferrer nofollow\">GPTNeoX<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/docs\/transformers\/model_doc\/gpt2\" rel=\"noopener noreferrer nofollow\">GPT-2<\/a> (<a href=\"https:\/\/www.cerebras.net\/model-lab\/\" rel=\"noopener noreferrer nofollow\">Cerebras<\/a>)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/replit\/replit-code-v1_5-3b\" rel=\"noopener noreferrer nofollow\">Replit<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/huggingface.co\/blog\/starcoder\" rel=\"noopener noreferrer nofollow\">StarCoder<\/a> (<a href=\"https:\/\/huggingface.co\/bigcode\/santacoder\" rel=\"noopener noreferrer nofollow\">SantaCoder<\/a>)<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f\u00a0\u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/guinmoon\/LLMFarm\" rel=\"noopener noreferrer nofollow\">LLMFarm<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0437 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>. \u042d\u0442\u0438 \u043c\u0435\u0442\u043e\u0434\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f\u00a0llama, \u043d\u043e\u00a0\u0438 \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445 inference, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u0445\u043e\u0434\u043d\u044b\u0435 \u0438 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435. \u0412\u00a0\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u00a0LLMFarm \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2306.01286\" rel=\"noopener noreferrer nofollow\">Temperature<\/a> (temp, tok-k, top-p)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.trentonbricken.com\/Tail-Free-Sampling\/\" rel=\"noopener noreferrer nofollow\">Tail Free Sampling<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2202.00666\" rel=\"noopener noreferrer nofollow\">Locally Typical Sampling<\/a>\u00a0<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/arxiv.org\/abs\/2007.14966\" rel=\"noopener noreferrer nofollow\">Mirostat<\/a>\u00a0<\/p>\n<\/li>\n<li>\n<p>Greedy<\/p>\n<\/li>\n<li>\n<p>Grammar<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u0430\u00a0\u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 Metal \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0435 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp<\/a>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e llama, falcon \u0438 starcoder. <a href=\"https:\/\/github.com\/guinmoon\/llmfarm_core.swift\" rel=\"noopener noreferrer nofollow\">LLMFarm_core<\/a>\u00a0\u0431\u044b\u043b \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 SPM. \u0412\u00a0\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442\u00a0\u0431\u044b\u0441\u0442\u0440\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0447\u0430\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043d\u0435\u00a0\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u044d\u043c\u043f\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u00a0\u0442.\u00a0\u0434. \u0422\u0430\u043a\u00a0\u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 prompt \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430\u00a0\u043f\u043e\u0434\u043e\u0431\u0438\u0438:<\/p>\n<pre><code class=\"1c\">[INST] &lt;&lt;SYS>> You are a helpful, respectful and honest assistant. Always answer as helpfully as possible.  If you don't know the answer to a question, please don't share false information. &lt;&lt;\/SYS>> {{prompt}}[\/INST]<\/code><\/pre>\n<h3>\u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u043e\u0437\u043d\u0438\u043a\u0448\u0438\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435<\/h3>\n<h4>\u0412\u0435\u0440\u0441\u0438\u0438 GGML<\/h4>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0447\u0435\u043d\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e, \u043d\u043e\u00a0\u0435\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 <strong>\u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b<\/strong> \u0434\u0440\u0443\u0433 \u0441\u00a0\u0434\u0440\u0443\u0433\u043e\u043c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 inference, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0gpt-2, gptneox, replit, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f\u00a0\u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0432\u00a0\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a\u00a0\u0432\u00a0rwkv \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0430\u00a0\u0432 <a href=\"https:\/\/github.com\/ggerganov\/llama.cpp\" rel=\"noopener noreferrer nofollow\">LLaMA.cpp <\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430\u044f \u0441\u0432\u0435\u0436\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u0430 \u0441\u00a0\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u043c\u0438. \u0422\u0430\u043a \u043a\u0430\u043a\u00a0\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u00a0\u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0435,\u00a0\u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u0435. \u042f \u0440\u0435\u0448\u0438\u043b \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0443\u0442\u0435\u043c\u00a0\u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0437\u0430\u043c\u0435\u043d\u044b \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0434\u043e\u043b\u0436\u043d\u043e\u00a0\u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e\u0435\u00bb \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0440\u0435\u043a\u0442\u0438\u0432\u044b \u043f\u0440\u0435\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438\u043b\u0438\u00a0\u043b\u0438\u043d\u043a\u043e\u0432\u0449\u0438\u043a\u0430. <span class=\"habrahidden\">(\u042f \u043d\u0435\u00a0\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442 \u043f\u043e\u00a0C++, \u0430\u00a0\u043d\u0430\u00a0Swift \u043f\u0438\u0448\u0443 \u0432\u043f\u0435\u0440\u0432\u044b\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043d\u043e\u0433\u0438\u0435 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u0430\u0436\u0443\u0442\u0441\u044f \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u043c\u0438 \u0434\u043b\u044f\u00a0\u0434\u0440\u0443\u0433\u0438\u0445, \u0434\u043b\u044f\u00a0\u043c\u0435\u043d\u044f\u00a0\u0431\u044b\u043b\u0438 \u043d\u043e\u0432\u044b\u043c\u0438. \u0415\u0441\u043b\u0438 \u043a\u0442\u043e\u2011\u0442\u043e \u0437\u043d\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0438\u0437\u044f\u0449\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u044f \u0431\u0443\u0434\u0443 \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u0435\u043d, \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0438\u043c \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.)<\/span><\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0431\u044b\u0441\u0442\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0441\u0442\u0430\u0440\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445 ggml<\/figcaption><\/div>\n<\/figure>\n<h4>\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h4>\n<p><a href=\"https:\/\/github.com\/ggerganov\/ggml\" rel=\"noopener noreferrer nofollow\">GGML<\/a> \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u00a0\u044f\u0437\u044b\u043a\u0435 \u0421, \u0433\u0434\u0435 \u043d\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u0412\u00a0\u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 <strong>null<\/strong> \u0438\u043b\u0438\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430\u0441\u044c \u043d\u0435\u0443\u0434\u0430\u0447\u0435\u0439, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f <em>GGML_ASSERT<\/em>, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c: <\/p>\n<pre><code class=\"cpp\">#define GGML_ASSERT(x) \\    do { \\        if (!(x)) { \\            fprintf(stderr, \"GGML_ASSERT: %s:%d: %s\\n\", __FILE__, __LINE__, #x); \\            abort(); \\        } \\    } while (0)<\/code><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0439, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u043d\u0430\u00a0C \u0438 C++, \u0430\u00a0\u0442\u0430\u043a\u00a0\u0436\u0435 Objective\u2011C \u0438 C++ \u0438 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0441\u00a0\u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 try\u2011catch \u0432\u00a0Objective\u2011C. \u0422\u0435\u043f\u0435\u0440\u044c, \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0434 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u041a\u043e\u0434 \u043d\u0430 C++<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"cpp\">\/\/ ggml.h #include \"exception_helper.h\" #define GGML_ASSERT(x) \\     do { \\         if (!(x)) { \\             fprintf(stderr, \"GGML_ASSERT: %s:%d: %s\\n\", __FILE__, __LINE__, #x); \\             char descr[500]; \\             sprintf(descr, \"GGML_ASSERT: %s:%d: %s\\n\", __FILE__, __LINE__, #x);\\             throw_exception(descr); \\         } \\     } while (0)  \/\/  exception_helper.h #ifdef __cplusplus #define EXTERNC extern \"C\" #else #define EXTERNC #endif EXTERNC void<\/code><\/pre>\n<\/div>\n<\/details>\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-356334","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/356334","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=356334"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/356334\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=356334"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=356334"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=356334"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}