{"id":25544,"date":"2026-06-18T23:54:22","date_gmt":"2026-06-18T23:54:22","guid":{"rendered":"https:\/\/umang.pk\/2026\/06\/18\/qvac-%d8%a7%d9%88%d8%b1-socket-io-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-node-js-%d9%85%db%8c%da%ba-%d8%a2%d9%81-%d9%84%d8%a7%d8%a6\/"},"modified":"2026-06-18T23:54:47","modified_gmt":"2026-06-18T23:54:47","slug":"qvac-%d8%a7%d9%88%d8%b1-socket-io-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-node-js-%d9%85%db%8c%da%ba-%d8%a2%d9%81-%d9%84%d8%a7%d8%a6","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/06\/18\/qvac-%d8%a7%d9%88%d8%b1-socket-io-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-node-js-%d9%85%db%8c%da%ba-%d8%a2%d9%81-%d9%84%d8%a7%d8%a6\/","title":{"rendered":"QVAC \u0627\u0648\u0631 Socket.io \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 Node.js \u0645\u06cc\u06ba \u0622\u0641 \u0644\u0627\u0626\u0646 AI \u0627\u0645\u06cc\u062c \u062c\u0646\u0631\u06cc\u0679\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2"},"content":{"rendered":"\n<div id=\"\">\n<p>\u06a9\u0686\u06be \u0633\u0627\u0644 \u067e\u06c1\u0644\u06d2\u060c \u062c\u0633 \u062f\u0646 \u0645\u06cc\u06ba \u0646\u06d2 \u0622\u062e\u0631 \u06a9\u0627\u0631 AI \u0627\u0645\u06cc\u062c \u062c\u0646\u0631\u06cc\u0679\u0631 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u06cc\u060c \u0645\u06cc\u06ba \u0627\u062a\u0646\u0627 \u067e\u0631\u062c\u0648\u0634 \u062a\u06be\u0627 \u06a9\u06c1 \u0645\u06cc\u06ba \u0641\u0648\u0631\u0627\u064b \u0628\u06cc\u0679\u06be \u06af\u06cc\u0627 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u0636\u0645\u0648\u0646 \u0644\u06a9\u06be\u0627 (Node.js \u0627\u0648\u0631 OpenAI \u06a9\u06d2 DALL-E \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2)\u06d4 \u062e\u06cc\u0627\u0644\u0627\u062a \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0688\u06cc\u062c\u06cc\u0679\u0644 \u067e\u06a9\u0633\u0644\u0632 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062c\u0627\u062f\u0648 \u0627\u06cc\u0633\u0627 \u0645\u062d\u0633\u0648\u0633 \u06c1\u0648\u0627 \u062c\u06cc\u0633\u06d2 \u06a9\u0648\u0626\u06cc \u062d\u0642\u06cc\u0642\u06cc \u062c\u0627\u062f\u0648 \u06a9\u06cc \u0686\u06be\u0691\u06cc \u067e\u06a9\u0691\u06cc \u06c1\u0648\u0626\u06cc \u06c1\u0648\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u0627\u0633 \u0648\u0642\u062a\u060c \u0627\u0646 \u0645\u0627\u0688\u0644\u0632 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u067e\u0627\u0631\u06a9 \u0645\u06cc\u06ba \u0686\u06c1\u0644 \u0642\u062f\u0645\u06cc \u0646\u06c1\u06cc\u06ba \u062a\u06be\u06cc\u06d4 \u06c1\u0645\u0627\u0631\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0622\u067e\u0634\u0646 \u0645\u0688\u062c\u0631\u0646\u06cc \u062a\u06be\u0627\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u062a\u06be\u0627 \u06a9\u06c1 \u0645\u062c\u06be\u06d2 \u0688\u0633\u06a9\u0627\u0631\u0688 \u067e\u0631 \u062c\u062f\u0648\u062c\u06c1\u062f \u06a9\u0631\u0646\u06cc \u067e\u0691\u06cc\u060c \u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a \u0631\u0641\u062a\u0627\u0631 \u06a9\u06cc \u062d\u062f \u0627\u0648\u0631 \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0627\u062a\u0646\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u06c1 \u0645\u06cc\u06ba \u06a9\u0686\u06be \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0627\u0633 \u0648\u0642\u062a\u060c \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642 \u062a\u06a9 \u067e\u06c1\u0646\u0686\u0646\u0627 \u0641\u0644\u06cc\u0634 \u0645\u0648\u0628 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06a9\u0627\u0641\u06cc \u06a9\u0627 \u0622\u0631\u0688\u0631 \u062f\u06cc\u0646\u06d2 \u06a9\u06d2 \u0645\u062a\u0631\u0627\u062f\u0641 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u062e\u0648\u0634 \u0642\u0633\u0645\u062a\u06cc \u0633\u06d2\u060c \u0632\u0645\u06cc\u0646 \u06a9\u06cc \u062a\u0632\u0626\u06cc\u0646 \u06a9\u06cc \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0628\u062f\u0644 \u06af\u06cc\u0627 \u06c1\u06d2. \u0622\u062c\u060c \u06c1\u0645 \u0646\u06c1 \u0635\u0631\u0641 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u06d2 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u067e\u0631\u060c \u0628\u0644\u06a9\u06c1 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u0622\u0641 \u0644\u0627\u0626\u0646 \u0627\u0648\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0641\u062a \u0645\u06cc\u06ba Stable Diffusion \u062c\u06cc\u0633\u06d2 \u062c\u062f\u06cc\u062f \u0645\u0627\u0688\u0644\u0632 \u0686\u0644\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06a9\u0633\u06cc API \u06a9\u06cc\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba\u060c \u0633\u0628\u0633\u06a9\u0631\u067e\u0634\u0646 \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u06a9\u0648\u0626\u06cc \u062d\u062f \u0646\u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0646\u0645\u0679\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0648\u0626\u06cc Discord \u0686\u06cc\u0646\u0644\u0632 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e Node.js\u060c Express\u060c Socket.io\u060c \u0627\u0648\u0631 QVAC SDK \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0645\u0642\u0627\u0645\u06cc \u0648\u06cc\u0628 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0627\u06a9\u06c1 \u06a9\u0648\u0627\u0646\u0679\u0627\u0626\u0632\u0688 Stable Diffusion 2.1 \u0645\u0627\u0688\u0644 \u0686\u0644\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0627\u0626\u0637<\/h2>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0648\u06cc\u0628 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0627\u0648\u0631 \u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u06a9\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0679\u06be\u0648\u0633 \u0628\u0646\u06cc\u0627\u062f \u0631\u06a9\u06be\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p><strong>Node.js \u0627\u0648\u0631 ES \u0645\u0627\u0688\u06cc\u0648\u0644\u0632<\/strong>: \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0639\u0644\u0645 (<code>import<\/code>\/<code>export<\/code>)\u060c \u063a\u06cc\u0631 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631 \u0644\u0648\u067e\u0633 \u0627\u0648\u0631 \u0627\u06cc\u0648\u0646\u0679 \u0633\u0646\u0646\u06d2 \u0648\u0627\u0644\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u06cc\u06a9\u0633\u067e\u0631\u06cc\u0633 \u0627\u0648\u0631 \u0648\u06cc\u0628 \u0633\u0627\u06a9\u0679\u0633<\/strong>: \u062c\u0627\u0645\u062f \u0641\u0627\u0626\u0644 \u0631\u0648\u0679\u0646\u06af \u0627\u0648\u0631 \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0645\u06cc\u0633\u062c \u0648\u06cc\u0628 \u0633\u0627\u06a9\u0679\u0633 \u067e\u0631 \u0628\u06be\u06cc\u062c\u0646\u06d2 \u06a9\u0627 \u0639\u0644\u0645\u06d4 <code>socket.io<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u06cc\u0686 \u0679\u06cc \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u0627\u0648\u0631 \u0648\u0646\u06cc\u0644\u0627 \u0633\u06cc \u0627\u06cc\u0633 \u0627\u06cc\u0633<\/strong>: \u0628\u0646\u06cc\u0627\u062f\u06cc DOM \u06c1\u06cc\u0631\u0627 \u067e\u06be\u06cc\u0631\u06cc \u0627\u0648\u0631 \u0627\u0633\u0679\u0627\u0626\u0644 \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u0631\u0642\u06cc \u06a9\u06d2 \u0645\u0627\u062d\u0648\u0644<\/strong>: \u0627\u06cc\u06a9 \u0645\u0642\u0627\u0645\u06cc \u0645\u0634\u06cc\u0646 \u062c\u0633 \u0645\u06cc\u06ba Node.js \u0646\u0635\u0628 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"heading-what-is-qvac\">QVAC \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>QVAC\u060c Tether \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u06cc\u0627 \u06af\u06cc\u0627\u060c \u0645\u0642\u0627\u0645\u06cc \u0627\u0646\u0641\u0631\u0646\u0633 \u0679\u0648\u0644\u0632 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u06c1 \u06c1\u06d2 \u062c\u0648 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u06a9\u0644\u0627\u0626\u0646\u0679 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u067e\u0631 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u06c1\u0646\u06af\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u06c1\u0648\u0633\u0679\u0688 APIs (\u0645\u062b\u0644\u0627\u064b DALL-E \u06cc\u0627 Midjourney) \u067e\u0631 \u062a\u062e\u0645\u06cc\u0646\u06d2 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u0648\u06ba \u06a9\u0648 \u0631\u0648\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c QVAC \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0645\u0631\u062a\u0628 \u0634\u062f\u06c1 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0631\u0646 \u0679\u0627\u0626\u0645\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u06cc\u0633\u06d2 <code>llama.cpp<\/code> \u0645\u062a\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c <code>whisper.cpp<\/code> \u0679\u0631\u0627\u0646\u0633\u06a9\u0631\u067e\u0634\u0646 \u0627\u0648\u0631 \u06a9\u0633\u0679\u0645 \u0688\u0641\u06cc\u0648\u0698\u0646 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2)\u060c \u06cc\u06c1 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a Node.js\u060c \u0645\u0648\u0628\u0627\u0626\u0644 \u0627\u0648\u0631 \u0688\u06cc\u0633\u06a9 \u0679\u0627\u067e \u0631\u0646 \u0679\u0627\u0626\u0645\u0632 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>QVAC \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0642\u0627\u0645\u06cc AI \u0645\u0627\u0688\u0644\u0632 \u0686\u0644\u0627\u0646\u06d2 \u0633\u06d2 \u06a9\u0626\u06cc \u0639\u0645\u0644\u06cc \u0641\u0648\u0627\u0626\u062f \u062d\u0627\u0635\u0644 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><strong>\u06a9\u0648\u0626\u06cc API \u0644\u0627\u06af\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/strong>: \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba \u062c\u062a\u0646\u06cc \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u0628\u0627\u0631 \u0628\u0627\u0631 \u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0627\u062e\u0631\u0627\u062c\u0627\u062a \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u067e\u0631\u0648\u0633\u06cc\u0633 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0631\u0627\u0632\u062f\u0627\u0631\u06cc \u067e\u06c1\u0644\u06d2<\/strong>: \u067e\u0631\u0627\u0645\u067e\u0679\u0633 \u0627\u0648\u0631 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0622\u067e \u06a9\u06d2 \u0645\u0642\u0627\u0645\u06cc \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u06a9\u06cc \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u06ba \u0631\u06a9\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0622\u0641 \u0644\u0627\u0626\u0646 \u0622\u0632\u0627\u062f\u06cc<\/strong>: \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u06a9\u0633\u06cc \u0627\u0644\u06af \u062a\u06be\u0644\u06af \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u067e\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u067e\u0631\u0648\u0627\u0632 \u0645\u06cc\u06ba\u060c \u06cc\u0627 \u0627\u0646\u0679\u0631\u0646\u06cc\u0679 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0639\u0644\u0627\u0642\u06d2 \u0645\u06cc\u06ba \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"heading-how-stable-diffusion-works-under-the-hood\">\u06a9\u0633 \u0637\u0631\u062d \u0645\u0633\u062a\u062d\u06a9\u0645 \u0628\u0627\u0632\u06cc \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/h2>\n<p>RAM \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u0645\u06cc\u062c \u062c\u0646\u0631\u06cc\u0634\u0646 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c QVAC \u06a9\u0648\u0627\u0646\u0679\u0627\u0626\u0632\u0688 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <strong>\u0645\u0633\u062a\u062d\u06a9\u0645 \u0628\u0627\u0632\u06cc 2.1 GGUF<\/strong> \u0645\u0627\u0688\u0644 (<code>SD_V2_1_1B_Q8_0<\/code>)\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u062d\u0642\u06cc\u0642\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u0627 \u0639\u0645\u0644 \u062a\u0635\u0648\u0631\u0627\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u061f \u0622\u0626\u06cc\u06d2 \u0627\u06cc\u06a9 \u0628\u0627\u062a \u0648\u0627\u0636\u062d \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: <strong>\u06cc\u06c1 \u06a9\u0648\u0626\u06cc \u0633\u0627\u0626\u0646\u0633\u06cc \u0645\u0642\u0627\u0644\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/strong>. \u0686\u0648\u0646\u06a9\u06c1 \u0645\u06cc\u06ba \u06a9\u0645 \u062f\u0631\u062c\u06d2 \u06a9\u06cc \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0645\u062d\u0642\u0642 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0645\u06cc\u06ba \u0628\u0646\u06cc\u0627\u062f\u06cc \u0645\u0644\u0679\u06cc \u0648\u06cc\u0631\u06cc\u0679 \u06a9\u06cc\u0644\u06a9\u0648\u0644\u0633\u060c \u0627\u0645\u06a9\u0627\u0646\u06cc \u062a\u0642\u0633\u06cc\u0645\u060c \u06cc\u0627 \u0627\u0633\u0679\u0627\u06a9\u0633\u0679\u06a9 \u062a\u0641\u0631\u06cc\u0642 \u0645\u0633\u0627\u0648\u0627\u062a \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062a\u0641\u0635\u06cc\u0644 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0624\u06ba \u06af\u0627\u06d4 (\u0622\u0626\u06cc\u06d2 \u0627\u06cc\u0645\u0627\u0646\u062f\u0627\u0631 \u0628\u0646\u06cc\u06ba\u060c \u06c1\u0645 \u0645\u06cc\u06ba \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u06cc\u0648\u0646\u0627\u0646\u06cc \u0639\u0644\u0627\u0645\u062a\u0648\u06ba \u0627\u0648\u0631 \u0644\u06a9\u06cc\u0631\u06cc \u0627\u0644\u062c\u0628\u0631\u0627 \u06a9\u06d2 \u0641\u0627\u0631\u0645\u0648\u0644\u0648\u06ba \u06a9\u0648 \u0627\u0633\u06a9\u0631\u06cc\u0646 \u067e\u0631 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u062a\u0627 \u062c\u0628 \u06c1\u0645 \u0635\u0627\u0641 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u067e\u0679 \u0644\u06a9\u06be \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u06d4)<\/p>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0622\u0626\u06cc\u06d2 \u06cc\u06c1 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0686\u06be \u0628\u062f\u06cc\u06c1\u06cc \u0688\u0648\u06cc\u0644\u067e\u0631 \u062a\u0634\u0628\u06cc\u06c1\u0627\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06cc\u06c1 \u0645\u0627\u0688\u0644 \u062a\u0635\u0648\u0631\u0627\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-the-world-class-sculptor-analogy\">\u0639\u0627\u0644\u0645\u06cc \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06d2 \u0645\u062c\u0633\u0645\u06c1 \u0633\u0627\u0632 \u06a9\u06cc \u062a\u0645\u062b\u06cc\u0644<\/h3>\n<p>\u0627\u0633 \u06a9\u06d2 \u0645\u0631\u06a9\u0632 \u0645\u06cc\u06ba\u060c \u062c\u062f\u06cc\u062f AI \u0627\u0645\u06cc\u062c \u062c\u0646\u0631\u06cc\u0634\u0646 \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u067e\u0646 \u06a9\u0648 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0628\u0631\u0634 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u0633\u0627\u0646\u06cc \u0645\u0635\u0648\u0631 \u06a9\u06cc \u0637\u0631\u062d \u0634\u0631\u0648\u0639 \u0633\u06d2 \u067e\u06a9\u0633\u0644 \u0628\u06c1 \u067e\u06a9\u0633\u0644 \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0648 &quot;\u0631\u0646\u06af\u0646\u06d2&#8221; \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c AI \u0628\u0646\u06cc\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0639\u0627\u0644\u0645\u06cc \u0645\u0639\u06cc\u0627\u0631 \u06a9\u06d2 \u0645\u062c\u0633\u0645\u06c1 \u0633\u0627\u0632 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0688\u06cc\u062c\u06cc\u0679\u0644 \u062c\u0627\u0645\u062f \u0628\u0644\u0627\u06a9\u0633 \u0633\u06d2 \u062a\u0635\u0627\u0648\u06cc\u0631 \u062a\u0631\u0627\u0634\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u062c \u0627\u0633 \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0633\u0628 \u0633\u06d2 \u063a\u0627\u0644\u0628 \u0679\u06cc\u06a9\u0646\u0627\u0644\u0648\u062c\u06cc \u06c1\u06d2\u06d4 <strong>\u0628\u0627\u0632\u06cc<\/strong>\u06cc\u06c1 \u0627\u0633\u0679\u06cc\u0628\u0644 \u0688\u0641\u06cc\u0648\u0698\u0646\u060c \u0645\u0688\u062c\u0631\u0646\u06cc\u060c \u0627\u0648\u0631 \u06af\u0648\u06af\u0644 \u06a9\u06cc \u0627\u0645\u06cc\u062c\u06cc\u0646 \u0633\u06cc\u0631\u06cc\u0632 \u062c\u06cc\u0633\u06d2 \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0627\u06cc\u06a9 \u062a\u0635\u0648\u0631\u0627\u062a\u06cc \u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0628\u0631\u06cc\u06a9 \u0688\u0627\u0624\u0646 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u062c\u0627\u0645\u062f \u0628\u0644\u0627\u06a9\u0633 \u0622\u0631\u0679 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h4 id=\"heading-1-the-training-phase-learning-the-patterns\">1. \u062a\u0631\u0628\u06cc\u062a \u06a9\u0627 \u0645\u0631\u062d\u0644\u06c1 (\u067e\u06cc\u0679\u0631\u0646 \u0633\u06cc\u06a9\u06be\u0646\u0627)<\/h4>\n<p>\u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u06a9\u0648\u0626\u06cc \u0645\u0627\u0688\u0644 \u06a9\u0686\u06be \u0628\u06be\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u06d2\u060c \u0627\u0633\u06d2 \u0627\u0631\u0628\u0648\u06ba \u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0648\u0631 \u0627\u0646 \u06a9\u06d2 \u0645\u062a\u0646 \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0645\u0631\u062d\u0644\u06d2 \u067e\u0631\u060c \u0688\u0648\u06cc\u0644\u067e\u0631 \u06a9\u0686\u06be \u0645\u062a\u0636\u0627\u062f \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <strong>\u0622\u067e \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0627\u0645\u06cc\u062c \u06a9\u0648 \u062e\u0631\u0627\u0628 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/strong>.<\/p>\n<ul>\n<li>\n<p><strong>\u0634\u0648\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba:<\/strong> \u0633\u0633\u0679\u0645 \u0627\u06cc\u06a9 \u062a\u06cc\u0632 \u062a\u0635\u0648\u06cc\u0631 \u0644\u06cc\u062a\u0627 \u06c1\u06d2 (\u0645\u062b\u0644\u0627\u064b \u0627\u06cc\u06a9 \u0628\u0644\u06cc) \u0627\u0648\u0631 \u0628\u062a\u062f\u0631\u06cc\u062c \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0688\u06cc\u062c\u06cc\u0679\u0644 \u062c\u0627\u0645\u062f (\u0634\u0648\u0631) \u067e\u06a9\u0633\u0644 \u0628\u0630\u0631\u06cc\u0639\u06c1 \u067e\u06a9\u0633\u0644 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u0635\u0644 \u062a\u0635\u0648\u06cc\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u0642\u0627\u0628\u0644 \u0634\u0646\u0627\u062e\u062a \u06c1\u0648 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0633\u06d2 \u067e\u0644\u0679\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0633\u06cc\u06a9\u06be\u06cc\u06ba:<\/strong> AI \u06a9\u0627 \u06a9\u0627\u0645 \u0634\u0648\u0631 \u0645\u0686\u0627\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u0627 \u0627\u0648\u0631 \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u0645\u0631\u062d\u0644\u06d2 \u067e\u0631 \u06a9\u062a\u0646\u0627 \u0634\u0648\u0631 \u0634\u0627\u0645\u0644 \u06c1\u0648\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0627\u0631\u0628 \u0628\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0622\u067e \u0634\u0648\u0631 \u06a9\u0648 \u062e\u062a\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0645\u0627\u06c1\u0631 \u0628\u0646 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2 &#8211; \u0627\u0641\u0631\u0627\u062a\u0641\u0631\u06cc \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062f\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<h4 id=\"heading-2-connecting-words-to-visuals-clip\">2. \u0627\u0644\u0641\u0627\u0638 \u06a9\u0648 \u0628\u0635\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062c\u0648\u0691\u0646\u0627 (CLIP)<\/h4>\n<p>\u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 AI \u06a9\u06cc\u0627 \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2\u06d4 <em>&quot;\u0628\u0627\u0644\u0631 \u0679\u0648\u067e\u06cc \u0645\u06cc\u06ba \u0628\u0644\u06cc&#8221;<\/em> \u0627\u06cc\u0633\u0627 \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0627\u06a9\u062b\u0631 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06d2 \u0633\u0633\u0679\u0645 \u0633\u06d2 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0679\u06cc\u06a9\u0633\u0679 \u0679\u0648 \u0627\u0645\u06cc\u062c \u067e\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2: <strong>\u06a9\u0644\u067e<\/strong> (\u0645\u062a\u0636\u0627\u062f \u0632\u0628\u0627\u0646 \u06a9\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06cc \u062a\u0631\u0628\u06cc\u062a)\u06d4<\/p>\n<ul>\n<li>\n<p>CLIP \u0627\u0646\u0633\u0627\u0646\u06cc \u0632\u0628\u0627\u0646 \u06a9\u0648 \u0631\u06cc\u0627\u0636\u06cc \u06a9\u06d2 \u0646\u0642\u0634\u0648\u06ba (\u062c\u0633\u06d2 \u0646\u0642\u0634\u06d2 \u06a9\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba) \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <strong>\u0627\u0646\u062f\u0631\u0627\u062c<\/strong>)\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0633 \u0646\u0642\u0634\u06d2 \u0645\u06cc\u06ba &#8216;\u0628\u0644\u06cc&#8217; \u06a9\u0627 \u0644\u0641\u0638 \u0627\u0648\u0631 \u0628\u0644\u06cc \u06a9\u06d2 \u0627\u0635\u0644 \u067e\u06a9\u0633\u0644\u0632 \u0627\u06cc\u06a9 \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06d2 \u0628\u06c1\u062a \u0642\u0631\u06cc\u0628 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u0637\u0631\u062d\u060c \u062c\u0628 \u0622\u067e \u067e\u0631\u0627\u0645\u067e\u0679 \u0679\u0627\u0626\u067e \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 AI \u0628\u0627\u0644\u06a9\u0644 \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0633\u06d2 \u06a9\u0646 \u0628\u0635\u0631\u06cc \u062a\u0635\u0648\u0631\u0627\u062a \u06a9\u0648 \u06a9\u06be\u06cc\u0646\u0686\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<h4 id=\"heading-3-the-generation-phase-the-reverse-diffusion-loop\">3. \u062c\u0646\u0631\u06cc\u0634\u0646 \u0641\u06cc\u0632 (\u0688\u06cc\u067e\u0631\u06cc\u0688\u0646\u06af \u0644\u0648\u067e)<\/h4>\n<p>\u062c\u0628 \u0622\u067e \u067e\u0631\u0627\u0645\u067e\u0679 \u062f\u0627\u062e\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 &quot;\u062c\u0646\u0631\u06cc\u0679&#8221; \u06a9\u0648 \u062f\u0628\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u062c\u0627\u062f\u0648 \u0627\u0644\u0679\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p><strong>\u062e\u0627\u0644\u06cc \u06a9\u06cc\u0646\u0648\u0633:<\/strong> AI \u062e\u0627\u0644\u0635\u060c 100% \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0688\u06cc\u062c\u06cc\u0679\u0644 \u0634\u0648\u0631 \u06a9\u06d2 \u06a9\u06cc\u0646\u0648\u0633 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 (\u067e\u0631\u0627\u0646\u06d2 \u0679\u06cc \u0648\u06cc \u062c\u0627\u0645\u062f \u06a9\u06cc \u0637\u0631\u062d \u0644\u06af\u062a\u0627 \u06c1\u06d2)\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0641\u0648\u0631\u06cc \u06c1\u062f\u0627\u06cc\u0627\u062a:<\/strong> AI \u0622\u067e \u06a9\u06d2 \u0627\u0634\u0627\u0631\u06d2 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06cc \u0622\u0646\u06a9\u06be\u0648\u06ba \u06a9\u06cc \u0631\u06c1\u0646\u0645\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u06a9\u0633\u0679 \u0627\u06cc\u0645\u0628\u06cc\u0688\u0646\u06af\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0628\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u062c\u0627\u0645\u062f \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u06cc\u06ba \u0627\u0648\u0631 \u067e\u0648\u0686\u06be\u06cc\u06ba: <em>&quot;\u0627\u0633 \u06af\u0646\u062f\u06af\u06cc \u0645\u06cc\u06ba \u0645\u062c\u06be\u06d2 \u0628\u0644\u06cc \u06a9\u06c1\u0627\u06ba \u0645\u0644\u06d2 \u06af\u06cc\u061f&#8221;<\/em><\/p>\n<\/li>\n<li>\n<p><strong>\u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0634\u0648\u0631 \u06c1\u0679\u0627\u0646\u0627:<\/strong> AI \u06a9\u0686\u06be \u0634\u0648\u0631 \u06a9\u0648 \u06af\u06be\u0679\u0627 \u06a9\u0631 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648 \u0642\u062f\u0631\u06d2 \u062a\u06cc\u0632 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633 \u0644\u0648\u067e \u06a9\u0648 20 \u0633\u06d2 50 \u0628\u0627\u0631 \u062f\u06c1\u0631\u0627\u0626\u06cc\u06ba\u06d4 \u06c1\u0631 \u0642\u062f\u0645 \u067e\u0631\u060c \u062f\u06be\u0646\u062f\u0644\u06cc \u0634\u06a9\u0644\u06cc\u06ba \u06a9\u06be\u0631\u062f\u0631\u06cc \u062e\u0627\u06a9\u0648\u06ba \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u0646\u0627\u0648\u0679 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0622\u062e\u0631 \u06a9\u0627\u0631 \u0627\u06cc\u06a9 \u062a\u06cc\u0632\u060c \u0635\u0627\u0641\u060c \u0646\u0626\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0628\u06be\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0628\u06cc\u062c\u0648\u06ba \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062f\u0644\u0686\u0633\u067e \u062d\u0642\u0627\u0626\u0642:<\/strong> \u06cc\u06c1 \u0639\u0645\u0644 \u06c1\u0631 \u0628\u0627\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0670\u0630\u0627 \u0627\u06cc\u06a9 \u06c1\u06cc \u067e\u0631\u0627\u0645\u067e\u0679 \u06a9\u0648 \u062f\u0648 \u0628\u0627\u0631 \u062f\u0627\u062e\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06c1\u0645\u06cc\u0634\u06c1 \u0622\u067e \u06a9\u0648 \u0628\u0627\u0644\u06a9\u0644 \u0645\u062e\u062a\u0644\u0641 \u062a\u0635\u0648\u06cc\u0631 \u0645\u0644\u06d2 \u06af\u06cc\u06d4 <strong>\u0628\u06cc\u062c<\/strong>)\u06d4<\/p>\n<p>\u0630\u06cc\u0644 \u0645\u06cc\u06ba \u0628\u0627\u0632\u06cc \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0634\u0648\u0631 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u06cc \u0627\u06cc\u06a9 \u0645\u062b\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-latent-diffusion-keeping-it-fast-the-vae\">\u0627\u0648\u06cc\u06a9\u062a \u067e\u06be\u06cc\u0644\u0627\u0624: \u062a\u06cc\u0632 \u0631\u06c1\u06cc\u06ba (VAE)<\/h3>\n<p>\u067e\u06a9\u0633\u0644 \u0628\u0627\u0626\u06cc \u067e\u06a9\u0633\u0644 \u06c1\u0627\u0626\u06cc \u0631\u06cc\u0632\u0648\u0644\u0648\u0634\u0646 \u0627\u0645\u06cc\u062c\u0632 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0646\u06af \u067e\u0627\u0648\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u0646\u0632\u06cc\u0648\u0645\u0631 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u06a9\u06d2 \u067e\u06a9\u0633\u0644 \u0627\u0633\u067e\u06cc\u0633 \u0645\u06cc\u06ba \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u06cc\u0633\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0622\u067e \u06a9\u0627 \u06a9\u0645\u067e\u06cc\u0648\u0679\u0631 \u067e\u06af\u06be\u0644 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0646\u0633\u0644 \u0628\u0646\u0627\u0646\u06d2 \u0645\u06cc\u06ba \u06af\u06be\u0646\u0679\u06d2 \u0644\u06af\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u0626\u06d2 \u0645\u0627\u0688\u0644\u0632 <strong>\u0645\u0645\u06a9\u0646\u06c1 \u067e\u06be\u06cc\u0644\u0627\u0624<\/strong>.<\/p>\n<p>\u0645\u06a9\u0645\u0644 \u0633\u0627\u0626\u0632 \u06a9\u06cc \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 <strong>\u0627\u0646\u06a9\u0648\u0688\u0631<\/strong> \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0648 \u0686\u06be\u0648\u0679\u06d2\u060c \u0632\u06cc\u0627\u062f\u06c1 \u062a\u062c\u0631\u06cc\u062f\u06cc \u0631\u06cc\u0627\u0636\u06cc\u0627\u062a\u06cc \u062e\u0627\u0644\u06cc \u062c\u06af\u06c1\u0648\u06ba \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 ( <strong>&quot;\u0645\u0645\u06a9\u0646\u06c1 \u062c\u06af\u06c1&#8221;<\/strong>)\u06d4 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06d2 \u06a9\u06be\u06cc\u0644 \u06a9\u06d2 \u0645\u06cc\u062f\u0627\u0646 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0648\u0686\u06cc\u06ba \u062c\u06c1\u0627\u06ba \u062a\u0645\u0627\u0645 \u0634\u0648\u0631 \/ \u0634\u0648\u0631 \u06a9\u0648 \u0645\u0646\u0633\u0648\u062e \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0631\u06cc\u0627\u0636\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0686\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u06a9\u06be\u06cc\u0644 \u06a9\u0627 \u0645\u06cc\u062f\u0627\u0646 \u0628\u06c1\u062a \u0686\u06be\u0648\u0679\u0627 \u06c1\u06d2\u060c \u062d\u0633\u0627\u0628 \u0646\u0627\u0642\u0627\u0628\u0644 \u06cc\u0642\u06cc\u0646 \u062d\u062f \u062a\u06a9 \u062a\u06cc\u0632 \u06c1\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u0688\u06cc\u0646\u0648\u0627\u0626\u0632\u0646\u06af \u0644\u0648\u067e \u0627\u0648\u06cc\u06a9\u062a \u062c\u06af\u06c1 \u0645\u06cc\u06ba \u062e\u062a\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c <strong>\u0688\u06cc\u06a9\u0648\u0688\u0631<\/strong> (\u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 Variational Autoencoder (VAE)) \u0622\u067e \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0632\u060c \u0627\u0639\u0644\u06cc \u0631\u06cc\u0632\u0648\u0644\u06cc\u0648\u0634\u0646 \u0627\u0645\u06cc\u062c\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u06cc\u06a9 \u0627\u067e \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-architectures-supported-by-qvac\">QVAC \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a<\/h3>\n<p>QVAC \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0642\u0627\u0645\u06cc \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0686\u0644\u0627\u0646\u0627 SDK \u06a9\u0648 \u0627\u06cc\u06a9 \u0627\u0635\u0644\u0627\u062d \u0634\u062f\u06c1\u060c \u06a9\u0645\u06cc\u0648\u0646\u0679\u06cc \u06a9\u06d2 \u0632\u06cc\u0631 \u0627\u0646\u062a\u0638\u0627\u0645 C++ \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u06d2 \u062c\u0648\u0691\u062a\u0627 \u06c1\u06d2\u06d4 QVAC \u0645\u062e\u062a\u0644\u0641 AI \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u0628\u0627\u0626\u0646\u0688\u0646\u06af \u0627\u0648\u0631 \u0645\u0627\u0688\u0644 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ol>\n<li>\n<p><strong>\u0645\u062a\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba (<\/strong><code>llama.cpp<\/code><strong>):<\/strong> \u06cc\u06c1 \u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0644\u06cc\u0646\u06af\u0648\u06cc\u062c \u0645\u0627\u0688\u0644\u0632 (LLMs) \u062c\u06cc\u0633\u06d2 Llama 3 \u06cc\u0627 Mistral \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0679\u0648\u06a9\u0646 \u067e\u06cc\u0634\u06cc\u0646 \u06af\u0648\u0626\u06cc\u0627\u06ba \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0622\u0688\u06cc\u0648 \u0679\u0631\u0627\u0646\u0633\u06a9\u0631\u067e\u0634\u0646 (<\/strong><code>whisper.cpp<\/code><strong>):<\/strong> \u0627\u0646\u062a\u06c1\u0627\u0626\u06cc \u0627\u0635\u0644\u0627\u062d \u0634\u062f\u06c1 \u0627\u0633\u067e\u06cc\u0686 \u0679\u0648 \u0679\u06cc\u06a9\u0633\u0679 \u06a9\u0646\u0648\u0631\u0698\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba (<\/strong><code>stable-diffusion.cpp<\/code> <strong>\/<\/strong> <code>sdcpp-generation<\/code><strong>):<\/strong> \u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u06a9\u0627 \u0641\u0648\u06a9\u0633 \u06cc\u06c1 \u06c1\u06d2: QVAC \u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0648 \u0627\u0644\u06af \u0627\u0644\u06af \u0637\u0631\u06cc\u0642\u0648\u06ba \u06a9\u06cc \u062d\u0645\u0627\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0648 \u06a9\u06c1 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u062f\u06c1 \u0645\u0627\u0688\u0644 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p><strong>\u0628\u0646\u0688\u0644 \u0645\u0627\u0688\u0644 \u0627\u067e\u0631\u0648\u0686 (\u0645\u0633\u062a\u062d\u06a9\u0645 \u0688\u0641\u06cc\u0648\u0698\u0646 1.5\/2.1\/XL):<\/strong> \u0631\u0648\u0627\u06cc\u062a\u06cc \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u062c\u06c1\u0627\u06ba \u067e\u0648\u0631\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 (\u0679\u06cc\u06a9\u0633\u0679 \u0627\u0646\u06a9\u0648\u0688\u0631\u060c VAE \u0627\u0648\u0631 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u0641\u06cc\u0648\u0698\u0646 UNet) \u06a9\u0648 \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f \u0645\u062a\u062d\u062f GGUF \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u067e\u06a9\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062c\u06cc\u0633\u06d2 <code>SD_V2_1_1B_Q8_0<\/code>)\u06d4  <\/p>\n<p>\u06cc\u06c1 \u0645\u0642\u0627\u0645\u06cc \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u0622\u0633\u0627\u0646 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u0648 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u0627\u0648\u0631 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0645\u0627\u0688\u06cc\u0648\u0644\u0631 \u0645\u0644\u0679\u06cc \u0645\u0627\u0688\u0644 \u0627\u067e\u0631\u0648\u0686 (\u0641\u0644\u06a9\u0633):<\/strong> \u062c\u062f\u06cc\u062f \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u062c\u06cc\u0633\u06d2 <strong>\u0628\u06c1\u0627\u0624\u06d41<\/strong> \u0632\u06cc\u0627\u062f\u06c1 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0633\u06cc\u0679 \u0627\u067e \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c Flux \u0627\u067e\u0646\u06d2 \u06a9\u0645\u067e\u06cc\u0648\u0679\u06cc\u0634\u0646\u0644 \u062f\u0645\u0627\u063a \u06a9\u0648 \u0627\u0644\u06af \u0627\u0644\u06af \u0627\u062c\u0632\u0627\u0621 \u0645\u06cc\u06ba \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0648\u0631 \u0688\u0641\u06cc\u0648\u0698\u0646 \u0679\u0631\u0627\u0646\u0633\u0688\u06cc\u0648\u0633\u0631 (DiT) \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0628\u0691\u06d2 \u0679\u06cc\u06a9\u0633\u0679 \u0627\u0646\u06a9\u0648\u0688\u0631\u0632 (\u062c\u06cc\u0633\u06d2 T5-v1.1-xxl \u0627\u0648\u0631 CLIP-L) \u0627\u0648\u0631 \u0622\u0632\u0627\u062f VAE \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 \u0628\u06be\u06cc \u0627\u0644\u06af \u0633\u06d2 \u0644\u0648\u0688 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4  <\/p>\n<p>\u0645\u062a\u0639\u062f\u062f GGUF \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u0628\u06cc\u06a9 \u0648\u0642\u062a \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0622\u0631\u06a9\u06cc\u0633\u0679\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0646\u0645\u0627\u06cc\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u062a\u06cc\u0632 \u062a\u0631 \u062a\u0639\u0645\u06cc\u0644 \u0627\u0648\u0631 \u062d\u0642\u06cc\u0642\u062a \u067e\u0633\u0646\u062f\u06cc \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0645\u062a\u0646 \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 \u0645\u0627\u0688\u0644 \u06a9\u0627 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u062a\u0642\u0631\u06cc\u0631\u06cc \u062a\u0631\u06a9\u06cc\u0628 (TTS):<\/strong> \u067e\u06cc\u0634\u06c1 \u0648\u0631\u0627\u0646\u06c1 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0628\u0634\u0645\u0648\u0644: <em>\u0686\u06cc\u0679\u0631 \u0628\u0627\u06a9\u0633<\/em> (\u0679\u0631\u0627\u0646\u0633\u0641\u0627\u0631\u0645\u0631 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0632\u06cc\u0631\u0648 \u0634\u0627\u0679 \u0622\u0648\u0627\u0632 \u06a9\u06cc \u0646\u0642\u0644) \u0627\u0648\u0631 <em>\u0633\u067e\u0631\u0633\u0648\u0646\u06a9<\/em> ( \u0628\u0627\u0632\u06cc \u067e\u0631 \u0645\u0628\u0646\u06cc \u062a\u0642\u0631\u06cc\u0631 \u06a9\u06cc \u062a\u0631\u062f\u06cc\u062f)\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u0627\u06cc\u067e\u0644 \u0645\u06cc\u06a9 \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u067e\u0631 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u0645\u0627\u0688\u0644 \u0686\u0644\u0627\u062a\u06d2 \u0648\u0642\u062a\u060c QVAC \u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u0645\u0631\u062a\u0628 \u06a9\u0631\u06a9\u06d2 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u0648 \u062a\u06cc\u0632 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <strong>\u062f\u06be\u0627\u062a<\/strong> \u0633\u0633\u0679\u0645 \u06a9\u06d2 GPU \u06a9\u0648 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06cc\u06c1 \u0627\u06cc\u06a9 API \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 Apple Silicon Mac (M1, M2, M3, M4, \u06cc\u0627 M5 \u0686\u067e) \u06c1\u06d2 \u062a\u0648 \u06cc\u06c1 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u0631\u06a9\u0627\u0648\u0679 \u06a9\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642\u0627\u062a Apple Neural Engine \u0627\u0648\u0631 \u0645\u0631\u0628\u0648\u0637 GPU \u0645\u06cc\u0645\u0648\u0631\u06cc \u067e\u0631 \u0633\u06cc\u06a9\u0646\u0688\u0648\u06ba \u0645\u06cc\u06ba \u0645\u0631\u062a\u0628 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0627\u06c1\u0645\u060c \u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u067e\u0631\u0627\u0646\u06d2 \u0627\u0646\u0679\u06cc\u0644 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0645\u06cc\u06a9 \u067e\u0631 \u0627\u0644\u06af \u06a9\u06cc\u0628\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4 <strong>AMD Radeon GPU<\/strong> (\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c AMD Radeon Pro 5500M \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 16 \u0627\u0646\u0686 \u06a9\u06d2 MacBook Pro \u0645\u06cc\u06ba \u067e\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2) \u0622\u067e \u06a9\u0648 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u06cc \u0633\u0637\u062d \u067e\u0631 \u0628\u0691\u06cc \u062d\u062f\u0648\u06ba \u06a9\u0627 \u0633\u0627\u0645\u0646\u0627 \u06a9\u0631\u0646\u0627 \u067e\u0691\u06d2 \u06af\u0627\u06d4<\/p>\n<ul>\n<li>\n<p>\u067e\u0631\u0627\u0646\u06d2 AMD \u0688\u0633\u06a9\u0631\u06cc\u0679 GPUs \u06a9\u06d2 \u0644\u06cc\u06d2 macOS \u0645\u06cc\u0679\u0644 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632 \u062c\u062f\u06cc\u062f \u062a\u0631\u06cc\u0646 \u0645\u0634\u06cc\u0646 \u0644\u0631\u0646\u0646\u06af \u06a9\u0645\u067e\u06cc\u0648\u0679 \u0634\u06cc\u0688\u0631\u0632 \u0627\u0648\u0631 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u0631\u06cc\u0688\u06a9\u0634\u0646 \u0622\u067e\u0631\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba <code>stable-diffusion.cpp<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0627\u0646\u0641\u0631\u0646\u0633 \u0648\u0631\u06a9\u0631 \u0627\u0646 \u063a\u06cc\u0631 \u062a\u0639\u0627\u0648\u0646 \u06cc\u0627\u0641\u062a\u06c1 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u06a9\u0648 \u0645\u0631\u062a\u0628 \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0633\u062e\u062a C++ \u06a9\u0631\u06cc\u0634 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627 (<code>SIGABRT<\/code>) \u062f\u0627\u062e\u0644\u06c1 <code>ggml-metal-ops.cpp<\/code> \u0634\u06cc\u0688\u0631 \u0627\u0646\u06a9\u0648\u0688\u0631\u060c \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u06a9\u0627 \u0639\u0645\u0644 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u0637\u0648\u0631 \u067e\u0631 \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0627\u0633 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u06cc \u0631\u06a9\u0627\u0648\u0679 \u06a9\u0648 \u0679\u06a9\u0631\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648\u060c \u0688\u06cc\u0641\u0627\u0644\u0679 GPU \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u0622\u067e \u06a9\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u06a9\u0631\u06cc\u0634 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u062c\u0627\u0626\u06d2 \u06af\u06cc \u062c\u0628 \u0628\u06be\u06cc \u0622\u067e \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u0633\u0626\u0644\u06d2 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0645\u0627\u0688\u0644 \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u0633\u06cc\u0679 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u067e\u0646\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u0648 CPU \u067e\u0631 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 <code>device<\/code> \u06a9\u0648 <code>\"cpu\"<\/code> \u0627\u06cc\u06a9 \u062f\u06be\u0627\u06af\u06d2 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u06cc\u0633\u06d2 <code>threads: 4<\/code>)\u06d4 CPU \u067e\u0631 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u06d2 \u0645\u06cc\u06ba GPU \u06a9\u06cc \u0646\u0633\u0628\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u062a\u0645\u0627\u0645 \u0633\u0633\u0679\u0645\u0632 \u067e\u0631 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0633\u06d2 \u0642\u0637\u0639 \u0646\u0638\u0631 \u06a9\u06c1 GPU \u06a9\u062a\u0646\u0627 \u067e\u0631\u0627\u0646\u0627 \u06cc\u0627 \u0645\u062d\u062f\u0648\u062f \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-the-image-generation-pipeline\">\u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646<\/h2>\n<p>\u0644\u0648\u06a9\u0644 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0644\u0627\u0626\u0641 \u0633\u0627\u0626\u06cc\u06a9\u0644 \u06a9\u0648 \u0645\u0631\u0628\u0648\u0637 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06c1\u0645\u0627\u0631\u06cc \u0627\u06cc\u067e \u0631\u06cc\u0626\u0644 \u0679\u0627\u0626\u0645 \u0627\u06cc\u0648\u0646\u0679 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">[Browser Client]                                  [Node.js Server]\n       |                                                 |\n       | ------ 1. Connects & Checks Model --------->    |\n       | <----- 2. Downloads &#038; Loads Model ----------     | (Model Cached locally)\n       |                                                 |\n       | ------ 3. Submits prompt (\"Cozy cabin...\") ->  |\n       |                                                 |\n       |                                                 | === [ QVAC Inference Engine ] ===\n       |                                                 | \n       | <----- 4. Denoising Step Updates (e.g. 5\/20) -- | (Streams steps in real time)\n       |                                                 |\n       | <----- 5. Sends final image (Base64 DataURL) -- | (Direct in-memory payload)\n       |                                                 |\n<\/code><\/pre>\n<h2 id=\"heading-complete-implementation\">\u0645\u06a9\u0645\u0644 \u0646\u0641\u0627\u0630<\/h2>\n<p>\u0622\u0626\u06cc\u06d2 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u067e\u0648\u0631\u06d2 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06d2 \u0630\u062e\u06cc\u0631\u06d2 \u06a9\u0648 \u06a9\u0644\u0648\u0646 \u06a9\u0631\u06a9\u06d2 \u0627\u0633 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u0627\u0633\u06d2 \u0686\u0644\u0627 \u06a9\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0641\u0648\u0644\u0688\u0631 \u0628\u0646\u0627 \u06a9\u0631 \u0634\u0631\u0648\u0639 \u0633\u06d2 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>npm init -y<\/code>\u0627\u0646\u062d\u0635\u0627\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba (<code>@qvac\/sdk<\/code>, <code>express<\/code>, <code>socket.io<\/code>, <code>concurrently<\/code>) \u0627\u0648\u0631 \u062a\u0631\u062a\u06cc\u0628 <code>\"type\": \"module\"<\/code> \u0622\u067e \u06a9\u0627 <code>package.json<\/code>.<\/p>\n<h3 id=\"heading-1-server-configuration-serverjs\">1. \u0633\u0631\u0648\u0631 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 (<code>server.js<\/code>)<\/h3>\n<p>\u0646\u0627\u0645 \u06a9\u06cc \u0627\u06cc\u06a9 \u0641\u0627\u0626\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4 <code>server.js<\/code> \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0646\u0641\u0627\u0630 \u06a9\u0648 \u0686\u0633\u067e\u0627\u06ba \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-javascript\">import express from 'express';\nimport path from 'path';\nimport http from 'http';\nimport { Server } from 'socket.io';\nimport fs from 'fs';\nimport { fileURLToPath } from 'url';\nimport { loadModel, unloadModel, getLoadedModelInfo, diffusion, SD_V2_1_1B_Q8_0 } from \"@qvac\/sdk\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst app = express();\nconst server = http.createServer(app);\nconst io = new Server(server);\n\nconst PORT = process.env.PORT || 3000;\n\napp.use(express.json());\napp.use(express.static(path.join(__dirname, 'public')));\n\nconst CONFIG_PATH = path.join(__dirname, '.device-preference.json');\n\nfunction getPreferredDevice() {\n  try {\n    if (fs.existsSync(CONFIG_PATH)) {\n      const data = JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf8'));\n      return data.device || null;\n    }\n  } catch (err) {\n    console.error('Failed to read device preference:', err.message);\n  }\n  return null;\n}\n\nfunction setPreferredDevice(device) {\n  try {\n    fs.writeFileSync(CONFIG_PATH, JSON.stringify({ device }), 'utf8');\n  } catch (err) {\n    console.error('Failed to write device preference:', err.message);\n  }\n}\n\n\/\/ Global model state\nlet loadedModelId = process.modelId || null;\nlet modelLoadPercent = 0;\nlet modelLoadStatus=\"Awaiting trigger...\";\nlet isModelLoading = false;\n\nconst modelSize = (SD_V2_1_1B_Q8_0.expectedSize \/ (1024 * 1024 * 1024)).toFixed(2) + ' GB';\n\nfunction broadcastModelProgress(percent, status) {\n  io.emit('model-download-progress', { percent, status, size: modelSize });\n}\n\nio.on('connection', (socket) => {\n  console.log('Client connected:', socket.id);\n\n  socket.on('disconnect', () => {\n    console.log('Client disconnected:', socket.id);\n  });\n\n  \/\/ Trigger model download\n  socket.on('trigger-model-download', async () => {\n    \/\/ If already loaded, verify it's still alive in the worker\n    if (loadedModelId) {\n      try {\n        await getLoadedModelInfo({ modelId: loadedModelId });\n        socket.emit('model-download-progress', {\n          percent: 100,\n          status: 'Model fully loaded locally.',\n          size: modelSize\n        });\n        return;\n      } catch (err) {\n        console.log('Model ID was stale\/not found, resetting state and reloading...', err.message);\n        loadedModelId = null;\n        process.modelId = null;\n      }\n    }\n\n    \/\/ If currently loading, report current progress\n    if (isModelLoading) {\n      socket.emit('model-download-progress', {\n        percent: Math.round(modelLoadPercent),\n        status: modelLoadStatus,\n        size: modelSize\n      });\n      return;\n    }\n\n    isModelLoading = true;\n    modelLoadPercent = 0;\n    modelLoadStatus=\"Initiating model download...\";\n    broadcastModelProgress(modelLoadPercent, modelLoadStatus);\n\n    try {\n      console.log('Starting model download...');\n      const preferredDevice = getPreferredDevice();\n      const loadConfig = { prediction: \"v\" };\n      if (preferredDevice) {\n        loadConfig.device = preferredDevice;\n        if (preferredDevice === 'cpu') {\n          loadConfig.threads = 4;\n        }\n        console.log(`Using cached device preference: ${preferredDevice}`);\n      }\n\n      loadedModelId = await loadModel({\n        modelSrc: SD_V2_1_1B_Q8_0,\n        modelType: \"sdcpp-generation\",\n        modelConfig: loadConfig,\n        onProgress: (p) => {\n          modelLoadPercent = p.percentage;\n          modelLoadStatus = p.percentage >= 100 ? 'Model fully loaded locally.' : `Downloading model weights... (${p.percentage.toFixed(1)}%)`;\n          broadcastModelProgress(Math.round(modelLoadPercent), modelLoadStatus);\n        }\n      });\n      process.modelId = loadedModelId;\n\n      isModelLoading = false;\n      console.log('Model loaded successfully. ID:', loadedModelId);\n    } catch (err) {\n      isModelLoading = false;\n      modelLoadPercent = 0;\n      modelLoadStatus=\"Failed to load model: \" + err.message;\n      console.error('Failed to load model:', err);\n      broadcastModelProgress(0, modelLoadStatus);\n      socket.emit('error_event', { message: 'Failed to load model: ' + err.message });\n    }\n  });\n\n  socket.on('generate', async (data) => {\n    const { prompt, ratio } = data;\n    if (!prompt || prompt.trim() === '') {\n      socket.emit('error_event', { message: 'Prompt is required' });\n      return;\n    }\n\n    if (!loadedModelId) {\n      socket.emit('error_event', { message: 'Model is not loaded yet' });\n      return;\n    }\n\n    const runDiffusion = async (modelIdToUse) => {\n      socket.emit('progress', {\n        percent: 0,\n        status: 'Starting diffusion process...',\n        sub: 'DIFFUSION INITIALIZING'\n      });\n\n      console.log(`Generating image for prompt: \"({prompt}\" with ratio: ){ratio} using model ID: ${modelIdToUse}`);\n\n      const { progressStream, outputs, stats } = diffusion({\n        modelId: modelIdToUse,\n        prompt,\n      });\n\n      \/\/ Stream progress steps\n      for await (const { step, totalSteps } of progressStream) {\n        const percent = Math.round((step \/ totalSteps) * 100);\n        socket.emit('progress', {\n          percent,\n          status: `Denoising step ({step}\/){totalSteps}...`,\n          sub: 'RUNNING DIFFUSION'\n        });\n      }\n\n      \/\/ Resolve output buffers\n      const buffers = await outputs;\n      if (!buffers || buffers.length === 0) {\n        throw new Error('No image buffer returned from diffusion model.');\n      }\n\n      \/\/ Convert image buffer to a base64 Data URL instead of saving to disk\n      const base64Data = Buffer.from(buffers[0]).toString('base64');\n      const dataUrl = `data:image\/png;base64,${base64Data}`;\n\n      \/\/ Emit success\n      socket.emit('success', {\n        url: dataUrl,\n        prompt,\n        seed: (await stats).seed || -1\n      });\n\n      console.log(`Image generated and emitted successfully as base64 Data URL.`);\n    };\n\n    try {\n      await runDiffusion(loadedModelId);\n    } catch (err) {\n      console.error('Image generation failed:', err);\n\n      const isCrash = err.code === 50205 || (err.message && err.message.includes('WORKER_CRASHED'));\n      if (isCrash) {\n        console.log('Worker crashed during GPU execution. Attempting CPU fallback...');\n\n        \/\/ Save device preference so we load CPU directly next time and prevent double loading\n        setPreferredDevice('cpu');\n\n        \/\/ Reset the stale model state\n        loadedModelId = null;\n        process.modelId = null;\n\n        socket.emit('progress', {\n          percent: 0,\n          status: 'GPU driver crashed. Automatically falling back to CPU mode...',\n          sub: 'CPU FALLBACK LOADING'\n        });\n\n        try {\n          console.log('Loading model on CPU...');\n          isModelLoading = true;\n          modelLoadPercent = 0;\n          modelLoadStatus=\"Loading CPU model weights...\";\n          broadcastModelProgress(modelLoadPercent, modelLoadStatus);\n\n          loadedModelId = await loadModel({\n            modelSrc: SD_V2_1_1B_Q8_0,\n            modelType: \"sdcpp-generation\",\n            modelConfig: { prediction: \"v\", device: 'cpu', threads: 4 },\n            onProgress: (p) => {\n              modelLoadPercent = p.percentage;\n              modelLoadStatus = `Loading CPU model weights... (${p.percentage.toFixed(1)}%)`;\n              broadcastModelProgress(Math.round(modelLoadPercent), modelLoadStatus);\n            }\n          });\n          process.modelId = loadedModelId;\n          isModelLoading = false;\n          console.log('Model loaded successfully on CPU. ID:', loadedModelId);\n\n          \/\/ Retry diffusion on CPU\n          await runDiffusion(loadedModelId);\n        } catch (cpuErr) {\n          console.error('CPU fallback execution failed:', cpuErr);\n          isModelLoading = false;\n          socket.emit('error_event', { message: 'Image generation failed on CPU: ' + cpuErr.message });\n        }\n      } else {\n        if (err.message && (err.message.includes('MODEL_NOT_FOUND') || err.message.includes('not found'))) {\n          loadedModelId = null;\n          process.modelId = null;\n          broadcastModelProgress(0, 'Model state lost. Please re-trigger download.');\n        }\n        socket.emit('error_event', { message: 'Image generation failed: ' + err.message });\n      }\n    }\n  });\n});\n\napp.get('*', (req, res) => {\n  res.sendFile(path.join(__dirname, 'public', 'index.html'));\n});\n\nserver.listen(PORT, () => {\n  console.log(`Server is running at http:\/\/localhost:${PORT}`);\n});\n\n\/\/ Clean exit handler\nasync function handleCleanup() {\n  const modelId = process.modelId || loadedModelId;\n  if (modelId && modelId !== 'mock-model-id') {\n    try {\n      await unloadModel({ modelId, clearStorage: false });\n    } catch (err) {}\n  }\n  process.exit(0);\n}\n\nprocess.on('SIGINT', handleCleanup);\nprocess.on('SIGTERM', handleCleanup);\n<\/code><\/pre>\n<h3 id=\"heading-2-frontend-architecture-summary\">2. \u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631 \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1<\/h3>\n<p>\u0686\u0648\u0646\u06a9\u06c1 \u06c1\u0645\u0627\u0631\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0686\u0644\u062a\u06cc \u06c1\u06d2\u060c \u0641\u0631\u0646\u0679 \u0627\u06cc\u0646\u0688 \u0627\u06cc\u06a9 \u0635\u0641\u062d\u06c1 \u06a9\u06cc \u0648\u06cc\u0628 \u0627\u06cc\u067e \u06c1\u06d2 \u062c\u0648 \u0648\u0646\u06cc\u0644\u0627 \u0627\u06cc\u0686 \u0679\u06cc \u0627\u06cc\u0645 \u0627\u06cc\u0644\u060c \u0633\u06cc \u0627\u06cc\u0633 \u0627\u06cc\u0633\u060c \u0627\u0648\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0633\u0627\u0626\u06cc\u0688 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u067e\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0646\u0627\u0626\u06cc \u06af\u0626\u06cc \u06c1\u06d2 \u062c\u0648 \u0627\u06cc\u06a9\u0633\u067e\u0631\u06cc\u0633 \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 <strong>Socket.io<\/strong> \u0648\u06cc\u0628 \u0633\u0627\u06a9\u0679\u06d4<\/p>\n<p>UI \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679\u0633 \u0627\u0648\u0631 \u0627\u0633\u0679\u0627\u0626\u0644 \u0634\u06cc\u0679\u0633 \u06a9\u06cc \u0633\u06cc\u06a9\u0691\u0648\u06ba \u0644\u0627\u0626\u0646\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u06a9\u0648 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u06c1\u0645 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0622\u0631\u06a9\u06cc\u0633\u0679\u0631\u06cc\u0634\u0646 \u067e\u0631 \u062a\u0648\u062c\u06c1 \u0645\u0631\u06a9\u0648\u0632 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 \u0622\u067e \u06c1\u0645\u0627\u0631\u06d2 GitHub \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0633\u06d2 \u0645\u06a9\u0645\u0644 HTML \u0644\u06d2 \u0622\u0624\u0679\u060c Tailwind \u0637\u0631\u0632\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633\u06a9\u0631\u067e\u0679\u0633 \u062d\u0627\u0635\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u062e\u0644\u0627\u0635\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u06a9\u0644\u0627\u0626\u0646\u0679 \u0633\u0631\u0648\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ol>\n<li>\n<p><strong>\u067e\u0631\u06cc \u0641\u0644\u0627\u0626\u0679 \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0630\u06cc\u0631\u06cc (<\/strong><code>trigger-model-download<\/code><strong>):<\/strong> \u062c\u06cc\u0633\u06d2 \u06c1\u06cc \u0635\u0641\u062d\u06c1 \u0644\u0648\u0688 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u06cc\u06a9 WebSocket \u06a9\u0646\u06a9\u0634\u0646 \u0642\u0627\u0626\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 <code>trigger-model-download<\/code>. \u0633\u0631\u0648\u0631 \u0627\u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0645\u0627\u0688\u0644 \u06a9\u06cc\u0634\u0688\/\u0644\u0648\u0688 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0628\u0631\u0627\u0688\u06a9\u0627\u0633\u0679\u0646\u06af \u06a9\u0627 \u0639\u0645\u0644 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0634\u0648\u0631 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u0627 \u0633\u0644\u0633\u0644\u06c1 (<\/strong><code>progress<\/code><strong>):<\/strong> \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u062a\u062e\u0644\u06cc\u0642 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646\u060c \u0633\u0631\u0648\u0631 \u0645\u0633\u0644\u0633\u0644 \u067e\u06cc\u0634 \u0631\u0641\u062a \u06a9\u06d2 \u0648\u0627\u0642\u0639\u0627\u062a \u06a9\u0648 \u0633\u0679\u0631\u06cc\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0645\u0646\u062d\u0631\u0641 \u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 <code>Denoising step 12\/20...<\/code>)\u06d4 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0628\u0635\u0631\u06cc \u067e\u06cc\u0634 \u0631\u0641\u062a \u0628\u0627\u0631 \u0627\u0648\u0631 \u0627\u0633\u0679\u06cc\u0679\u0633 \u0644\u06cc\u0628\u0644 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0688\u06cc\u0679\u0627 URL \u067e\u0627\u0633 \u06a9\u0631\u06cc\u06ba (<\/strong><code>success<\/code><strong>):<\/strong> \u067e\u06be\u06cc\u0644\u0646\u06d2 \u06a9\u0627 \u0645\u0631\u062d\u0644\u06c1 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0633\u0631\u0648\u0631 \u0628\u0627\u0626\u0646\u0631\u06cc \u0627\u0645\u06cc\u062c \u0628\u0641\u0631 \u06a9\u0648 \u0628\u06cc\u0633 64 \u0633\u0679\u0631\u0646\u06af \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 <code>success<\/code> \u0648\u0627\u0642\u0639\u06c1 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633 Base64 \u0688\u06cc\u0679\u0627 URL \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0645\u0627\u062e\u0630 \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code><img\/><\/code> \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0645\u0642\u0627\u0645\u06cc \u0688\u0633\u067e\u0644\u06d2 \u0627\u0648\u0631 \u0641\u0648\u0631\u06cc \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0639\u0646\u0627\u0635\u0631\u06d4<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"heading-codebase-breakdown\">\u06a9\u0648\u0688 \u0628\u06cc\u0633 \u062a\u062c\u0632\u06cc\u06c1<\/h2>\n<p>\u0622\u0626\u06cc\u06d2 \u0627\u0646 \u06a9\u0644\u06cc\u062f\u06cc \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u067e\u0631 \u06af\u06c1\u0631\u06cc \u0646\u0638\u0631 \u0688\u0627\u0644\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0645\u0642\u0627\u0645\u06cc \u0622\u0641 \u0644\u0627\u0626\u0646 \u0627\u0645\u06cc\u062c \u062c\u0646\u0631\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-1-multi-client-model-id-binding-processmodelid\">1. \u0645\u0644\u0679\u06cc \u06a9\u0644\u0627\u0626\u0646\u0679 \u0645\u0627\u0688\u0644 ID \u0628\u0627\u0626\u0646\u0688\u0646\u06af (<code>process.modelId<\/code>)<\/h3>\n<p>\u06a9\u0648\u0627\u0646\u0679\u0627\u0626\u0632\u0688 \u0648\u0632\u0646 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u06cc \u0627\u06cc\u06a9 \u0642\u0627\u0628\u0644 \u0630\u06a9\u0631 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u0628\u0627\u0631 \u062c\u0628 \u06c1\u0645 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba <code>loadModel()<\/code>QVAC \u0627\u06cc\u06a9 \u0639\u0644\u06cc\u062d\u062f\u06c1 C++ \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u06d2 \u0639\u0645\u0644 \u06a9\u0648 \u0628\u0648\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 ( <code>Bare<\/code> \u06a9\u0627\u0631\u06a9\u0646\u0627\u0646) \u062c\u06cc \u062c\u06cc \u0627\u06cc\u0645 \u0627\u06cc\u0644 \u0631\u0646 \u0679\u0627\u0626\u0645 \u06a9\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4<\/p>\n<p>\u062c\u0628 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0635\u0641\u062d\u06c1 \u06a9\u0648 \u0631\u06cc\u0641\u0631\u06cc\u0634 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0627\u0624\u0632\u0631 \u0679\u06cc\u0628 \u06a9\u06be\u0648\u0644\u062a\u0627 \u06c1\u06d2 \u062a\u0648 \u0645\u062a\u0639\u062f\u062f \u067e\u0631\u0627\u0633\u06cc\u0633\u0632 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06cc\u0627 2.3GB GGUF \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0645\u062a\u0639\u062f\u062f \u0628\u0627\u0631 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06c1\u0645 \u0644\u0648\u0688 \u0634\u062f\u06c1 \u0645\u0627\u0688\u0644 ID \u06a9\u0648 \u0639\u0627\u0644\u0645\u06cc \u0633\u0637\u062d \u067e\u0631 \u0646\u0648\u0688 \u067e\u0631 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>process<\/code> \u0627\u0639\u062a\u0631\u0627\u0636:<\/p>\n<pre><code class=\"language-javascript\">let loadedModelId = process.modelId || null;\n\/\/ ...\nprocess.modelId = loadedModelId;\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u067e\u0648\u0631\u06d2 \u0639\u0645\u0644 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0646\u06af\u0644\u0679\u0646 \u0631\u062c\u0633\u0679\u0631\u06cc \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0639\u0627\u0644\u0645\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646\u062a\u0627 \u06c1\u06d2: <strong>\u067e\u0631\u0627\u0646\u06d2 \u06a9\u0627\u0631\u06a9\u0646 \u06a9\u06d2 \u0639\u0645\u0644<\/strong>. \u0627\u06af\u0631 \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u06a9\u0627 \u0639\u0645\u0644 \u0628\u0639\u062f \u0645\u06cc\u06ba \u06a9\u0631\u06cc\u0634 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u06d2 \u0645\u0627\u0688\u0644 \u0644\u0648\u0688 \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u0646\u06d2 \u0627\u0648\u0631 ID \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>process.modelId<\/code> \u06cc\u06c1 \u0645\u0631\u062f\u06c1 \u062d\u0648\u0627\u0644\u0648\u06ba \u0633\u06d2 \u0628\u06be\u0631\u0627 \u06c1\u0648\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u06d2 \u0679\u06be\u06cc\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062c\u0628 \u0628\u06be\u06cc \u06a9\u0648\u0626\u06cc \u0646\u06cc\u0627 \u06a9\u0644\u0627\u0626\u0646\u0679 \u062c\u0648\u0691\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u0627\u0688\u0644 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u0679\u0631\u06af\u0631 \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06c1\u0645 \u0645\u0627\u0688\u0644 ID \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba: <code>getLoadedModelInfo<\/code>:<\/p>\n<pre><code class=\"language-javascript\">if (loadedModelId) {\n  try {\n    await getLoadedModelInfo({ modelId: loadedModelId });\n    socket.emit('model-download-progress', { percent: 100, status: 'Model fully loaded locally.' });\n    return;\n  } catch (err) {\n    console.log('Model ID was stale, resetting state...', err.message);\n    loadedModelId = null;\n    process.modelId = null;\n  }\n}\n<\/code><\/pre>\n<p>\u062c\u0628 \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u0645\u0631 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>getLoadedModelInfo<\/code> \u0627\u06cc\u06a9 \u062e\u0631\u0627\u0628\u06cc \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u06a9\u06cc\u0686 \u0628\u0644\u0627\u06a9 \u0627\u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u067e\u0631\u0627\u0646\u06d2 \u062d\u0648\u0627\u0644\u06c1 \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0644\u0648\u0688\u0646\u06af \u0631\u0648\u0679\u06cc\u0646 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>[!IMPORTANT] <strong>\u0639\u0645\u0644 \u0633\u0646\u06af\u0644\u0679\u0646 \u0633\u0627\u0644\u0645\u06cc\u062a:<\/strong> \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u0645\u06cc\u0634\u06c1 \u067e\u0631\u06cc \u0641\u0644\u0627\u0626\u0679 \u0645\u0627\u0688\u0644 \u06a9\u06cc \u062d\u0627\u0644\u062a \u06a9\u06cc \u0645\u0631\u0626\u06cc\u062a \u0631\u06a9\u06be\u06cc\u06ba\u06d4 \u062a\u0648\u062b\u06cc\u0642 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 <code>diffusion()<\/code> \u067e\u0631\u0627\u0646\u06d2 \u0645\u0627\u0688\u0644 IDs \u06a9\u0627 \u0646\u062a\u06cc\u062c\u06c1 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0633\u0627\u0626\u06cc\u0688 \u06a9\u0646\u06a9\u0634\u0646 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u0627\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0648\u0631\u06a9\u0631 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc\u0648\u06ba \u06a9\u0627 \u0628\u0627\u0639\u062b \u0628\u0646\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h3 id=\"heading-2-in-memory-image-serialization-zero-disk-writes\">2. \u0627\u0646 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0627\u0645\u06cc\u062c \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646 (\u0635\u0641\u0631 \u0688\u0633\u06a9 \u0644\u06a9\u06be\u062a\u0627 \u06c1\u06d2)<\/h3>\n<p>\u062a\u062e\u0644\u06cc\u0642 \u06a9\u0631\u062f\u06c1 \u0627\u0645\u06cc\u062c \u06a9\u0648 \u0633\u0631\u0648\u0631 \u06a9\u06cc \u06c1\u0627\u0631\u0688 \u0688\u0631\u0627\u0626\u06cc\u0648 \u067e\u0631 \u0644\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u0627\u06c1\u0645 I\/O \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0631\u0627\u0646\u06cc \u062a\u0635\u0648\u06cc\u0631\u06cc \u0641\u0627\u0626\u0644\u0648\u06ba \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062d\u0633\u0628 \u0636\u0631\u0648\u0631\u062a \u06a9\u0631\u0648\u0646 \u06a9\u0644\u06cc\u0646 \u0627\u067e \u0627\u0633\u06a9\u0631\u067e\u0679 \u0644\u06a9\u06be\u0646\u0627 \u067e\u0691\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0632\u06cc\u0627\u062f\u06c1 \u0635\u0627\u0631\u0641 \u0679\u0631\u06cc\u0641\u06a9 \u0648\u0627\u0644\u06d2 \u0633\u0633\u0679\u0645 \u067e\u0631 \u0622\u067e \u06a9\u0648 \u0688\u0633\u06a9 \u06a9\u06cc \u062c\u06af\u06c1 \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u062e\u0637\u0631\u06c1 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>QVAC \u06a9\u06d2 \u0628\u0639\u062f <code>diffusion()<\/code> \u0641\u0646\u06a9\u0634\u0646 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 PNG \u0641\u0627\u0626\u0644 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0627\u0646 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0628\u0627\u0626\u0646\u0631\u06cc \u0628\u0641\u0631 \u0645\u06cc\u06ba \u0622\u0624\u0679 \u067e\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 (<code>Uint8Array<\/code>\u0645\u0642\u0627\u0645\u06cc \u0641\u0627\u0626\u0644 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0628\u0627\u0626\u0646\u0631\u06cc \u0633\u0631\u0646\u06cc \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u06ba \u0628\u06cc\u0633 64 \u0633\u0679\u0631\u0646\u06af \u0645\u06cc\u06ba \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-javascript\">const base64Data = Buffer.from(buffers[0]).toString('base64');\nconst dataUrl = `data:image\/png;base64,${base64Data}`;\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0688\u06cc\u0679\u0627 URL \u06a9\u0644\u0627\u0626\u0646\u0679 \u06a9\u0648 WebSocket \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0628\u06be\u06cc\u062c\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633\u06d2 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0639\u0646\u0635\u0631 \u0633\u06d2 \u062c\u0648\u0691 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p><strong>\u06a9\u0648\u0626\u06cc \u0688\u0633\u06a9 \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u0646\u06c1\u06cc\u06ba:<\/strong> \u0633\u0631\u0648\u0631 \u06a9\u0628\u06be\u06cc \u0628\u06be\u06cc \u06c1\u0627\u0631\u0688 \u0688\u0631\u0627\u0626\u06cc\u0648 \u067e\u0631 \u0627\u06cc\u06a9 \u0628\u0627\u0626\u0679 \u0646\u06c1\u06cc\u06ba \u0644\u06a9\u06be\u062a\u0627\u060c SSD \u0644\u0627\u0626\u0641 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u0628\u0644\u0648\u0679 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0641\u0648\u0631\u06cc \u062a\u0631\u0633\u06cc\u0644:<\/strong> \u0688\u0633\u06a9 \u0633\u06cc\u0631\u06cc\u0644\u0627\u0626\u0632\u06cc\u0634\u0646 \u0644\u06cc\u0679\u0646\u0633\u06cc \u06a9\u0648 \u0646\u0638\u0631\u0627\u0646\u062f\u0627\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0679\u0631\u0627\u0646\u0633\u0641\u0631\u0632 \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0628\u0641\u0631\u0632 \u0645\u06cc\u06ba \u067e\u0631\u0648\u0633\u06cc\u0633 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0622\u0633\u0627\u0646 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0646\u0636\u0645\u0627\u0645:<\/strong> \u06a9\u0644\u0627\u0626\u0646\u0679\u0633 \u06a9\u0648 \u062c\u0627\u0645\u062f \u062a\u0635\u0648\u06cc\u0631\u06cc URL \u067e\u0627\u062a\u06be \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 Base64 \u0688\u06cc\u0679\u0627 URLs \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0631\u06cc\u0646\u0688\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0635\u0627\u0631\u0641\u06cc\u0646 \u06a9\u0648 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06cc\u0627 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0645\u0644\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<h3 id=\"heading-3-gpu-to-cpu-fallback-amp-preference-cache-strategy\">3. GPU-CPU \u0641\u0627\u0644 \u0628\u06cc\u06a9 \u0627\u0648\u0631 \u062a\u0631\u062c\u06cc\u062d\u06cc \u06a9\u06cc\u0634 \u062d\u06a9\u0645\u062a \u0639\u0645\u0644\u06cc<\/h3>\n<p>\u0645\u0642\u0627\u0645\u06cc-\u067e\u06c1\u0644\u06d2 AI \u06a9\u06d2 \u0633\u0628 \u0633\u06d2 \u0628\u0691\u06d2 \u0686\u06cc\u0644\u0646\u062c\u0648\u06ba \u0645\u06cc\u06ba \u0633\u06d2 \u0627\u06cc\u06a9 \u06a9\u0644\u0627\u0626\u0646\u0679 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u06a9\u06cc \u0646\u0633\u0628\u062a \u06c1\u06d2\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u0645\u062c\u0631\u062f AMD Radeon GPUs \u06a9\u06d2 \u0633\u0627\u062a\u06be \u067e\u0631\u0627\u0646\u06d2 \u0627\u0646\u0679\u06cc\u0644 \u0645\u06cc\u06a9 \u0627\u06cc\u067e\u0644 \u06a9\u06d2 \u0645\u06cc\u0679\u0644 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0633\u0679\u06cc\u0628\u0644 \u0688\u0641\u06cc\u0648\u0698\u0646 \u0627\u0646\u062c\u0646 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062c\u062f\u06cc\u062f \u0679\u06cc\u0646\u0633\u0631 \u0631\u06cc\u0688\u06a9\u0634\u0646 \u0622\u067e\u0631\u06cc\u0679\u0631\u0632 \u06a9\u06cc \u06a9\u0645\u06cc \u06c1\u06d2\u060c \u062c\u0633 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0633\u062e\u062a C++ \u06a9\u0631\u06cc\u0634 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba (<code>SIGABRT<\/code>) \u0627\u0646\u062f\u0631 <code>ggml-metal-ops.cpp<\/code>.<\/p>\n<p>\u0627\u067e\u0646\u06cc \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0633\u062a\u0642\u0644 \u0644\u0648\u0688\u0646\u06af \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u0645\u0627\u0688\u0644 \u0644\u0648\u0688\u0646\u06af \u06a9\u0648 \u062f\u0648 \u0628\u0627\u0631 \u0679\u0631\u06af\u0631 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u06cc\u06ba (\u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0627\u0633\u0679\u0627\u0631\u0679 \u0627\u067e \u06a9\u06d2 \u0648\u0642\u062a \u063a\u06cc\u0631 \u0645\u0648\u0627\u0641\u0642 GPU \u067e\u0631 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u067e\u06c1\u0644\u06d2 \u067e\u0631\u0627\u0645\u067e\u0679 \u06a9\u0631\u06cc\u0634 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f CPU \u0641\u0627\u0644 \u0628\u06cc\u06a9 \u067e\u0631)\u06d4 <strong>\u0688\u06cc\u0648\u0627\u0626\u0633 \u062a\u0631\u062c\u06cc\u062d\u06cc \u06a9\u06cc\u0634\u06d2<\/strong> \u0641\u0627\u0626\u0644(<code>.device-preference.json<\/code>) C++ \u06a9\u0627\u0631\u06a9\u0646 \u06a9\u0631\u06cc\u0634 \u0627\u0646\u0679\u0631\u0633\u06cc\u067e\u0679\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be:<\/p>\n<pre><code class=\"language-javascript\">try {\n  await runDiffusion(loadedModelId);\n} catch (err) {\n  const isCrash = err.code === 50205 || err.message.includes('WORKER_CRASHED');\n  if (isCrash) {\n    \/\/ 1. Cache the CPU preference on disk\n    setPreferredDevice('cpu');\n\n    \/\/ 2. Reset stale references\n    loadedModelId = null;\n    process.modelId = null;\n\n    \/\/ 3. Automatically load the model on CPU with multi-threading\n    loadedModelId = await loadModel({\n      modelSrc: SD_V2_1_1B_Q8_0,\n      modelType: \"sdcpp-generation\",\n      modelConfig: { prediction: \"v\", device: \"cpu\", threads: 4 }\n    });\n    process.modelId = loadedModelId;\n\n    \/\/ 4. Transparently retry generation\n    await runDiffusion(loadedModelId);\n  }\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u062f\u0648 \u067e\u0631\u062a \u06a9\u06d2 \u062f\u0641\u0627\u0639 \u06a9\u0627 \u0641\u0627\u0626\u062f\u06c1 \u0627\u0679\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<ol>\n<li>\n<p><strong>\u0645\u062a\u062d\u0631\u06a9 \u0628\u062d\u0627\u0644\u06cc:<\/strong> \u0627\u06af\u0631 GPU \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u06a9\u0648\u0626\u06cc \u062d\u0627\u062f\u062b\u06c1 \u067e\u06cc\u0634 \u0622\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0627\u06cc\u067e \u0627\u0633\u06d2 \u0631\u0648\u06a9 \u0644\u06d2 \u06af\u06cc \u0627\u0648\u0631 \u0627\u0633\u06d2 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631 \u0644\u06d2 \u06af\u06cc\u06d4 <code>\"device\": \"cpu\"<\/code> \u06a9\u0648 <code>.device-preference.json<\/code> \u0645\u062a\u062d\u0631\u06a9 \u0637\u0648\u0631 \u067e\u0631 \u0641\u0627\u0626\u0644 \u0633\u06d2 \u0648\u0632\u0646 \u06a9\u0648 CPU \u062a\u06be\u0631\u06cc\u0688 \u067e\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u0648\u0688 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u062a\u062e\u0644\u06cc\u0642 \u06a9\u06cc \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u06a9\u0631\u06cc\u06ba\u06d4 \u06a9\u0644\u0627\u0626\u0646\u0679 \u0627\u0633\u0679\u06cc\u0679\u0633 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0633\u06d2 \u06cc\u06c1 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 CPU \u0641\u0627\u0644 \u0628\u06cc\u06a9 \u06c1\u0648 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u0628\u0635\u0648\u0631\u062a \u062f\u06cc\u06af\u0631 \u0627\u06cc\u06a9 \u0645\u06c1\u0644\u06a9 \u062d\u0627\u062f\u062b\u06d2 \u0633\u06d2 \u0628\u0686 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u0631\u062c\u06cc\u062d\u06cc \u0627\u0633\u062a\u0642\u0627\u0645\u062a:<\/strong> \u0627\u06af\u0644\u06cc \u0628\u0627\u0631 \u062c\u0628 \u0633\u0631\u0648\u0631 \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u06cc\u0627 \u06a9\u0648\u0626\u06cc \u0635\u0641\u062d\u06c1 \u0644\u0648\u0688 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u067e\u0631\u06cc \u0644\u0648\u0688 \u06a9\u0627 \u0645\u0639\u0645\u0648\u0644 \u0688\u0633\u06a9 \u0633\u06d2 \u06a9\u06cc\u0634 \u0634\u062f\u06c1 \u062a\u0631\u062c\u06cc\u062d\u0627\u062a \u06a9\u0648 \u067e\u0691\u06be\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0641\u0648\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 CPU \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0644\u0648\u0688 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-javascript\">const preferredDevice = getPreferredDevice(); \/\/ Reads .device-preference.json\nconst loadConfig = { prediction: \"v\" };\nif (preferredDevice) {\n  loadConfig.device = preferredDevice;\n  if (preferredDevice === 'cpu') {\n    loadConfig.threads = 4;\n  }\n}\nloadedModelId = await loadModel({\n  modelSrc: SD_V2_1_1B_Q8_0,\n  modelType: \"sdcpp-generation\",\n  modelConfig: loadConfig,\n  \/\/ ...\n});\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0633\u0631\u0648\u0631 \u06a9\u0648 \u0628\u0639\u062f \u06a9\u06d2 \u0633\u06cc\u0634\u0646\u0632 \u0645\u06cc\u06ba \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 GPU \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u06a9\u0648\u0634\u0634\u06cc\u06ba \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0645\u0627\u0688\u0644 \u0635\u0631\u0641 \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u062f\u0631\u0633\u062a \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0679\u0627\u0631\u06af\u0679 \u067e\u0631 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0644\u0648\u0688 \u06c1\u0648\u06d4<\/p>\n<p>[!WARNING] <strong>CPU \u0641\u0627\u0644 \u0628\u06cc\u06a9 \u0644\u06cc\u0679\u0646\u0633\u06cc:<\/strong> CPU \u0645\u0648\u0688 \u0645\u0648\u062c\u0648\u062f\u06c1 \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u0645\u06cc\u06ba \u0644\u0686\u06a9 \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 GPU \u06c1\u0627\u0631\u0688\u0648\u06cc\u0626\u0631 \u06a9\u0648\u0631 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u062a\u0631\u062a\u06cc\u0628 \u0648\u0627\u0631 \u0645\u0644\u0679\u06cc \u062a\u06be\u0631\u06cc\u0688 \u06a9\u0645\u067e\u06cc\u0648\u0679\u06cc\u0634\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u062a\u06cc\u062c\u06d2 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u062c\u0646\u0631\u06cc\u0634\u0646 \u06a9\u0627 \u0648\u0642\u062a \u0646\u0645\u0627\u06cc\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u0644\u0645\u0628\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 (\u06c1\u0645 \u0622\u06c1\u0646\u06af GPUs \u06a9\u06d2 \u0644\u06cc\u06d2 10-15 \u0633\u06cc\u06a9\u0646\u0688 \u06a9\u06d2 \u0645\u0642\u0627\u0628\u0644\u06d2 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 CPUs \u06a9\u06d2 \u0644\u06cc\u06d2 1-2 \u0645\u0646\u0679)\u06d4 \u0641\u0627\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u062a\u0648\u0642\u0639\u0627\u062a \u06a9\u0627 \u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0627\u067e\u0646\u06d2 UI \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0631\u06cc\u0633\u067e\u0627\u0646\u0633\u06cc\u0648 \u067e\u0631\u0648\u06af\u0631\u06cc\u0633 \u0644\u0648\u0688\u0631 \u0688\u06cc\u0632\u0627\u0626\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>QVAC \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0642\u0627\u0645\u06cc \u0641\u0631\u0633\u0679 \u0627\u0633\u0679\u06cc\u0628\u0644 \u0688\u0641\u06cc\u0648\u0698\u0646 \u06a9\u0648 \u0644\u0627\u06af\u0648 \u06a9\u0631\u0646\u0627 \u0622\u067e \u06a9\u0648 \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0644\u0627\u06af\u062a \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0631\u0627\u0632\u062f\u0627\u0631\u06cc \u067e\u0631 \u0645\u06a9\u0645\u0644 \u06a9\u0646\u0679\u0631\u0648\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u0646 \u0688\u06cc\u0648\u0627\u0626\u0633 GGML \u0645\u0627\u0688\u0644\u0632 \u06a9\u0648 \u0627\u06cc\u06a9 \u0633\u0627\u062f\u06c1 Node.js WebSocket \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0644\u0627 \u06a9\u0631\u060c \u0622\u067e \u0631\u06cc\u0633\u067e\u0627\u0646\u0633\u06cc\u0648 \u0648\u06cc\u0628 \u0679\u0648\u0644\u0632 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u06a9\u0644\u0627\u0624\u0688 APIs \u067e\u0631 \u067e\u06cc\u0633\u06c1 \u062e\u0631\u0686 \u06a9\u06cc\u06d2 \u0628\u063a\u06cc\u0631 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0622\u0641 \u0644\u0627\u0626\u0646 \u0686\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0686\u0648\u0646\u06a9\u06c1 \u0645\u0648\u0628\u0627\u0626\u0644 \u0627\u0648\u0631 \u0688\u06cc\u0633\u06a9 \u0679\u0627\u067e \u0633\u0633\u0679\u0645 \u0622\u0646 \u0686\u067e \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0632 \u0645\u06cc\u06ba \u0645\u0632\u06cc\u062f \u0646\u06cc\u0648\u0631\u0644 \u0627\u0646\u062c\u0646 \u0634\u0627\u0645\u0644 \u06c1\u0648\u062a\u06d2 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u0648\u06a9\u0644 \u0641\u0631\u0633\u0679 \u0627\u06d2 \u0622\u0626\u06cc \u0622\u0631\u06a9\u06cc\u0679\u06cc\u06a9\u0686\u0631\u0632 \u062c\u062f\u06cc\u062f \u0688\u0648\u06cc\u0644\u067e\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0637\u0627\u0642\u062a\u0648\u0631 \u0622\u067e\u0634\u0646 \u0628\u0646 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h2 id=\"heading-resources-and-further-reading\">\u0648\u0633\u0627\u0626\u0644 \u0627\u0648\u0631 \u0627\u0636\u0627\u0641\u06cc \u0648\u0633\u0627\u0626\u0644<\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u06a9\u0686\u06be \u0633\u0627\u0644 \u067e\u06c1\u0644\u06d2\u060c \u062c\u0633 \u062f\u0646 \u0645\u06cc\u06ba \u0646\u06d2 \u0622\u062e\u0631 \u06a9\u0627\u0631 AI \u0627\u0645\u06cc\u062c \u062c\u0646\u0631\u06cc\u0679\u0631 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u06cc\u060c \u0645\u06cc\u06ba \u0627\u062a\u0646\u0627 \u067e\u0631\u062c\u0648\u0634 \u062a\u06be\u0627 \u06a9\u06c1 \u0645\u06cc\u06ba \u0641\u0648\u0631\u0627\u064b \u0628\u06cc\u0679\u06be \u06af\u06cc\u0627 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u0636\u0645\u0648\u0646 \u0644\u06a9\u06be\u0627 (Node.js \u0627\u0648\u0631 OpenAI \u06a9\u06d2 DALL-E \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2)\u06d4 \u062e\u06cc\u0627\u0644\u0627\u062a \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0688\u06cc\u062c\u06cc\u0679\u0644 \u067e\u06a9\u0633\u0644\u0632 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u062c\u0627\u062f\u0648 \u0627\u06cc\u0633\u0627 \u0645\u062d\u0633\u0648\u0633 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":25545,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-25544","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/25544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=25544"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/25544\/revisions"}],"predecessor-version":[{"id":25546,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/25544\/revisions\/25546"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media\/25545"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=25544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=25544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=25544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}