{"id":478364,"date":"2026-05-03T09:15:43","date_gmt":"2026-05-03T09:15:43","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=478364"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=478364","title":{"rendered":"\u041a\u0430\u043a \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u043d\u0430 DGX Spark \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 AI-\u0441\u0435\u0440\u0432\u0435\u0440, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e, \u0447\u0442\u043e \u0442\u0443\u0434\u0430 \u0432\u043e\u0448\u043b\u043e"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0423 \u043c\u0435\u043d\u044f \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0437\u043e\u043b\u043e\u0442\u0438\u0441\u0442\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 Mac mini. \u0412\u043d\u0443\u0442\u0440\u0438 \u2014 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 AI-\u0441\u0435\u0440\u0432\u0435\u0440: \u0447\u0430\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 26B-\u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0430\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u043c\u043e\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 GPU-\u043f\u0430\u0440\u0441\u0438\u043d\u0433\u043e\u043c, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 Dify, RAGFlow \u0434\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 PDF, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u0431\u044d\u043a\u0430\u043f\u044b, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d \u043f\u043e QSFP 200G. \u0422\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 <\/em><code><em>sudo bash <\/em><\/code><a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\"><code><em>install.sh<\/em><\/code><\/a><em>, \u043d\u043e\u043b\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0432\u043d\u0435\u0448\u043d\u0438\u043c API.<\/em><\/p>\n<p><em>\u042f \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u043d\u0435 \u043a\u0430\u043a pet-project, \u0430 \u043f\u043e\u0434 \u0441\u0435\u0431\u044f \u2014 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430\u043c\u0438 \u0438 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438 \u043f\u0440\u0438 \u043a\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u044b. \u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u043c \u2014 \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0433\u043e AGmind, \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 GitHub \u043f\u043e\u0434 Apache 2.0.<\/em><\/p>\n<p><em>\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443:<\/em><\/p>\n<p><em>\u2014 \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u043d \u0441\u0442\u0435\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442; \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 RAGFlow \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u0438 \u0447\u0442\u043e \u044f \u0442\u0443\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043b; \u2014 \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0434\u0432\u0443\u0445 Spark&#8217;\u043e\u0432; \u2014 \u043f\u044f\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0433\u0440\u0430\u0431\u0435\u043b\u044c GB10, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043b\u043e\u0432\u0438\u043b \u0432\u0435\u0447\u0435\u0440\u0430\u043c\u0438; \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 Claude Code \u0437\u0430 \u043c\u0435\u0441\u044f\u0446 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430.<\/em><\/p>\n<h3> \u0417\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0439 AI-\u0441\u0435\u0440\u0432\u0435\u0440    <\/h3>\n<p>\u041e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u044b \u2014 OpenAI, Anthropic, Gemini \u2014 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0440\u0443\u0436\u0443. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b, \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u044b, \u043c\u0435\u0434\u043a\u0430\u0440\u0442\u044b, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u044b \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 compliance-\u043e\u0444\u0438\u0446\u0435\u0440 \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 SaaS, \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e. \u042d\u0442\u043e \u043d\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448 TLS \u0443 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0447\u0443\u0436\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043c\u0430\u0436\u043a\u0430\u043c.<\/p>\n<p>Self-hosted-\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u044f \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u043b \u0440\u0443\u043a\u0430\u043c\u0438. Open WebUI \u2014 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0442, \u043d\u043e \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043b\u043e\u0445\u043e. Dify \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 workflow-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0438 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u0444\u0440\u043e\u043d\u0442, \u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 PDF \u0441\u043b\u0430\u0431\u044b\u0439: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043b\u044b\u0432\u0443\u0442, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u044e\u0442, \u043c\u043d\u043e\u0433\u043e\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f. RAGFlow \u2014 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440, \u043d\u043e UI \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0443\u043f\u0430\u044e\u0442 Dify. AnythingLLM, FlowiseAI, LangFlow \u2014 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u043e\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432.<\/p>\n<p>\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0434\u043d\u043e: \u0447\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 200 PDF-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e \u043d\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0442, \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 drag-n-drop, \u0438 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b\u043e\u0441\u044c \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0438 \u0442\u0430\u043a \u0436\u0435 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0431\u044d\u043a\u0430\u043f\u0438\u043b\u043e\u0441\u044c. \u041a\u0443\u0431\u0438\u043a\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 open-source \u0435\u0441\u0442\u044c, \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u2014 \u043d\u0435\u0442. \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f AGmind.<\/p>\n<h2> \u0416\u0435\u043b\u0435\u0437\u043e: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 DGX Spark \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445  <\/h2>\n<p>DGX Spark \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 AI-\u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043e\u0442 NVIDIA \u043d\u0430 \u0447\u0438\u043f\u0435 GB10 Grace Blackwell. \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u043c\u0430\u0440\u0442\u0435 2025 \u043a\u0430\u043a Project DIGITS, \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u0438 15 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2025. \u0421\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u0446\u0435\u043d\u0430 $3999, \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 2026 \u0438\u0437-\u0437\u0430 \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u0430 LPDDR5x \u043f\u043e\u0434\u043d\u044f\u043b\u0438 \u0434\u043e $4699.<\/p>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e SoC \u0441\u0438\u0434\u044f\u0442:<\/p>\n<p>\u2014 20-\u044f\u0434\u0435\u0440\u043d\u044b\u0439 ARM-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 (10 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 Cortex-X925 + 10 \u044d\u043d\u0435\u0440\u0433\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 Cortex-A725, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b NVIDIA \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 MediaTek); \u2014 Blackwell GPU c compute capability sm_121: 48 SM, 6144 CUDA-\u044f\u0434\u0440\u0430, 192 \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0440\u0430 \u043f\u044f\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f; \u2014 128 \u0413\u0411 \u043f\u0430\u043c\u044f\u0442\u0438 LPDDR5x \u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e 273 \u0413\u0411\/\u0441 \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u043a\u043e\u0433\u0435\u0440\u0435\u043d\u0442\u043d\u044b\u0439 \u043f\u0443\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0438\u0434\u044f\u0442 \u0438 CPU, \u0438 GPU \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0433\u043e PCIe-\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f; \u2014 \u0434\u0432\u0430 QSFP-\u043f\u043e\u0440\u0442\u0430 \u043d\u0430 200 \u0413\u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 (NVIDIA ConnectX-7), \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0432\u0430 Spark&#8217;\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440.<\/p>\n<p>\u041f\u043e \u0447\u0438\u0441\u0442\u043e\u0439 GPU-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u0436\u0434\u0443 RTX 5070 \u0438 5070 Ti. \u0421\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u043d\u0435 \u0432 FLOPs, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 128 \u0413\u0411 unified memory: \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u0437\u0430 $4 \u0442\u044b\u0441\u044f\u0447\u0438 \u044f \u043c\u043e\u0433\u0443 \u0438\u043d\u0444\u0435\u0440\u0438\u0442\u044c 70B-\u043c\u043e\u0434\u0435\u043b\u044c \u0432 FP4 \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u0448\u0430\u0440\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u0427\u0442\u043e \u0443 \u044d\u0442\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0431\u043e\u043b\u0438\u0442 \u2014 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b. Spark \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 \u0432\u0435\u0442\u043a\u0435 580.x; \u043d\u0430 590+ NVIDIA \u0441\u043b\u043e\u0432\u0438\u043b\u0430 \u0442\u0440\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f unified memory GB10:<\/p>\n<p>\u2014 vLLM \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u0442 \u043d\u0430 CUDAGraph capture \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0435. \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 eugr\/spark-vllm-docker, \u0442\u0430\u043c \u0432 README \u043f\u0440\u044f\u043c\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u00abdriver 580.x, \u043d\u0430 590.x deadlock\u00bb; \u2014 \u0443\u0442\u0435\u0447\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 590.48.01: \u043f\u043e\u0441\u043b\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f CUDA-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 80 \u0413\u0411, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0438 \u0432 <code>AnonPages<\/code>, \u043d\u0438 \u0432 <code>Slab<\/code>, \u043d\u0438 \u0432 <code>PageTables<\/code>; \u043b\u0435\u0447\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439; \u2014 TMA-\u0431\u0430\u0433 \u0432 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 595.58.03 \u0432\u0430\u043b\u0438\u0442 NVFP4-\u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0441 <code>illegal memory access<\/code>.<\/p>\n<p>\u0412 \u043c\u043e\u0451\u043c <a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\"><code>install.sh<\/code><\/a> \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 <code>apt-mark hold nvidia-driver-580-open<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0430\u0440\u0430\u043d\u043e\u0439\u044f, \u0430 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 <code>unattended-upgrades<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442 590, \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0443\u0442\u0440\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043c\u0451\u0440\u0442\u0432\u0443\u044e vLLM.<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: \u0447\u0442\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0442\u0435\u043a \u0438 \u0437\u0430\u0447\u0435\u043c<\/h3>\n<p> \u0421\u0442\u0435\u043a \u0443 \u043c\u0435\u043d\u044f \u0436\u0438\u0432\u0451\u0442 \u0432 \u0434\u043e\u043a\u0435\u0440\u0435 \u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0438\u0437 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. <\/p>\n<h4>Dify \u2014 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 workflow<\/h4>\n<p>Dify (<code>langgenius\/dify-api:1.13.3<\/code>) \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0436\u0438\u0432\u0443. \u042d\u0442\u043e open-source-\u0430\u043d\u0430\u043b\u043e\u0433 LangChain Studio \u043f\u043b\u044e\u0441 ChatGPT-like \u0447\u0430\u0442, \u043f\u043b\u044e\u0441 drag-n-drop \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u0423 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c workflow-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u043e\u0434\u0430\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0438\u043f\u0430 \u00ab\u043f\u043e\u043b\u0443\u0447\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u2192 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 RAGFlow \u2192 \u0441\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0438\u0440\u0443\u0439 gemma-4 \u2192 \u043e\u0442\u043f\u0440\u0430\u0432\u044c \u0432 Telegram\u00bb, \u0438 \u044d\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0431\u0435\u0437 \u043a\u043e\u0434\u0430.<\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Dify \u043a\u0430\u043a primary frontend (<code>agmind-dify.local<\/code>), \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e vLLM, \u0432 RAGFlow \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0437 marketplace \u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 OpenAI-compatible endpoint. \u0421\u0430\u043c Dify \u2014 \u044d\u0442\u043e \u043f\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: api, worker, web, sandbox, plugin_daemon.<\/p>\n<h4>RAGFlow \u2014 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441 \u043d\u0443\u043b\u044f \u043f\u043e\u0434 Spark<\/h4>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0434\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. Upstream-RAGFlow \u0432 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 DGX Spark \u2014 \u0442\u0430\u043c \u0438 x86-only \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 ONNX-\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u044b, \u0438 \u043a\u0443\u0447\u0430 \u043c\u0435\u043b\u043e\u0447\u0435\u0439. \u0413\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u043f\u043e\u0434 arm64 + sm_121 + CUDA 13 \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u043d\u0435\u0442.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u0437\u044f\u043b \u0431\u0430\u0437\u0443 \u0438\u0437 \u043f\u0430\u0442\u0447\u0435\u0439 <strong>HendrikSchoettle\/ragflow-dgx-spark<\/strong> (\u0442\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0443 \u043d\u0430 ARM), \u043d\u0430\u043a\u0430\u0442\u0438\u043b \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0432\u043e\u0438 cherry-pick&#8217;\u0438 \u0438\u0437 upstream main \u0438 \u0441\u043e\u0431\u0440\u0430\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 <code>ar2r223\/ragflow-spark:v0.24.1-spark<\/code>, \u0437\u0430\u043f\u0438\u043d\u043d\u0438\u043b \u043f\u043e SHA256, \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u0432 DockerHub.<\/p>\n<p>\u0412 \u0441\u0431\u043e\u0440\u043a\u0435:<\/p>\n<p>\u2014 <strong>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 v0.24.0<\/strong> + \u043f\u0430\u0442\u0447\u0438 Hendrik: cascade-OCR \u043d\u0430 Latin \/ Cyrillic \/ Chinese (\u0432\u0430\u0436\u043d\u043e \u2014 \u0432 upstream \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439), file metadata \u0432 ES-\u0447\u0430\u043d\u043a\u0430\u0445, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 AVIF, \u0444\u0438\u043a\u0441\u044b IMAP \u0438 WebDAV mtime, ONNX Runtime GPU 1.25.0 \u043f\u043e\u0434 aarch64 + CUDA 13 + sm_121; \u2014 <strong>Cherry-pick \u0438\u0437 upstream main (\u043e\u0442 27 \u0430\u043f\u0440\u0435\u043b\u044f)<\/strong>: TokenChunker (\u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b + image_context), TitleChunker (5 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 regex-\u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u043b\u044f \u043a\u043d\u0438\u0433, \u0437\u0430\u043a\u043e\u043d\u043e\u0432, \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432), pdf_chunk_<a href=\"http:\/\/metadata.py\" rel=\"noopener noreferrer nofollow\">metadata.py<\/a>, extract_pdf_outlines, 7 ingestion-\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 (book \/ general \/ laws \/ manual \/ one \/ paper \/ resume); \u2014 <strong>\u041c\u043e\u0438 runtime-\u043f\u0430\u0442\u0447\u0438<\/strong>: \u0440\u0443\u0441\u0441\u043a\u0438\u0439 prompt \u0434\u043b\u044f image describe \u0432 <code>cv_<\/code><a href=\"http:\/\/model.py\" rel=\"noopener noreferrer nofollow\"><code>model.py<\/code><\/a> (\u043a\u043e\u0433\u0434\u0430 \u0443 KB language=Russian, vision-\u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 prompt \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e), \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432 10 ingestion-\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445, \u043f\u043b\u044e\u0441 \u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u0433\u0430 <code>Pipeline.globals<\/code> \u0432 Hendrik fork v0.24, \u0433\u0434\u0435 Pipeline \u043d\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043e\u0442 Canvas \u0438 \u0432\u0430\u043b\u0438\u043b\u0441\u044f \u0441 AttributeError \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0447\u0430\u043d\u043a\u0435.<\/p>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 RAGFlow \u0443\u043c\u0435\u0435\u0442 \u043d\u0430 \u043c\u043e\u0451\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 PDF \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 vision-\u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 Elasticsearch 9.x. \u041e\u0431\u0440\u0430\u0437 ~13.3 \u0413\u0411, \u0442\u044f\u043d\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437.<\/p>\n<p>Apropos \u2014 \u0442\u044d\u0433 <code>:latest<\/code> \u0432 \u043c\u043e\u0451\u043c <code>versions.env<\/code> \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d, \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0438\u043d\u044f\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438, \u043b\u0438\u0431\u043e \u043f\u043e digest. \u042d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 CI: \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0435 LLM \u043b\u044e\u0431\u044f\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u00ab\u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435\u00bb \u0442\u0435\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 registry. \u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e Claude Code.<\/p>\n<h4>vLLM \u2014 \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438<\/h4>\n<p>\u041d\u0430 GB10 \u0443 \u043c\u0435\u043d\u044f \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 vLLM:<\/p>\n<p>\u2014 <strong>vLLM (LLM)<\/strong> \u2014 <code>vllm\/vllm-openai:gemma4-cu130<\/code>, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 google\/gemma-4-26B-A4B-it. \u042d\u0442\u043e NVIDIA playbook-\u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0434 arm64 \u0438 sm_121, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 gemma-4 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 Spark. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e <code>gpu_memory_utilization=0.60<\/code> \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0437\u0430\u043f\u0430\u0441 \u0434\u043b\u044f docling-serve, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0438\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0434\u043e 16 \u0413\u0411; \u2014 <strong>vLLM (embeddings)<\/strong> \u2014 <code>nvcr.io\/nvidia\/vllm:26.02-py3<\/code>, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 <code>deepvk\/USER-bge-m3<\/code>. \u042d\u0442\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 bge-m3, \u0430 \u0444\u0430\u0439\u043d\u0442\u044e\u043d\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442 deepvk, \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043b\u0443\u0447\u0448\u0435; \u2014 <strong>vLLM (reranker)<\/strong> \u2014 \u0442\u043e \u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0435 NGC-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 <code>BAAI\/bge-reranker-v2-m3<\/code> \u0434\u043b\u044f \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 26.02-py3, \u0430 \u043d\u0435 26.03? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 26.03 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 595.45+, \u0430 \u0443 \u043d\u0430\u0441 580.142, \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c (\u0441\u043c. \u0432\u044b\u0448\u0435). \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0434\u0438\u043d gotcha \u0442\u044f\u043d\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439.<\/p>\n<p>\u0410\u0442\u0435\u043d\u0448\u043d-\u0431\u044d\u043a\u0435\u043d\u0434 \u044f \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e <code>VLLM_ATTENTION_BACKEND=TRITON_ATTN<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e FlashInfer FP8 \u043d\u0430 sm_121 \u0432\u0430\u043b\u0438\u0442\u0441\u044f \u0441 <code>kernel only supports sm120<\/code> \u2014 \u044d\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0431\u0430\u0433 \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u0439 compute capability.<\/p>\n<h4>Docling \u2014 \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 GPU OCR<\/h4>\n<p>Docling-serve (<code>docling-serve-cu130:v1.16.1<\/code>) \u2014 \u044d\u0442\u043e GPU-\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 IBM. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 PDF \/ DOCX \/ PPTX \/ XLSX, \u043e\u0442\u0434\u0430\u0451\u0442 Markdown \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a.<\/p>\n<p>\u0412 \u0441\u0442\u0435\u043a\u0435 \u0443 \u043c\u0435\u043d\u044f \u0442\u0440\u0438 preset&#8217;\u0430 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<p>\u2014 <strong>FAST<\/strong> \u2014 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 PDF \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c text layer (Word\/LaTeX export). \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 OCR \u0438 table-structure recognition, \u043d\u0430 5-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0439 arxiv-\u0441\u0442\u0430\u0442\u044c\u0435 \u0434\u0430\u0451\u0442 4.05 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 6.01 \u0432 default; \u2014 <strong>BALANCED<\/strong> (default) \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 pipeline, OCR \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0441\u043b\u0438 text layer \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439, TableFormer \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 accurate-\u0440\u0435\u0436\u0438\u043c\u0435; \u2014 <strong>SCAN<\/strong> \u2014 \u0434\u043b\u044f \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u0435\u0437 text layer. \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 easyocr \u0441 <code>lang=[ru, en]<\/code> \u0438 picture_description \u0447\u0435\u0440\u0435\u0437 vLLM gemma-4 vision \u0441 concurrency=8, \u043f\u043e \u043c\u043e\u0438\u043c \u0437\u0430\u043c\u0435\u0440\u0430\u043c \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441.<\/p>\n<p>Docling \u0434\u0435\u043b\u0438\u0442 GPU \u0441 vLLM, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 <code>gpu_memory_utilization=0.60<\/code> \u0443 LLM-\u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430.<\/p>\n<h4>\u0411\u0430\u0437\u044b \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435<\/h4>\n<p>\u0422\u0443\u0442 \u0431\u0435\u0437 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432:<\/p>\n<p>\u2014 <strong>PostgreSQL 16-alpine<\/strong> \u2014 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 Dify, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432; \u2014 <strong>Redis 7.4<\/strong> \u2014 task queue, \u043a\u044d\u0448 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, pub\/sub \u0434\u043b\u044f celery; \u2014 <strong>Weaviate 1.37<\/strong> \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u043e\u0434 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438 (\u0435\u0441\u0442\u044c toggle \u043d\u0430 Qdrant, \u043d\u043e \u0434\u0435\u0444\u043e\u043b\u0442 Weaviate); \u2014 <strong>MinIO<\/strong> \u2014 S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b (<code>agmind-storage.local<\/code>); \u2014 <strong>Elasticsearch 9.x<\/strong> \u2014 \u043d\u0443\u0436\u0435\u043d RAGFlow, \u0432 \u043d\u0451\u043c \u0447\u0430\u043d\u043a\u0438 + \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441. RAGFlow \u0436\u0451\u0441\u0442\u043a\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430 ES, Postgres \u043e\u043d \u043d\u0435 \u0443\u043c\u0435\u0435\u0442; \u2014 <strong>MySQL 8.0<\/strong> \u2014 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434 RAGFlow, \u0443 \u043d\u0438\u0445 \u0432 \u0441\u0445\u0435\u043c\u0435 MySQL \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d.<\/p>\n<h4>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0430<\/h4>\n<p>\u0411\u0435\u0437 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441\u0442\u0435\u043a \u0438\u0437 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u2014 \u044d\u0442\u043e \u0441\u043b\u0435\u043f\u0430\u044f \u043b\u043e\u0448\u0430\u0434\u044c. \u0423 \u043c\u0435\u043d\u044f:<\/p>\n<p>\u2014 <strong>Prometheus + Grafana 3001<\/strong> \u0441 \u0434\u0435\u0441\u044f\u0442\u044c\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438 (\u043e\u0431\u0449\u0438\u0439 \u043e\u0431\u0437\u043e\u0440, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, GPU master, GPU worker, peer-worker, \u043b\u043e\u0433\u0438, \u0430\u043b\u0435\u0440\u0442\u044b, \u0430\u0443\u0434\u0438\u0442, RAG-\u043c\u0435\u0442\u0440\u0438\u043a\u0438, RAGFlow). \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u043e\u043b\u044c: \u043d\u0430 GB10 unified memory <code>dcgm-exporter<\/code> \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c, \u0430 NVML \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 N\/A \u043d\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 textfile collector, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0430\u0440\u0441\u0438\u0442 <code>nvidia-smi<\/code> \u0438 \u043e\u0442\u0434\u0430\u0451\u0442 <code>agmind_gpu_*<\/code> \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 node-exporter; \u2014 <strong>Loki + Grafana Alloy<\/strong> \u2014 \u043b\u043e\u0433\u0438 \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0432 \u0430\u043f\u0440\u0435\u043b\u0435 \u043f\u0435\u0440\u0435\u0432\u0451\u043b \u0441 Promtail \u043d\u0430 Alloy (\u044d\u0442\u043e \u0443\u0436\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0439 \u0430\u0433\u0435\u043d\u0442); \u2014 <strong>Alertmanager<\/strong> \u2014 \u043a\u0430\u043d\u0430\u043b\u044b \u0432 Telegram \u0438 webhook; \u2014 <strong>Portainer 2.39<\/strong> \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u043d\u0430 master + \u0430\u0432\u0442\u043e\u0434\u0435\u043f\u043b\u043e\u0439 \u0430\u0433\u0435\u043d\u0442\u0430 \u043d\u0430 peer Spark \u0441 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 <code>PORTAINER_AGENT_SECRET<\/code> (\u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0435 \u043b\u043e\u043c\u0430\u043b\u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0443); \u2014 <strong>fail2ban + UFW<\/strong> \u2014 firewall LAN-only \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 bruteforce.<\/p>\n<h4>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c<\/h4>\n<p>\u0418\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438:<\/p>\n<p>\u2014 \u0432\u0441\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u043b\u0435\u0436\u0430\u0442 \u0432 <code>\/opt\/agmind\/credentials.txt<\/code> \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 600, root-only; \u2014 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432 compose \u0441\u0434\u0440\u043e\u043f\u0430\u043d\u043e 30+ Linux-capabilities; \u2014 Dify Sandbox \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 Docker-\u0441\u0435\u0442\u0438 <code>ssrf-network<\/code>, \u043d\u0430\u0440\u0443\u0436\u0443 \u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 Squid-\u043f\u0440\u043e\u043a\u0441\u0438 (\u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 SSRF \u0432 \u043f\u043b\u0430\u0433\u0438\u043d\u0430\u0445); \u2014 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f Authelia \u0441 TOTP\/WebAuthn \u043d\u0430 Grafana \u0438 Portainer; \u2014 <code>agmind rotate-secrets<\/code> \u043f\u0435\u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u043a\u043b\u044e\u0447\u0438 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439.<\/p>\n<h3>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0434\u0432\u0443\u0445 Spark&#8217;\u043e\u0432<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0434\u0432\u0435 Spark-\u043c\u0430\u0448\u0438\u043d\u044b, AGmind \u0438\u0445 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u0435\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043f\u043e QSFP 200G DAC. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0430\u043c\u044f\u0442\u044c\u00bb \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u0435\u0441\u0435\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a: vLLM \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 GPU \u0431\u0435\u0437 \u043e\u0433\u043b\u044f\u0434\u043a\u0438 \u043d\u0430 \u043f\u0430\u0440\u0441\u0435\u0440.<\/p>\n<pre><code>  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510                        \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u2502  spark-master       \u2502   QSFP 200G DAC        \u2502  spark-peer         \u2502  \u2502  (frontend + \u0411\u0414 +   \u2502 \u25c4\u2500\u2500\u2500\u2500 direct link \u2500\u2500\u2500\u2500\u25ba\u2502  (\u0442\u043e\u043b\u044c\u043a\u043e vLLM,      \u2502  \u2502  Dify + RAGFlow +   \u2502   192.168.100.0\/24     \u2502  \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 GPU,    \u2502  \u2502  monitoring)        \u2502                        \u2502  128K context)      \u2502  \u2502  WAN: ethernet      \u2502                        \u2502  WAN: NAT \u0447\u0435\u0440\u0435\u0437     \u2502  \u2502  iptables MASQUERADE\u2502 \u2500\u2500\u2500\u2500\u2500\u2500\u2500 default gw \u2500\u2500\u2500\u25ba\u2502  master \u043f\u043e QSFP     \u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518                        \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0427\u0442\u043e \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c:<\/p>\n<p>\u2014 <strong>\u041d\u0430 single-Spark<\/strong> vLLM \u0434\u0435\u043b\u0438\u0442 GPU \u0441 docling, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0432\u0438\u0437\u0430\u0440\u0434\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (32K \/ 64K \/ 128K) \u2014 \u043d\u0430 128K \u043f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 \u0443\u0436\u0435 \u0432\u043f\u0440\u0438\u0442\u044b\u043a; \u2014 <strong>\u041d\u0430 dual-Spark<\/strong> \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f: peer \u043a\u0440\u0443\u0442\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e vLLM, GPU \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e, 128K \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0431\u0435\u0437 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043e\u0432; \u2014 <strong>NAT-on-demand<\/strong> \u2014 peer \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0432 WAN \u0447\u0435\u0440\u0435\u0437 QSFP master&#8217;\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e (\u0442\u044f\u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u0438\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438), \u043f\u043e\u0442\u043e\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>agmind nat off<\/code> WAN \u043e\u0442\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f, \u0438 intent air-gap \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u041f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u0436\u0435\u043b\u0435\u0437\u043e \u0441\u0442\u043e\u0438\u0442 \u0432 \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438, \u0430 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u043d\u0443\u0436\u0435\u043d \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e \u043d\u0430 \u0430\u043f\u0434\u0435\u0439\u0442; \u2014 <strong>\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/strong> \u2014 <code>sudo bash <\/code><a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\"><code>install.sh<\/code><\/a> \u043d\u0430 \u043e\u0431\u0435\u0438\u0445 \u043d\u043e\u0434\u0430\u0445, \u0432\u0438\u0437\u0430\u0440\u0434 \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0440\u043e\u043b\u044c \u0447\u0435\u0440\u0435\u0437 LLDP, \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u2014 fallback \u043d\u0430 ping. \u0414\u043b\u044f CI \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c <code>--mode=master<\/code> \u0438\u043b\u0438 <code>--mode=worker<\/code> \u044f\u0432\u043d\u043e; \u2014 <strong>Passwordless SSH<\/strong> \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0434\u0430\u043c\u0438 \u0432\u0438\u0437\u0430\u0440\u0434 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 \u0441\u0430\u043c, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0432 Grafana \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438 <code>gpu-master<\/code> \u0438 <code>gpu-worker<\/code>.<\/p>\n<h3>\u0427\u0442\u043e \u044f \u0441 \u044d\u0442\u0438\u043c \u0432\u0441\u0435\u043c \u0434\u0435\u043b\u0430\u044e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438<\/h3>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u044e <code>agmind-dify.local<\/code> \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u2014 \u0438:<\/p>\n<p><strong>\u0427\u0430\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 26B-\u043c\u043e\u0434\u0435\u043b\u044c\u044e.<\/strong> TTFT 183 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f 23\u201324 \u0442\u043e\u043a\u0435\u043d\u0430 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430 \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435, \u0434\u043e 50 \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043d\u0430 \u0442\u0440\u0451\u0445 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 65K \u0441 FP8 KV-\u043a\u044d\u0448\u0435\u043c, \u0434\u043e 45 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u043b\u0438\u043c\u0438\u0442\u043e\u0432, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430\u0440\u0443\u0436\u0443.<\/p>\n<p><strong>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u044e \u043f\u0430\u043f\u043a\u0443 \u0441 PDF \u2014 \u0437\u0430\u0434\u0430\u044e \u043f\u043e \u043d\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u044b.<\/strong> \u041f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c RAGFlow \u043f\u0430\u0440\u0441\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0432\u044b\u0434\u0438\u0440\u0430\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043f\u0440\u043e\u0433\u043e\u043d\u044f\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 vision-\u043c\u043e\u0434\u0435\u043b\u044c (gemma-4 vision \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c), \u043d\u0430\u0440\u0435\u0437\u0430\u0435\u0442 \u043d\u0430 \u0447\u0430\u043d\u043a\u0438, \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438 \u0432 Weaviate. \u041a\u043e\u0433\u0434\u0430 \u044f \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e \u2014 bge-m3 \u0438\u0449\u0435\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0447\u0430\u043d\u043a\u0438, bge-reranker \u0441\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442, gemma-26B \u043f\u0438\u0448\u0435\u0442 \u043e\u0442\u0432\u0435\u0442 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a.<\/p>\n<p><strong>\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u043e\u0432.<\/strong> \u041d\u0443\u0436\u0435\u043d \u0430\u0433\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437 \u0432 \u0434\u0435\u043d\u044c \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u043f\u0438\u0441\u044c\u043c\u0430 \u0438\u0437 Gmail, \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0438\u0445, \u0432\u0430\u0436\u043d\u044b\u0435 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u0432 Notion, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0432 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442 \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 Telegram, \u2014 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 Dify \u0437\u0430 \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 drag-n-drop, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0438 \u043a\u043e\u0434\u0430.<\/p>\n<p><strong>\u0411\u044d\u043a\u0430\u043f.<\/strong> <code>sudo agmind backup<\/code> \u2014 \u0441\u043d\u0438\u043c\u043e\u043a Postgres, Redis, \u0432\u0441\u0435\u0445 volume&#8217;\u043e\u0432 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432. \u041e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 age, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e upload \u043f\u043e SSH \u043d\u0430 peer-\u043c\u0430\u0448\u0438\u043d\u0443.<\/p>\n<h3>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0447\u0435\u0441\u0442\u043d\u044b\u0445 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u0445<\/h3>\n<p>\u0411\u0435\u0437 \u0447\u0438\u0441\u0435\u043b \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043f\u0440\u043e self-hosted AI \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u044b\u0439.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u0435\u0442\u0440\u0438\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">gemma-4-26B-A4B-it (MoE)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TTFT (streaming)<\/p>\n<\/td>\n<td>\n<p align=\"left\">183 \u043c\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TPS (1 \u0437\u0430\u043f\u0440\u043e\u0441)<\/p>\n<\/td>\n<td>\n<p align=\"left\">23\u201324 \u0442\u043e\u043a\/\u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">TPS (3 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445)<\/p>\n<\/td>\n<td>\n<p align=\"left\">~50 \u0442\u043e\u043a\/\u0441 \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">65K (FP8 KV-cache)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Max concurrency @ 65K<\/p>\n<\/td>\n<td>\n<p align=\"left\">45 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0430\u043c\u044f\u0442\u044c: \u0432\u0435\u0441\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">48.5 GiB (bfloat16)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0430\u043c\u044f\u0442\u044c: KV-cache<\/p>\n<\/td>\n<td>\n<p align=\"left\">41.7 GiB (FP8)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Total footprint<\/p>\n<\/td>\n<td>\n<p align=\"left\">~95 GiB<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">Docling (5-page arxiv PDF)<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0412\u0440\u0435\u043c\u044f<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Cold start<\/p>\n<\/td>\n<td>\n<p align=\"left\">6.04 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Warm<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.6 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Per-page (warm)<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.32 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">284-page PDF, \u0431\u0435\u0437 VLM<\/p>\n<\/td>\n<td>\n<p align=\"left\">88 \u0441<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u043e\u0442 \u0436\u0435 PDF, \u0441 VLM concurrency=8<\/p>\n<\/td>\n<td>\n<p align=\"left\">191 \u0441<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0440\u043e\u0447\u0435\u0435<\/p>\n<\/th>\n<th>\n<p align=\"left\">\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u043b\u043d\u044b\u0439 <a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\">install.sh<\/a> \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">~30 \u043c\u0438\u043d\u0443\u0442 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f 52 \u0413\u0411 \u0432\u0435\u0441\u043e\u0432)<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<p>bash<\/p>\n<pre><code>git clone https:\/\/github.com\/botAGI\/AGmind.gitcd AGmindsudo bash install.sh<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u0438\u0437\u0430\u0440\u0434 \u0437\u0430\u0434\u0430\u0451\u0442 10\u201315 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432: single-Spark \u0438\u043b\u0438 dual-Spark, \u043a\u0430\u043a\u0443\u044e LLM (\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e gemma-4, \u043b\u0438\u0431\u043e curated-\u0441\u043f\u0438\u0441\u043e\u043a Qwen \/ Llama \/ Mistral \/ phi-4, \u043b\u0438\u0431\u043e custom HuggingFace), \u043a\u0430\u043a\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b (RAGFlow, Open WebUI, LiteLLM, SearXNG, DB-GPT, Crawl4AI, Authelia 2FA), \u043a\u0443\u0434\u0430 \u0431\u044d\u043a\u0430\u043f\u0438\u0442\u044c\u0441\u044f. \u0427\u0435\u0440\u0435\u0437 ~25 \u043c\u0438\u043d\u0443\u0442 \u0441\u0442\u0435\u043a \u0436\u0438\u0432\u043e\u0439, \u0432\u0441\u0435 credentials \u043b\u0435\u0436\u0430\u0442 \u0432 <code>\/opt\/agmind\/credentials.txt<\/code> \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 600.<\/p>\n<p>Day-2-\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p>bash<\/p>\n<pre><code>agmind status              # \u0441\u0435\u0440\u0432\u0438\u0441\u044b, GPU, \u043c\u043e\u0434\u0435\u043b\u0438, \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044bagmind doctor              # \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430agmind logs &lt;service&gt;      # \u0442\u0435\u0439\u043b \u043b\u043e\u0433\u043e\u0432agmind ragflow status      # \u0442\u0440\u0438 ragflow-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 + ES healthagmind docling bench &lt;pdf&gt; # cold\/warm\/per-page \u0442\u0430\u0439\u043c\u0438\u043d\u0433agmind upgrade --diff      # \u0447\u0442\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u043e \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e pinned-\u0432\u0435\u0440\u0441\u0438\u0439agmind backup              # Postgres + Redis + volumesagmind rotate-secrets      # \u043f\u0435\u0440\u0435\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u043a\u043b\u044e\u0447\u0438<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h3>\u041f\u044f\u0442\u044c \u0433\u0440\u0430\u0431\u0435\u043b\u044c GB10, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b<\/h3>\n<p>\u0427\u0430\u0441\u044b \u043f\u043e\u0442\u0435\u0440\u044c \u0447\u0435\u0441\u0442\u043d\u044b\u0435. \u041a\u0430\u0436\u0434\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u2014 \u044d\u0442\u043e \u0432\u0435\u0447\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043c\u0435\u0441\u0442\u043e \u00ab\u0434\u043e\u043f\u0438\u043b\u0438\u0442\u044c \u0444\u0438\u0447\u0443\u00bb \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0441\u044f \u0432 \u00ab\u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u00bb.<\/p>\n<h4>1. 502 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043f\u043e\u0441\u043b\u0435 force-recreate (\u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0434\u0432\u0430 \u0434\u043d\u044f)<\/h4>\n<p>\u042f \u043f\u0438\u0441\u0430\u043b nginx-\u043a\u043e\u043d\u0444\u0438\u0433 \u043f\u043e \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u0445: <code>upstream agmind_api { server api:5001; }<\/code> \u043f\u043b\u044e\u0441 <code>proxy_pass <\/code><a href=\"http:\/\/agmind_api\" rel=\"noopener noreferrer nofollow\"><code>http:\/\/agmind_api<\/code><\/a>. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u043d\u0443\u0442\u044c Dify api \u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0451\u043d\u043d\u044b\u043c <code>.env<\/code> \u0447\u0435\u0440\u0435\u0437 <code>docker compose up -d --force-recreate api<\/code>. \u041f\u043e\u043b\u0443\u0447\u0438\u043b 502 \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u041b\u043e\u0433\u0438 api \u0437\u0434\u043e\u0440\u043e\u0432\u044b, \u0441\u0430\u043c api \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043d\u0430 curl \u043f\u043e \u043d\u043e\u0432\u043e\u043c\u0443 IP, nginx \u2014 502.<\/p>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u043d\u043e\u0432\u044b\u0439 api \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043d\u043e\u0432\u044b\u0439 IP (\u0431\u044b\u043b <code>.5<\/code>, \u0441\u0442\u0430\u043b <code>.7<\/code>), \u0430 nginx upstream-\u0431\u043b\u043e\u043a \u0437\u0430\u043a\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043b \u0441\u0442\u0430\u0440\u044b\u0439 IP \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435. \u0414\u043e\u0431\u0430\u0432\u0438\u043b <code>resolver 127.0.0.11 valid=10s;<\/code> (Docker embedded DNS) \u2014 \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u043b\u043e. \u0415\u0449\u0451 \u0447\u0430\u0441 \u0434\u0435\u0431\u0430\u0433\u0430: <code>resolver<\/code> \u0432\u043b\u0438\u044f\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 <code>proxy_pass $variable<\/code>, \u0430 \u043d\u0430 upstream-\u0431\u043b\u043e\u043a\u0438 \u0438 \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 <code>proxy_pass <\/code><a href=\"http:\/\/name\" rel=\"noopener noreferrer nofollow\"><code>http:\/\/name<\/code><\/a> \u2014 \u043d\u0435\u0442. \u042d\u0442\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 nginx \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043d\u043e \u043c\u0435\u043b\u043a\u0438\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0451 \u0447\u0435\u0440\u0435\u0437 variable form:<\/p>\n<p>nginx<\/p>\n<pre><code>location \/api {    set $u_dify_api http:\/\/api:5001;    proxy_pass $u_dify_api;}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0431\u0440\u0430\u0442\u044c <code>upstream {}<\/code>-\u0431\u043b\u043e\u043a\u0438. \u0421\u0435\u0439\u0447\u0430\u0441 \u0432 <code>templates\/nginx.conf.template<\/code> \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0436\u0451\u0441\u0442\u043a\u043e\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u0438 \u0440\u0435\u0432\u044c\u044e: \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e <code>proxy_pass http:\/\/&lt;name&gt;<\/code> \u0431\u0435\u0437 <code>$<\/code>. \u0420\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 force-recreate api \u0441\u0435\u0440\u0432\u0438\u0441 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 200 \u0431\u0435\u0437 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430 nginx.<\/p>\n<h4>2. \u0417\u043e\u043c\u0431\u0438-\u0437\u0430\u0434\u0430\u0447\u0438 \u0432 Redis \u043f\u043e\u0441\u043b\u0435 force-recreate (\u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0434\u0432\u0430 \u0447\u0430\u0441\u0430)<\/h4>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0431\u043e\u043b\u044c\u0448\u043e\u0439 PDF \u043d\u0430 280 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0447\u0435\u0440\u0435\u0437 docling, \u0432\u0438\u0441\u0438\u0442 \u0432 <code>processing<\/code> \u0434\u0435\u0441\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442. \u041f\u043e\u0434\u0443\u043c\u0430\u043b \u2014 worker \u0437\u0430\u0432\u0438\u0441, \u0441\u0434\u0435\u043b\u0430\u043b <code>docker compose up -d --force-recreate worker<\/code>. \u0412\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0447\u0430\u0441 \u2014 \u0437\u0430\u0434\u0430\u0447\u0430 \u0432\u0441\u0451 \u0435\u0449\u0451 <code>processing<\/code>. \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a. \u0422\u0430 \u0436\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u041b\u044e\u0431\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e \u0432\u0438\u0441\u0438\u0442 \u0432 <code>waiting<\/code>, GPU idle.<\/p>\n<p>\u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0432 \u043c\u043e\u0438\u0445 \u0436\u0435 <code>force-recreate<\/code>&#8216;\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0432 Redis stale-state: \u043a\u043b\u044e\u0447\u0438 <code>generate_task_belong:&lt;task_id&gt;<\/code> (TTL 1800), pub\/sub-\u043a\u0430\u043d\u0430\u043b\u044b <code>\/1.celeryev<\/code> \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u044b \u043a hostname <code>celery@OLDID<\/code>, \u043d\u043e\u0432\u044b\u0439 worker \u0438\u0445 \u043d\u0435 \u0447\u0438\u0442\u0430\u0435\u0442. Recreate = \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u043d\u043e\u0432\u044b\u043c hostname. Redis \u043d\u0438\u0447\u0435\u0433\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442.<\/p>\n<p>\u041b\u0435\u0447\u0438\u0442\u0441\u044f \u0442\u0430\u043a:<\/p>\n<p>bash<\/p>\n<pre><code>redis-cli -a $PW -n 0 --scan --pattern 'generate_task_belong:*' | \\  xargs redis-cli -a $PW -n 0 DELredis-cli -a $PW -n 1 --scan --pattern 'celery-task-meta-*' | \\  xargs redis-cli -a $PW -n 1 DEL<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>FLUSHDB<\/code> \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442\u0441\u044f ACL \u0434\u0430\u0436\u0435 \u0434\u043b\u044f default user \u2014 \u044d\u0442\u043e security hardening, \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d \u0442\u043e\u043b\u044c\u043a\u043e <code>DEL by key<\/code>. \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u2014 \u043c\u0435\u043d\u044f\u0442\u044c env \u0447\u0435\u0440\u0435\u0437 <code>docker restart api worker<\/code>, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 <code>recreate<\/code>.<\/p>\n<h4>3. mDNS self-collision (\u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0447\u0430\u0441)<\/h4>\n<p>\u0425\u043e\u0442\u0435\u043b, \u0447\u0442\u043e\u0431\u044b <code>agmind-dify.local<\/code>, <code>agmind-rag.local<\/code>, <code>agmind-storage.local<\/code> \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043b\u0438\u0441\u044c \u0432 \u043e\u0434\u043d\u0443 \u043c\u0430\u0448\u0438\u043d\u0443. \u041f\u043e\u043b\u043e\u0436\u0438\u043b \u0442\u0440\u0438 \u0430\u043b\u0438\u0430\u0441\u0430 \u0432 <code>\/etc\/avahi\/hosts<\/code> \u043d\u0430 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 IP. Avahi \u043f\u0438\u0448\u0435\u0442 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b: <code>Local name collision<\/code>. \u0421 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0430\u043b\u0438\u0430\u0441\u044b \u043d\u0435 \u0440\u0435\u0437\u043e\u043b\u0432\u044f\u0442\u0441\u044f.<\/p>\n<p>\u0427\u0430\u0441 \u0434\u0435\u0431\u0430\u0433\u0430. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u044d\u0442\u043e self-collision \u0432\u043d\u0443\u0442\u0440\u0438 avahi: \u0434\u0435\u043c\u043e\u043d \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 <code>$(hostname).local \u2192 192.168.1.42<\/code> \u043a\u0430\u043a primary address record, \u0438 \u043a\u043e\u0433\u0434\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e alias \u043d\u0430 \u0442\u043e\u0442 \u0436\u0435 IP, avahi \u0432\u0438\u0434\u0438\u0442 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f record&#8217;\u0430\u043c\u0438 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e IP \u2014 \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 probe \u0432 \u0441\u0435\u0442\u044c.<\/p>\n<p>\u0424\u0438\u043a\u0441 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>avahi-publish-address -R name.local IP<\/code> \u0447\u0435\u0440\u0435\u0437 systemd-\u043e\u0431\u0451\u0440\u0442\u043a\u0443, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u044e\u043d\u0438\u0442\u0443 \u043d\u0430 \u0430\u043b\u0438\u0430\u0441. <code>\/etc\/avahi\/hosts<\/code> \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0438\u043c\u0451\u043d \u0441 \u0434\u0440\u0443\u0433\u0438\u043c IP.<\/p>\n<p>\u0411\u043e\u043d\u0443\u0441-\u0431\u0430\u0433 \u043a \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438: \u0432\u0442\u043e\u0440\u043e\u0439 mDNS-respond&#8217;\u0435\u0440 \u043d\u0430 UDP\/5353 \u043b\u043e\u043c\u0430\u0435\u0442 avahi \u043c\u043e\u043b\u0447\u0430. NoMachine \u0441 <code>EnableLocalNetworkBroadcast 1<\/code>, iTunes\/Bonjour \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043f\u043e\u0440\u0442. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>sudo ss -ulnp | grep 5353<\/code> \u2014 \u0442\u0430\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e avahi.<\/p>\n<h4>4. Distroless-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0431\u0435\u0437 shell (\u043f\u043e\u0442\u0435\u0440\u044f\u043b \u043f\u043e\u043b\u0447\u0430\u0441\u0430)<\/h4>\n<p>Loki, redis_exporter, nginx-prometheus-exporter \u2014 distroless-\u043e\u0431\u0440\u0430\u0437\u044b. \u0423 \u043d\u0438\u0445 \u043d\u0435\u0442 <code>\/bin\/sh<\/code>. Healthcheck \u0447\u0435\u0440\u0435\u0437 <code>CMD-SHELL wget ...<\/code> \u0432\u044b\u0434\u0430\u0451\u0442 <code>stat \/bin\/sh: no such file or directory<\/code>, \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430\u0432\u0435\u0447\u043d\u043e \u0432\u0438\u0441\u0438\u0442 <code>unhealthy<\/code>, \u0445\u043e\u0442\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0438 \u043e\u0442\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 compose <code>depends_on: { redis_exporter: { condition: service_healthy } }<\/code> \u2014 \u0441\u0442\u0435\u043a \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u0434\u043b\u044f distroless-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 Prometheus <code>up{job=...}<\/code>, \u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 docker healthcheck.<\/p>\n<h4>5. APT \u0438 truncated downloads (\u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0432\u0435\u0447\u0435\u0440)<\/h4>\n<p>\u042d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u0440\u043e AGmind, \u0430 \u043f\u0440\u043e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u041d\u043e \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u043d\u0435\u043f\u043e\u043b\u043d\u0430\u044f.<\/p>\n<p><code>apt-get install -y linux-firmware<\/code> (\u044d\u0442\u043e 603-\u043c\u0435\u0433\u0430\u0431\u0430\u0439\u0442\u043d\u044b\u0439 deb \u0434\u043b\u044f arm64) \u2014 <code>dpkg -i<\/code> \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u00ab\u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0435\u0446 \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043f\u043e\u0442\u043e\u043a\u0430\u00bb. SHA256 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442. <code>--reinstall<\/code> \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442, <code>apt-get clean<\/code> \u043d\u0435 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442. <code>stat<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 632 \u041c\u0411, <code>curl -sI<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 Content-Length 634 \u041c\u0411. \u0424\u0430\u0439\u043b \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442\u0441\u044f \u043d\u0430 ~2 \u041c\u0411 \u0434\u043e \u043a\u043e\u043d\u0446\u0430.<\/p>\n<p>Curl \u043f\u043e HTTP \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 truncated body \u043a\u0430\u043a \u0443\u0441\u043f\u0435\u0445 \u2014 HTTP 200, Connection closed \u0434\u043e \u043a\u043e\u043d\u0446\u0430 Content-Length, \u0434\u043b\u044f curl \u044d\u0442\u043e \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0444\u0438\u043d\u0430\u043b. \u0413\u0434\u0435-\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u043c\u043e\u0438\u043c \u0445\u043e\u0441\u0442\u043e\u043c \u0438 upstream-\u0437\u0435\u0440\u043a\u0430\u043b\u043e\u043c \u0441\u0438\u0434\u0438\u0442 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u0439 \u043f\u0440\u043e\u043a\u0441\u0438 \u0438\u043b\u0438 CDN, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0436\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0432\u0435\u0437\u0434\u0435 HTTPS. TLS \u0442\u0440\u0435\u0431\u0443\u0435\u0442 <code>close_notify<\/code> alert \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438, \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d \u043d\u0435 \u043f\u0440\u0438\u0448\u0451\u043b, \u043a\u043b\u0438\u0435\u043d\u0442 \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e body \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043c\u0435\u043d\u044b <a href=\"http:\/\/ports.ubuntu.com\" rel=\"noopener noreferrer nofollow\"><code>http:\/\/ports.ubuntu.com<\/code><\/a> \u043d\u0430 <code>https:\/\/<\/code> \u0432\u0441\u0451 \u0441\u0442\u0430\u043b\u043e \u043a\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u0447\u0438\u0441\u0442\u043e.<\/p>\n<p>\u042f \u0443\u0437\u043d\u0430\u043b \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0443\u0436\u0435 \u0445\u043e\u0442\u0435\u043b \u043f\u0435\u0440\u0435\u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u0421\u0438\u0434\u0435\u043b \u0438 \u0434\u0443\u043c\u0430\u043b \u2014 \u044d\u0442\u043e \u0447\u0442\u043e, \u044f \u0436\u0435\u043b\u0435\u0437\u043e \u043f\u0440\u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u043f\u043e\u043a\u0430\u043b\u0435\u0447\u0438\u043b?<\/p>\n<h3>\u041c\u0435\u0441\u044f\u0446 \u0441 Claude Code: \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435<\/h3>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u0432 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u2014 \u043d\u0435 \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0435\u043a \u044f \u0441\u043e\u0431\u0440\u0430\u043b, \u0430 \u043a\u0430\u043a \u044f \u0435\u0433\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u043b. \u042f \u043d\u0435 \u043f\u0438\u0441\u0430\u043b \u043a\u043e\u0434 \u0440\u0443\u043a\u0430\u043c\u0438. \u0422\u043e\u0447\u043d\u0435\u0435, \u043f\u0438\u0441\u0430\u043b, \u043d\u043e \u0432 \u043e\u0431\u044a\u0451\u043c\u0435 \u043e\u0434\u043d\u043e\u0439-\u0434\u0432\u0443\u0445 \u0441\u0442\u0440\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u0447\u0442\u043e-\u0442\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u043e\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u0412\u0441\u0435 88 \u041a\u0411 <a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\"><code>install.sh<\/code><\/a>, \u0432\u0441\u0435 16 lib-\u043c\u043e\u0434\u0443\u043b\u0435\u0439, \u0432\u0441\u0435 nginx-\u0448\u0430\u0431\u043b\u043e\u043d\u044b, \u0432\u0441\u0435 Python-\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b Claude Code.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0435 \u00abChatGPT, \u0434\u0430\u0439 \u0441\u043d\u0438\u043f\u043f\u0435\u0442\u00bb. Claude Code \u2014 \u044d\u0442\u043e CLI-\u0430\u0433\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0447\u0438\u0442\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u043a\u0438, \u0433\u043e\u043d\u044f\u0435\u0442 \u0442\u0435\u0441\u0442\u044b, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 PR. \u041e\u043d \u0441\u0430\u043c \u0432\u0438\u0434\u0438\u0442 \u043c\u043e\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0441\u0430\u043c \u043f\u043e\u043c\u043d\u0438\u0442, \u0447\u0442\u043e \u0432 \u043a\u0430\u043a\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435. \u042f \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043e\u043d \u0435\u0451 \u0434\u0435\u043b\u0430\u0435\u0442.<\/p>\n<p>\u041e \u0441\u0435\u0431\u0435 \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430: \u0443\u0447\u0438\u043b\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u043b\u0435\u0442 12\u201315 \u043d\u0430\u0437\u0430\u0434 \u043f\u0438\u0441\u0430\u043b \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0435, \u043f\u043e\u0442\u043e\u043c \u0443\u0448\u0451\u043b \u0432 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438 \u0434\u0435\u0441\u044f\u0442\u044c \u043b\u0435\u0442 \u0440\u0443\u043a\u0438 \u0434\u043e \u043a\u043e\u0434\u0430 \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0434\u043e\u0445\u043e\u0434\u0438\u043b\u0438. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0435 \u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c, \u0434\u0438\u0444\u0444\u044b \u044f \u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0440\u0430\u0437\u0443\u0447\u0438\u043b\u0441\u044f, \u043d\u043e \u0441\u0435\u0441\u0442\u044c \u0438 \u043d\u0430\u043a\u0430\u0442\u0430\u0442\u044c \u0442\u044b\u0441\u044f\u0447\u0443 \u0441\u0442\u0440\u043e\u043a bash \u0441 \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u044b\u043c wizard&#8217;\u043e\u043c \u2014 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u0441\u0430\u0434\u0438\u043b\u0441\u044f. \u0422\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435 \u0431\u044b\u043b\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0438\u043c\u0435\u044f AI-\u0430\u0433\u0435\u043d\u0442\u0430 \u0432 \u0440\u043e\u043b\u0438 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0430 \u0440\u0443\u0442\u0438\u043d\u0435.<\/p>\n<p>\u0427\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u0445\u043e\u0440\u043e\u0448\u043e: bash-\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0441 edge-case&#8217;\u0430\u043c\u0438 (\u0432 <a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\"><code>install.sh<\/code><\/a> \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0440\u044b\u0442\u043e \u043e\u043a\u043e\u043b\u043e \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0445\u043e\u0441\u0442\u0430 \u2014 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u044f, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 credentials, \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 peer, \u0437\u0430\u043d\u044f\u0442\u044b\u0439 \u043f\u043e\u0440\u0442 5353, \u0431\u0438\u0442\u044b\u0439 apt-cache); \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u043e\u0434 mock&#8217;\u0438 \u0434\u043b\u044f cluster-mode; \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f (\u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u2014 \u044f \u0434\u0438\u043a\u0442\u0443\u044e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435, Claude \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442, \u044f \u0432\u044b\u0447\u0438\u0442\u044b\u0432\u0430\u044e).<\/p>\n<p>\u0427\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043f\u043b\u043e\u0445\u043e. <strong>LLM \u0432\u0440\u0443\u0442, \u0438 \u044d\u0442\u043e \u043d\u0435 \u043b\u0435\u0447\u0438\u0442\u0441\u044f.<\/strong> \u0421\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u2014 Claude \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b <code>minio\/minio:RELEASE.2026-02-01T00-00-00Z<\/code> \u043a\u0430\u043a \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0438\u043d MinIO. \u0422\u044d\u0433 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e: timestamp \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0440\u0435\u043b\u0438\u0437\u0430\u043c\u0438. <code>docker compose config<\/code> \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0435\u0433\u043e \u043a\u0430\u043a \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439. \u041f\u0440\u0438 <code>docker compose up<\/code> \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 <code>manifest unknown<\/code>, \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0430\u043b\u0438\u0442\u0441\u044f \u043d\u0430 9-\u0439 \u0444\u0430\u0437\u0435 \u0438\u0437 11.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u044f \u0432 <a href=\"http:\/\/CLAUDE.md\" rel=\"noopener noreferrer nofollow\"><code>CLAUDE.md<\/code><\/a> (\u044d\u0442\u043e \u0444\u0430\u0439\u043b \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0433\u043e Claude \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0438\u0442\u0430\u0435\u0442 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0438) \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0436\u0438\u0440\u043d\u043e: \u00abLLM \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u0442\u044d\u0433\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 registry. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 &#171;\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e&#187;. \u0422\u043e\u043b\u044c\u043a\u043e <code>docker manifest inspect<\/code> \u043f\u0435\u0440\u0435\u0434 commit\u00bb. \u0418 \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442 <code>tests\/compose\/test_image_tags_<\/code><a href=\"http:\/\/exist.sh\" rel=\"noopener noreferrer nofollow\"><code>exist.sh<\/code><\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 image:tag \u0432 registry. \u0422\u0435\u043f\u0435\u0440\u044c \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0430\u0446\u0438\u0438 \u043b\u043e\u0432\u044f\u0442\u0441\u044f \u0432 CI.<\/p>\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438.<\/strong> \u041a\u0430\u0436\u0434\u0430\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 \u043b\u0438\u0441\u0442. \u0415\u0441\u043b\u0438 \u044f \u043d\u0435 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u00ab\u043d\u0435 \u0434\u0435\u043b\u0430\u0439 force-recreate \u0432\u043e \u0432\u0440\u0435\u043c\u044f RAG-\u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438, \u044d\u0442\u043e \u043b\u043e\u043c\u0430\u0435\u0442 Redis-state, \u044f \u0443\u0436\u0435 \u0442\u0435\u0440\u044f\u043b \u0434\u0432\u0430 \u0447\u0430\u0441\u0430\u00bb, \u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u044d\u0442\u043e \u0441\u043d\u043e\u0432\u0430 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442. \u0411\u0435\u0437 <a href=\"http:\/\/CLAUDE.md\" rel=\"noopener noreferrer nofollow\"><code>CLAUDE.md<\/code><\/a> \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u0421\u0435\u0439\u0447\u0430\u0441 \u0443 \u043c\u0435\u043d\u044f \u0442\u0430\u043c 200 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0441\u0442\u0440\u043e\u043a \u043f\u0440\u0430\u0432\u0438\u043b, \u0438 \u043a\u0430\u0436\u0434\u043e\u0435 \u2014 \u0432\u044b\u0441\u0442\u0440\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0444\u0430\u043a\u0430\u043f\u043e\u043c. \u0420\u0430\u0437\u0434\u0435\u043b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00abLearned the hard way\u00bb.<\/p>\n<p><strong>\u0418\u043d\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b.<\/strong> \u0413\u043e\u0432\u043e\u0440\u0438\u0448\u044c \u00ab\u043f\u043e\u043f\u0440\u0430\u0432\u044c \u0431\u0430\u0433 \u0432 OCR\u00bb \u2014 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u043e\u0442\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442 \u0442\u0440\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b code smell. \u0418\u043d\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0438\u043d\u043e\u0433\u0434\u0430 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0447\u0443 \u043f\u0430\u0442\u0447, \u0430 \u043d\u0435 PR \u043d\u0430 \u0432\u043e\u0441\u0435\u043c\u044c\u0441\u043e\u0442 \u0441\u0442\u0440\u043e\u043a. \u041b\u0435\u0447\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0442 \u0436\u0435 <a href=\"http:\/\/CLAUDE.md\" rel=\"noopener noreferrer nofollow\"><code>CLAUDE.md<\/code><\/a>: \u00ab\u043d\u0435 \u043f\u0440\u0430\u0432\u044c \u0442\u043e, \u043e \u0447\u0451\u043c \u0442\u0435\u0431\u044f \u043d\u0435 \u043f\u0440\u043e\u0441\u0438\u043b\u0438\u00bb.<\/p>\n<h3>\u0427\u0442\u043e \u044f \u0432\u044b\u043d\u0435\u0441 \u043f\u0440\u043e AI-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443<\/h3>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c: <strong>AI-\u0430\u0433\u0435\u043d\u0442 \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0435\u0431\u044f \u0443\u043c\u043d\u0435\u0435. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0435\u0431\u044f \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0432 \u0442\u043e\u043c, \u0432 \u0447\u0451\u043c \u0442\u044b \u0443\u0436\u0435 \u0445\u043e\u0442\u044c \u043a\u0430\u043a-\u0442\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u0448\u044c\u0441\u044f.<\/strong><\/p>\n<p>\u0415\u0441\u043b\u0438 \u044f \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043f\u043e\u0447\u0435\u043c\u0443 <code>proxy_pass <\/code><a href=\"http:\/\/name\" rel=\"noopener noreferrer nofollow\"><code>http:\/\/name<\/code><\/a> \u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f \u043d\u0430 force-recreate, \u0430 <code>proxy_pass $variable<\/code> \u2014 \u043d\u0435\u0442, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 Claude \u043c\u043d\u0435 \u044d\u0442\u043e \u0441\u0430\u043c \u043d\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442. \u041e\u043d \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434, \u044f \u0435\u0433\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e, \u043e\u043d\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u0438 \u044f \u043d\u0435 \u043f\u043e\u0439\u043c\u0443, \u043f\u043e\u0447\u0435\u043c\u0443. \u0415\u0441\u043b\u0438 \u0436\u0435 \u044f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u2014 Claude \u043d\u0430\u043f\u0438\u0448\u0435\u0442 nginx-\u043a\u043e\u043d\u0444\u0438\u0433 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u043c \u0437\u0430 \u043c\u0438\u043d\u0443\u0442\u0443 \u0432\u043c\u0435\u0441\u0442\u043e \u0447\u0430\u0441\u0430.<\/p>\n<p>\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0441\u043e \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c. \u0411\u0435\u0437 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d Docker, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 systemd-\u044e\u043d\u0438\u0442, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 HTTP, \u044f \u0431\u044b \u043d\u0435 \u043e\u0442\u043b\u0438\u0447\u0438\u043b \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434 \u043e\u0442 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e-\u0441-\u0432\u0438\u0434\u0443. Claude \u2014 \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u042d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u044b\u0439 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0438\u043d\u0443\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u0443, \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c. \u0418 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 \u043d\u0435\u0442 \u2014 \u043d\u0438\u043a\u0430\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0435\u0433\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442, \u0445\u043e\u0442\u044c \u043e\u043d\u0430 \u0438 \u043f\u0438\u0448\u0435\u0442 \u043a\u043e\u0434 \u0432 \u0434\u0435\u0441\u044f\u0442\u044c \u0440\u0430\u0437 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0442\u0435\u0431\u044f.<\/p>\n<p>\u0413\u0434\u0435 \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0443\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435: \u0432 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u0433\u0434\u0435 \u0443 \u0442\u0435\u0431\u044f \u0435\u0441\u0442\u044c \u0432\u0438\u0434\u0435\u043d\u0438\u0435, \u043e\u043f\u044b\u0442 \u0447\u0438\u0442\u0430\u0442\u044c \u0447\u0443\u0436\u043e\u0439 \u043a\u043e\u0434, \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u2014 \u043d\u043e \u043d\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438 \u043d\u0435\u0442 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0420\u0430\u043d\u044c\u0448\u0435 \u043e\u0434\u0438\u043d \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c MVP \u0437\u0430 \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432. \u0421\u0435\u0439\u0447\u0430\u0441 \u2014 production-grade \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0437\u0430 30 \u0434\u043d\u0435\u0439. \u0423 \u043c\u0435\u043d\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 86 \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432, 32 \u0442\u044b\u0441\u044f\u0447\u0438 \u0441\u0442\u0440\u043e\u043a, 30 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0438 \u044d\u0442\u043e \u043d\u0435 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u0444\u0440\u0430\u0437\u0430, \u0430 git log. \u0414\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f:<\/p>\n<p>\u2014 \u0447\u0451\u0442\u043a\u043e\u0435 \u0432\u0438\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 (\u043d\u0435 \u00ab\u0434\u0430\u0439 \u043c\u043d\u0435 \u0443\u043c\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443\u00bb, \u0430 \u00abwizard \u043d\u0430 10 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432, \u0438\u0434\u0435\u043c\u043f\u043e\u0442\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c, \u043e\u0442\u043a\u0430\u0442 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435, \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 SLO\u00bb); \u2014 <a href=\"http:\/\/CLAUDE.md\" rel=\"noopener noreferrer nofollow\"><code>CLAUDE.md<\/code><\/a> \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u043a\u0430\u043f\u0430; \u2014 \u0436\u0435\u043b\u0435\u0437\u043e \u043f\u043e\u0434 \u0440\u0443\u043a\u043e\u0439 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043d\u0430 \u0436\u0438\u0432\u043e\u043c \u0441\u0442\u0435\u043d\u0434\u0435 \u2014 \u044d\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u0432\u0440\u0451\u0442, \u0444\u043e\u0440\u0443\u043c\u044b \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u044e\u0442, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u0442\u0441\u0442\u0430\u0451\u0442 \u043e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c DGX Spark \u2014 \u0437\u0430\u0431\u0438\u0440\u0430\u0439\u0442\u0435 <a href=\"http:\/\/install.sh\" rel=\"noopener noreferrer nofollow\"><code>install.sh<\/code><\/a>, \u0433\u043e\u043d\u044f\u0439\u0442\u0435 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0432 issue-tracker&#8217;\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0438\u0442\u0435, \u0447\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u043b\u043e\u0441\u044c. \u0415\u0441\u043b\u0438 Spark&#8217;\u0430 \u043d\u0435\u0442, \u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d private RAG end-to-end \u2014 <code>lib\/<\/code> \u0438 <code>templates\/docker-compose.yml<\/code> \u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0441\u0430\u043c\u043e\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: \u044f \u043f\u0438\u0441\u0430\u043b \u0438\u0445 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u0440\u0435\u0437 \u0433\u043e\u0434 \u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e <code>gpu_memory_utilization=0.60<\/code>, \u0430 \u043d\u0435 0.70.<\/p>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 unified memory \u0431\u0435\u0437 NVML \u2014 \u0442\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u0441\u0442\u044b\u043b\u0438\u0442\u044c \u2014 \u0438 \u043f\u0440\u043e supply-chain hardening \u0434\u043b\u044f Dify-\u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u0432 air-gap-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f\u0445. \u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c, \u0435\u0441\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e.<\/p>\n<p><a href=\"https:\/\/github.com\/botAGI\/AGmind\" rel=\"noopener noreferrer nofollow\">github.com\/botAGI\/AGmind<\/a><\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1030802\/\">https:\/\/habr.com\/ru\/articles\/1030802\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423 \u043c\u0435\u043d\u044f \u043d\u0430 \u0441\u0442\u043e\u043b\u0435 \u0441\u0442\u043e\u0438\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0437\u043e\u043b\u043e\u0442\u0438\u0441\u0442\u0430\u044f \u043a\u043e\u0440\u043e\u0431\u043e\u0447\u043a\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 Mac mini. \u0412\u043d\u0443\u0442\u0440\u0438 \u2014 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 AI-\u0441\u0435\u0440\u0432\u0435\u0440: \u0447\u0430\u0442 \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 26B-\u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043f\u043e\u0438\u0441\u043a\u043e\u0432\u0430\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u043c\u043e\u0438\u0445 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 GPU-\u043f\u0430\u0440\u0441\u0438\u043d\u0433\u043e\u043c, \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0432 Dify, RAGFlow \u0434\u043b\u044f \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 PDF, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433, \u0431\u044d\u043a\u0430\u043f\u044b, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0434\u0432\u0443\u0445 \u043c\u0430\u0448\u0438\u043d \u043f\u043e QSFP 200G. \u0422\u0440\u0438\u0434\u0446\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u043d\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 sudo bash install.sh, \u043d\u043e\u043b\u044c \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0439 \u043a \u0432\u043d\u0435\u0448\u043d\u0438\u043c API.\u042f \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u043e \u043d\u0435 \u043a\u0430\u043a pet-project, \u0430 \u043f\u043e\u0434 \u0441\u0435\u0431\u044f \u2014 \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u0430 \u0431\u044b\u043b\u0430 \u043c\u0430\u0448\u0438\u043d\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0430\u043c\u0438 \u0438 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438 \u043f\u0440\u0438 \u043a\u0430\u043a\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u044b. \u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u043c \u2014 \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0433\u043e AGmind, \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 GitHub \u043f\u043e\u0434 Apache 2.0.\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0443:\u2014 \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0431\u0440\u0430\u043d \u0441\u0442\u0435\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u0442\u0430\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442; \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 RAGFlow \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u0438 \u0447\u0442\u043e \u044f \u0442\u0443\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043b; \u2014 \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0438\u0437 \u0434\u0432\u0443\u0445 Spark&#8217;\u043e\u0432; \u2014 \u043f\u044f\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0433\u0440\u0430\u0431\u0435\u043b\u044c GB10, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043b\u043e\u0432\u0438\u043b \u0432\u0435\u0447\u0435\u0440\u0430\u043c\u0438; \u2014 \u043f\u043e\u0447\u0435\u043c\u0443 Claude Code \u0437\u0430 \u043c\u0435\u0441\u044f\u0446 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u0417\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0439 AI-\u0441\u0435\u0440\u0432\u0435\u0440    \u041e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0430\u0441\u0441\u0438\u0441\u0442\u0435\u043d\u0442\u044b \u2014 OpenAI, Anthropic, Gemini \u2014 \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e \u043e\u0442\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0440\u0443\u0436\u0443. \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0447\u044c \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b, \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u044b, \u043c\u0435\u0434\u043a\u0430\u0440\u0442\u044b, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u044b \u2014 \u043a\u0430\u0436\u0434\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 compliance-\u043e\u0444\u0438\u0446\u0435\u0440 \u0437\u0430\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 SaaS, \u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e. \u042d\u0442\u043e \u043d\u0435 \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u0433\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448 TLS \u0443 \u0432\u0435\u043d\u0434\u043e\u0440\u0430. \u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0447\u0443\u0436\u0438\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0438 \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0443\u043c\u0430\u0436\u043a\u0430\u043c.Self-hosted-\u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u044f \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u043b \u0440\u0443\u043a\u0430\u043c\u0438. Open WebUI \u2014 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0442, \u043d\u043e \u0441 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043b\u043e\u0445\u043e. Dify \u2014 \u043c\u043e\u0449\u043d\u044b\u0439 workflow-\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0438 \u043f\u0440\u0438\u043b\u0438\u0447\u043d\u044b\u0439 \u0444\u0440\u043e\u043d\u0442, \u043d\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 PDF \u0441\u043b\u0430\u0431\u044b\u0439: \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043b\u044b\u0432\u0443\u0442, \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u044e\u0442, \u043c\u043d\u043e\u0433\u043e\u043a\u043e\u043b\u043e\u043d\u043e\u0447\u043d\u044b\u0435 \u0442\u0435\u043a\u0441\u0442\u044b \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f. RAGFlow \u2014 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0441\u0435\u0440, \u043d\u043e UI \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0443\u0441\u0442\u0443\u043f\u0430\u044e\u0442 Dify. AnythingLLM, FlowiseAI, LangFlow \u2014 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u043e\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u0441\u0432\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u0432.\u041c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u0434\u043d\u043e: \u0447\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0432 \u043f\u0430\u043f\u043a\u0443 200 PDF-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e \u043d\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0430\u0442, \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 drag-n-drop, \u0438 \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u043b\u043e\u0441\u044c \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0438 \u0442\u0430\u043a \u0436\u0435 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0431\u044d\u043a\u0430\u043f\u0438\u043b\u043e\u0441\u044c. \u041a\u0443\u0431\u0438\u043a\u0438 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 open-source \u0435\u0441\u0442\u044c, \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 \u2014 \u043d\u0435\u0442. \u0422\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f AGmind. \u0416\u0435\u043b\u0435\u0437\u043e: \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 DGX Spark \u0432 \u0434\u0432\u0443\u0445 \u0441\u043b\u043e\u0432\u0430\u0445  DGX Spark \u2014 \u044d\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 AI-\u0434\u0435\u0441\u043a\u0442\u043e\u043f \u043e\u0442 NVIDIA \u043d\u0430 \u0447\u0438\u043f\u0435 GB10 Grace Blackwell. \u0410\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0432 \u043c\u0430\u0440\u0442\u0435 2025 \u043a\u0430\u043a Project DIGITS, \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u0438 15 \u043e\u043a\u0442\u044f\u0431\u0440\u044f 2025. \u0421\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u0446\u0435\u043d\u0430 $3999, \u0432 \u0444\u0435\u0432\u0440\u0430\u043b\u0435 2026 \u0438\u0437-\u0437\u0430 \u0434\u0435\u0444\u0438\u0446\u0438\u0442\u0430 LPDDR5x \u043f\u043e\u0434\u043d\u044f\u043b\u0438 \u0434\u043e $4699.\u0412\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e SoC \u0441\u0438\u0434\u044f\u0442:\u2014 20-\u044f\u0434\u0435\u0440\u043d\u044b\u0439 ARM-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 (10 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 Cortex-X925 + 10 \u044d\u043d\u0435\u0440\u0433\u043e\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 Cortex-A725, \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b NVIDIA \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0441 MediaTek); \u2014 Blackwell GPU c compute capability sm_121: 48 SM, 6144 CUDA-\u044f\u0434\u0440\u0430, 192 \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u044b\u0445 \u044f\u0434\u0440\u0430 \u043f\u044f\u0442\u043e\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f; \u2014 128 \u0413\u0411 \u043f\u0430\u043c\u044f\u0442\u0438 LPDDR5x \u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c\u044e 273 \u0413\u0411\/\u0441 \u2014 \u0435\u0434\u0438\u043d\u044b\u0439 \u043a\u043e\u0433\u0435\u0440\u0435\u043d\u0442\u043d\u044b\u0439 \u043f\u0443\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0438\u0434\u044f\u0442 \u0438 CPU, \u0438 GPU \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0433\u043e PCIe-\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f; \u2014 \u0434\u0432\u0430 QSFP-\u043f\u043e\u0440\u0442\u0430 \u043d\u0430 200 \u0413\u0431\u0438\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 (NVIDIA ConnectX-7), \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0432\u0430 Spark&#8217;\u0430 \u0441\u043a\u043b\u0435\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440.\u041f\u043e \u0447\u0438\u0441\u0442\u043e\u0439 GPU-\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u0436\u0434\u0443 RTX 5070 \u0438 5070 Ti. \u0421\u0435\u043d\u0441\u0430\u0446\u0438\u044f \u043d\u0435 \u0432 FLOPs, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0432 128 \u0413\u0411 unified memory: \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u0437\u0430 $4 \u0442\u044b\u0441\u044f\u0447\u0438 \u044f \u043c\u043e\u0433\u0443 \u0438\u043d\u0444\u0435\u0440\u0438\u0442\u044c 70B-\u043c\u043e\u0434\u0435\u043b\u044c \u0432 FP4 \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0433\u043e \u0448\u0430\u0440\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0435\u0433\u043e \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c.\u0427\u0442\u043e \u0443 \u044d\u0442\u043e\u0439 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0431\u043e\u043b\u0438\u0442 \u2014 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b. Spark \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 \u0432\u0435\u0442\u043a\u0435 580.x; \u043d\u0430 590+ NVIDIA \u0441\u043b\u043e\u0432\u0438\u043b\u0430 \u0442\u0440\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u0438, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u043d\u044b\u0435 \u0434\u043b\u044f unified memory GB10:\u2014 vLLM \u0437\u0430\u0432\u0438\u0441\u0430\u0435\u0442 \u043d\u0430 CUDAGraph capture \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0438\u043d\u0444\u0435\u0440\u0435\u043d\u0441\u0435. \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u043e \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 eugr\/spark-vllm-docker, \u0442\u0430\u043c \u0432 README \u043f\u0440\u044f\u043c\u043e \u0441\u0442\u043e\u0438\u0442 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u00abdriver 580.x, \u043d\u0430 590.x deadlock\u00bb; \u2014 \u0443\u0442\u0435\u0447\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 590.48.01: \u043f\u043e\u0441\u043b\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f CUDA-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0440\u044f\u0434\u043a\u0430 80 \u0413\u0411, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u043d\u0438 \u0432 AnonPages, \u043d\u0438 \u0432 Slab, \u043d\u0438 \u0432 PageTables; \u043b\u0435\u0447\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439; \u2014 TMA-\u0431\u0430\u0433 \u0432 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 595.58.03 \u0432\u0430\u043b\u0438\u0442 NVFP4-\u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0441 illegal memory access.\u0412 \u043c\u043e\u0451\u043c install.sh \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 apt-mark hold nvidia-driver-580-open \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0430\u0440\u0430\u043d\u043e\u0439\u044f, \u0430 \u0437\u0430\u0449\u0438\u0442\u0430 \u043e\u0442 unattended-upgrades, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e \u043f\u043e\u0434\u0442\u044f\u043d\u0443\u0442 590, \u0438 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0432\u0448\u0438\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0443\u0442\u0440\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043c\u0451\u0440\u0442\u0432\u0443\u044e vLLM.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: \u0447\u0442\u043e \u0432\u0445\u043e\u0434\u0438\u0442 \u0432 \u0441\u0442\u0435\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u0421\u0442\u0435\u043a \u0443 \u043c\u0435\u043d\u044f \u0436\u0438\u0432\u0451\u0442 \u0432 \u0434\u043e\u043a\u0435\u0440\u0435 \u0438 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0438\u0437 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. Dify \u2014 \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434 \u0438 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440 workflowDify (langgenius\/dify-api:1.13.3) \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f \u0436\u0438\u0432\u0443. \u042d\u0442\u043e open-source-\u0430\u043d\u0430\u043b\u043e\u0433 LangChain Studio \u043f\u043b\u044e\u0441 ChatGPT-like \u0447\u0430\u0442, \u043f\u043b\u044e\u0441 drag-n-drop \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0430\u0433\u0435\u043d\u0442\u043e\u0432. \u0423 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c workflow-\u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043d\u043e\u0434\u0430\u043c\u0438 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0442\u0438\u043f\u0430 \u00ab\u043f\u043e\u043b\u0443\u0447\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u2192 \u0440\u0430\u0441\u043f\u0430\u0440\u0441\u0438 \u0447\u0435\u0440\u0435\u0437 RAGFlow \u2192 \u0441\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0438\u0440\u0443\u0439 gemma-4 \u2192 \u043e\u0442\u043f\u0440\u0430\u0432\u044c \u0432 Telegram\u00bb, \u0438 \u044d\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u044f\u0442\u044c \u043c\u0438\u043d\u0443\u0442 \u0431\u0435\u0437 \u043a\u043e\u0434\u0430.\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Dify \u043a\u0430\u043a primary frontend (agmind-dify.local), \u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u043d \u0443\u043c\u0435\u0435\u0442 \u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e vLLM, \u0432 RAGFlow \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u0437 marketplace \u0438 \u0432 \u043b\u044e\u0431\u043e\u0439 OpenAI-compatible endpoint. \u0421\u0430\u043c Dify \u2014 \u044d\u0442\u043e \u043f\u044f\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432: api, worker, web, sandbox, plugin_daemon.RAGFlow \u2014 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0441 \u043d\u0443\u043b\u044f \u043f\u043e\u0434 Spark\u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0434\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e. Upstream-RAGFlow \u0432 \u043a\u043e\u0440\u043e\u0431\u043a\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 DGX Spark \u2014 \u0442\u0430\u043c \u0438 x86-only \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0438 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 ONNX-\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u044b, \u0438 \u043a\u0443\u0447\u0430 \u043c\u0435\u043b\u043e\u0447\u0435\u0439. \u0413\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 \u043f\u043e\u0434 arm64 + sm_121 + CUDA 13 \u0432 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u043d\u0435\u0442.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u0437\u044f\u043b \u0431\u0430\u0437\u0443 \u0438\u0437 \u043f\u0430\u0442\u0447\u0435\u0439 HendrikSchoettle\/ragflow-dgx-spark (\u0442\u0430\u043c \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0443 \u043d\u0430 ARM), \u043d\u0430\u043a\u0430\u0442\u0438\u043b \u043f\u043e\u0432\u0435\u0440\u0445 \u0441\u0432\u043e\u0438 cherry-pick&#8217;\u0438 \u0438\u0437 upstream main \u0438 \u0441\u043e\u0431\u0440\u0430\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 ar2r223\/ragflow-spark:v0.24.1-spark, \u0437\u0430\u043f\u0438\u043d\u043d\u0438\u043b \u043f\u043e SHA256, \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u0432 DockerHub.\u0412 \u0441\u0431\u043e\u0440\u043a\u0435:\u2014 \u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0432\u0435\u0442\u043a\u0430 v0.24.0 + \u043f\u0430\u0442\u0447\u0438 Hendrik: cascade-OCR \u043d\u0430 Latin \/ Cyrillic \/ Chinese (\u0432\u0430\u0436\u043d\u043e \u2014 \u0432 upstream \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439), file metadata \u0432 ES-\u0447\u0430\u043d\u043a\u0430\u0445, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 AVIF, \u0444\u0438\u043a\u0441\u044b IMAP \u0438 WebDAV mtime, ONNX Runtime GPU 1.25.0 \u043f\u043e\u0434 aarch64 + CUDA 13 + sm_121; \u2014 Cherry-pick \u0438\u0437 upstream main (\u043e\u0442 27 \u0430\u043f\u0440\u0435\u043b\u044f): TokenChunker (\u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b + image_context), TitleChunker (5 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 regex-\u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u043b\u044f \u043a\u043d\u0438\u0433, \u0437\u0430\u043a\u043e\u043d\u043e\u0432, \u043c\u0430\u043d\u0443\u0430\u043b\u043e\u0432), pdf_chunk_metadata.py, extract_pdf_outlines, 7 ingestion-\u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 (book \/ general \/ laws \/ manual \/ one \/ paper \/ resume); \u2014 \u041c\u043e\u0438 runtime-\u043f\u0430\u0442\u0447\u0438: \u0440\u0443\u0441\u0441\u043a\u0438\u0439 prompt \u0434\u043b\u044f image describe \u0432 cv_model.py (\u043a\u043e\u0433\u0434\u0430 \u0443 KB language=Russian, vision-\u043c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0439 prompt \u0432\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e), \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432 10 ingestion-\u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445, \u043f\u043b\u044e\u0441 \u043b\u0435\u0447\u0435\u043d\u0438\u0435 \u0431\u0430\u0433\u0430 Pipeline.globals \u0432 Hendrik fork v0.24, \u0433\u0434\u0435 Pipeline \u043d\u0435 \u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043e\u0442 Canvas \u0438 \u0432\u0430\u043b\u0438\u043b\u0441\u044f \u0441 AttributeError \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0447\u0430\u043d\u043a\u0435.\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 RAGFlow \u0443\u043c\u0435\u0435\u0442 \u043d\u0430 \u043c\u043e\u0451\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u044b\u0435 PDF \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438, \u0441\u0445\u0435\u043c\u0430\u043c\u0438 \u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0440\u0443\u0441\u0441\u043a\u0438\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u0447\u0435\u0440\u0435\u0437 vision-\u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u0432 Elasticsearch 9.x. \u041e\u0431\u0440\u0430\u0437 ~13.3 \u0413\u0411, \u0442\u044f\u043d\u0435\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437.Apropos \u2014 \u0442\u044d\u0433 :latest \u0432 \u043c\u043e\u0451\u043c versions.env \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d, \u0432\u0441\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u0438\u043d\u044f\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u043e \u0432\u0435\u0440\u0441\u0438\u0438, \u043b\u0438\u0431\u043e \u043f\u043e digest. \u042d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0432 CI: \u0433\u0430\u043b\u043b\u044e\u0446\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0435 LLM \u043b\u044e\u0431\u044f\u0442 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0442\u044c \u00ab\u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435\u00bb \u0442\u0435\u0433\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 registry. \u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u043f\u0440\u043e Claude Code.vLLM \u2014 \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438\u041d\u0430 GB10 \u0443 \u043c\u0435\u043d\u044f \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0442\u0440\u0438 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430 vLLM:\u2014 vLLM (LLM) \u2014 vllm\/vllm-openai:gemma4-cu130, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 google\/gemma-4-26B-A4B-it. \u042d\u0442\u043e NVIDIA playbook-\u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u043e\u0434 arm64 \u0438 sm_121, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 gemma-4 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0436\u0438\u0432\u0451\u0442 \u043d\u0430 Spark. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e gpu_memory_utilization=0.60 \u2014 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u0437\u0430\u043f\u0430\u0441 \u0434\u043b\u044f docling-serve, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0438\u043a\u043e\u0432\u043e\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0434\u043e 16 \u0413\u0411; \u2014 vLLM (embeddings) \u2014 nvcr.io\/nvidia\/vllm:26.02-py3, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 deepvk\/USER-bge-m3. \u042d\u0442\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 bge-m3, \u0430 \u0444\u0430\u0439\u043d\u0442\u044e\u043d\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u0434 \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442 deepvk, \u043d\u0430 \u043d\u0430\u0448\u0438\u0445 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u0442\u0435\u043a\u0441\u0442\u0430\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u043b\u0443\u0447\u0448\u0435; \u2014 vLLM (reranker) \u2014 \u0442\u043e \u0436\u0435 \u0431\u0430\u0437\u043e\u0432\u043e\u0435 NGC-\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 BAAI\/bge-reranker-v2-m3 \u0434\u043b\u044f \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432.\u041f\u043e\u0447\u0435\u043c\u0443 26.02-py3, \u0430 \u043d\u0435 26.03? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e 26.03 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u0440\u0430\u0439\u0432\u0435\u0440 595.45+, \u0430 \u0443 \u043d\u0430\u0441 580.142, \u0438 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0440\u0430\u0439\u0432\u0435\u0440 \u043c\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u043c (\u0441\u043c. \u0432\u044b\u0448\u0435). \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043e\u0434\u0438\u043d gotcha \u0442\u044f\u043d\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439.\u0410\u0442\u0435\u043d\u0448\u043d-\u0431\u044d\u043a\u0435\u043d\u0434 \u044f \u0444\u0438\u043a\u0441\u0438\u0440\u0443\u044e VLLM_ATTENTION_BACKEND=TRITON_ATTN, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e FlashInfer FP8 \u043d\u0430 sm_121 \u0432\u0430\u043b\u0438\u0442\u0441\u044f \u0441 kernel only supports sm120 \u2014 \u044d\u0442\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0431\u0430\u0433 \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u0439 compute capability.Docling \u2014 \u043f\u0430\u0440\u0441\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 GPU OCRDocling-serve (docling-serve-cu130:v1.16.1) \u2014 \u044d\u0442\u043e GPU-\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0435\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0442 IBM. \u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 PDF \/ DOCX \/ PPTX \/ XLSX, \u043e\u0442\u0434\u0430\u0451\u0442 Markdown \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446, \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u043c\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a.\u0412 \u0441\u0442\u0435\u043a\u0435 \u0443 \u043c\u0435\u043d\u044f \u0442\u0440\u0438 preset&#8217;\u0430 \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432:\u2014 FAST \u2014 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0445 PDF \u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c text layer (Word\/LaTeX export). \u041e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442 OCR \u0438 table-structure recognition, \u043d\u0430 5-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u043e\u0439 arxiv-\u0441\u0442\u0430\u0442\u044c\u0435 \u0434\u0430\u0451\u0442 4.05 \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043f\u0440\u043e\u0442\u0438\u0432 6.01 \u0432 default; \u2014 BALANCED (default) \u2014 \u043f\u043e\u043b\u043d\u044b\u0439 pipeline, OCR \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0435\u0441\u043b\u0438 text layer \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439, TableFormer \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 accurate-\u0440\u0435\u0436\u0438\u043c\u0435; \u2014 SCAN \u2014 \u0434\u043b\u044f \u043e\u0442\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u0431\u0435\u0437 text layer. \u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 easyocr \u0441 lang=[ru, en] \u0438 picture_description \u0447\u0435\u0440\u0435\u0437 vLLM gemma-4 vision \u0441 concurrency=8, \u043f\u043e \u043c\u043e\u0438\u043c \u0437\u0430\u043c\u0435\u0440\u0430\u043c \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u0438\u043d\u0434\u0435\u043a\u0441.Docling \u0434\u0435\u043b\u0438\u0442 GPU \u0441 vLLM, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 gpu_memory_utilization=0.60 \u0443 LLM-\u0438\u043d\u0441\u0442\u0430\u043d\u0441\u0430.\u0411\u0430\u0437\u044b \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u0422\u0443\u0442 \u0431\u0435\u0437 \u0441\u044e\u0440\u043f\u0440\u0438\u0437\u043e\u0432:\u2014 PostgreSQL 16-alpine \u2014 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 Dify, \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432; \u2014 Redis 7.4 \u2014 task queue, \u043a\u044d\u0448 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432, pub\/sub \u0434\u043b\u044f celery; \u2014 Weaviate 1.37 \u2014 \u0432\u0435\u043a\u0442\u043e\u0440\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u043e\u0434 \u044d\u043c\u0431\u0435\u0434\u0434\u0438\u043d\u0433\u0438 (\u0435\u0441\u0442\u044c toggle \u043d\u0430 Qdrant, \u043d\u043e \u0434\u0435\u0444\u043e\u043b\u0442 Weaviate); \u2014 MinIO \u2014 S3-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043f\u043e\u0434 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b (agmind-storage.local); \u2014 Elasticsearch 9.x \u2014 \u043d\u0443\u0436\u0435\u043d RAGFlow, \u0432 \u043d\u0451\u043c \u0447\u0430\u043d\u043a\u0438 + \u043f\u043e\u043b\u043d\u043e\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441. RAGFlow \u0436\u0451\u0441\u0442\u043a\u043e \u0437\u0430\u0432\u044f\u0437\u0430\u043d \u043d\u0430 ES, Postgres \u043e\u043d \u043d\u0435 \u0443\u043c\u0435\u0435\u0442; \u2014 MySQL 8.0 \u2014 \u0442\u043e\u0436\u0435 \u043f\u043e\u0434 RAGFlow, \u0443 \u043d\u0438\u0445 \u0432 \u0441\u0445\u0435\u043c\u0435 MySQL \u0437\u0430\u0445\u0430\u0440\u0434\u043a\u043e\u0436\u0435\u043d.\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043a\u0430\u0411\u0435\u0437 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0441\u0442\u0435\u043a \u0438\u0437 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u2014 \u044d\u0442\u043e \u0441\u043b\u0435\u043f\u0430\u044f \u043b\u043e\u0448\u0430\u0434\u044c. \u0423 \u043c\u0435\u043d\u044f:\u2014 Prometheus + Grafana 3001 \u0441 \u0434\u0435\u0441\u044f\u0442\u044c\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438 (\u043e\u0431\u0449\u0438\u0439 \u043e\u0431\u0437\u043e\u0440, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b, GPU master, GPU worker, peer-worker, \u043b\u043e\u0433\u0438, \u0430\u043b\u0435\u0440\u0442\u044b, \u0430\u0443\u0434\u0438\u0442, RAG-\u043c\u0435\u0442\u0440\u0438\u043a\u0438, RAGFlow). \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u043e\u043b\u044c: \u043d\u0430 GB10 unified memory dcgm-exporter \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c, \u0430 NVML \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 N\/A \u043d\u0430&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-478364","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478364","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=478364"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/478364\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=478364"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=478364"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=478364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}