{"id":22902,"date":"2026-04-23T01:07:41","date_gmt":"2026-04-23T01:07:41","guid":{"rendered":"https:\/\/umang.pk\/2026\/04\/23\/gcp-%d9%be%d8%b1-hashicorp-packer-%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-gpu-%d8%b3%db%92-%d8%a8%db%81%d8%aa%d8%b1-%d9%85%d8%b4%db%8c\/"},"modified":"2026-04-23T01:07:43","modified_gmt":"2026-04-23T01:07:43","slug":"gcp-%d9%be%d8%b1-hashicorp-packer-%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-gpu-%d8%b3%db%92-%d8%a8%db%81%d8%aa%d8%b1-%d9%85%d8%b4%db%8c","status":"publish","type":"post","link":"https:\/\/umang.pk\/en_us\/2026\/04\/23\/gcp-%d9%be%d8%b1-hashicorp-packer-%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-gpu-%d8%b3%db%92-%d8%a8%db%81%d8%aa%d8%b1-%d9%85%d8%b4%db%8c\/","title":{"rendered":"GCP \u067e\u0631 HashiCorp Packer \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 GPU \u0633\u06d2 \u0628\u06c1\u062a\u0631 \u0645\u0634\u06cc\u0646 \u06a9\u06cc \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc \u062c\u0627\u0626\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u062c\u0628 \u0628\u06be\u06cc \u0622\u067e \u0627\u067e\u0646\u06d2 GPU \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u0648 \u06af\u06be\u0645\u0627\u0624 \u06af\u06d2 \u062a\u0648 \u0622\u067e \u0648\u06c1\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 CUDA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632\u060c DCGM \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627\u060c OS-level GPU \u0679\u06cc\u0648\u0646\u0646\u06af \u0644\u06af\u0627\u0646\u0627\u060c \u0627\u0648\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u0646\u0627\u06d4 \u06c1\u0631 \u0628\u0627\u0631 \u0648\u06c1\u06cc \u067e\u0631\u0627\u0646\u06cc \u0631\u0633\u0648\u0645\u0627\u062a\u060c \u0645\u06c1\u0646\u06af\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u06a9\u0631\u06cc\u0688\u0679 \u06a9\u0648 \u0636\u0627\u0626\u0639 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u062d\u0642\u06cc\u0642\u06cc \u06a9\u0627\u0645 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0645\u0627\u06cc\u0648\u0633\u06cc \u0645\u062d\u0633\u0648\u0633 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<p>\u0627\u0633 \u0622\u0631\u0679\u06cc\u06a9\u0644 \u0645\u06cc\u06ba\u060c \u06c1\u0645 \u067e\u06cc\u06a9\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 GPU-\u0622\u067e\u0679\u0645\u0627\u0626\u0632\u0688 \u0645\u0634\u06cc\u0646 \u0627\u0645\u06cc\u062c \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062c\u0648 NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632\u060c CUDA \u0679\u0648\u0644 \u06a9\u0679\u060c NVIDIA \u06a9\u0646\u0679\u06cc\u0646\u0631 \u0679\u0648\u0644 \u06a9\u0679\u060c \u0627\u0648\u0631 \u0633\u0633\u0679\u0645 \u0644\u06cc\u0648\u0644 GPU \u0679\u06cc\u0648\u0646\u0646\u06af \u062c\u06cc\u0633\u06d2 DCGM \u0627\u0648\u0631 \u067e\u0631\u0633\u0633\u0679\u06cc\u0646\u0633 \u0645\u0648\u0688 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0644\u0648\u0688 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<ul>\n<li>\n<p>HashiCorp Packer >= 1.9<\/p>\n<\/li>\n<li>\n<p>\u06af\u0648\u06af\u0644 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u067e\u06cc\u06a9\u0631 \u067e\u0644\u06af \u0627\u0646 (\u0628\u0630\u0631\u06cc\u0639\u06c1 \u0627\u0646\u0633\u0679\u0627\u0644) <code>packer init<\/code>)<\/p>\n<\/li>\n<li>\n<p>\u0622\u067e \u0627\u067e\u0646\u06cc EC2 \u0628\u0644\u0688\u0632 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0637\u0648\u0631 \u067e\u0631 AWS Packer \u067e\u0644\u06af \u0627\u0646 \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>amazon-ebs<\/code> \u0686\u0679\u0646\u06cc <code>node.pkr.hcl<\/code><\/p>\n<\/li>\n<li>\n<p>\u06a9\u0645\u067e\u06cc\u0648\u0679 \u0627\u0646\u062c\u0646 API \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06a9 GCP \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 (\u06cc\u0627 EC2 \u0631\u0633\u0627\u0626\u06cc \u0648\u0627\u0644\u0627 AWS \u0627\u06a9\u0627\u0624\u0646\u0679)<\/p>\n<\/li>\n<li>\n<p>\u062c\u06cc \u0633\u06cc \u067e\u06cc \u0633\u0631\u0679\u06cc\u0641\u06cc\u06a9\u06cc\u0634\u0646 (<code>gcloud auth application-default login<\/code>) \u06cc\u0627 AWS \u0627\u0633\u0646\u0627\u062f<\/p>\n<\/li>\n<li>\n<p>NVIDIA GPU \u0645\u062b\u0627\u0644 \u06a9\u06cc \u0627\u0642\u0633\u0627\u0645 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc (\u062c\u06cc\u0633\u06d2 A100, H100, L4 GCP \u067e\u0631, p4d, p5, G6 AWS \u067e\u0631)<\/p>\n<\/li>\n<\/ul>\n<h2 id=\"heading-project-setup\">\u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a<\/h2>\n<h3 id=\"heading-step-1-install-packer\">\u0645\u0631\u062d\u0644\u06c1 1: \u067e\u06cc\u06a9\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u06af\u0631 \u0622\u067e macOS \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u067e\u06cc\u06a9\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0646\u06cc\u0686\u06d2 \u062f\u06cc\u06d2 \u06af\u0626\u06d2 \u0645\u0631\u0627\u062d\u0644 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u06cc\u06ba (\u06cc\u0627 \u0622\u067e \u06c1\u0645\u0627\u0631\u06d2 \u0644\u06cc\u0646\u06a9\u0633 \u0627\u0648\u0631 \u0648\u0646\u0688\u0648\u0632 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06af\u0627\u0626\u06cc\u0688\u0632 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u0622\u0641\u06cc\u0634\u0644 \u062f\u0633\u062a\u0627\u0648\u06cc\u0632\u0627\u062a \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0628\u06be\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba)\u06d4<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0627\u067e\u0646\u06d2 \u0679\u0631\u0645\u06cc\u0646\u0644 \u0633\u06d2 \u0622\u0641\u06cc\u0634\u0644 \u067e\u06cc\u06a9\u0631 \u0622\u0641\u06cc\u0634\u0644 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>HashiCorp \u0679\u06cc\u0628 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u060c \u062c\u0648 \u06a9\u06c1 \u062a\u0645\u0627\u0645 Hashicorp \u067e\u06cc\u06a9\u062c\u0648\u06ba \u06a9\u0627 \u0630\u062e\u06cc\u0631\u06c1 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">$ brew tap hashicorp\/tap\n<\/code><\/pre>\n<p>\u0627\u0628 \u067e\u06cc\u06a9\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>hashicorp\/tap\/packer<\/code>.<\/p>\n<pre><code class=\"language-plaintext\">$ brew install hashicorp\/tap\/packer\n<\/code><\/pre>\n<h3 id=\"heading-step-2-set-up-project-directory\">\u0645\u0631\u062d\u0644\u06c1 2: \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u06ba\u06d4<\/h3>\n<p>\u067e\u06cc\u06a9\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06cc\u06c1 \u0627\u06cc\u06a9 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0628\u0646\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u06a9\u0644\u06cc\u0646 \u06a9\u0648\u0688 \u0627\u0648\u0631 \u062e\u062f\u0634\u0627\u062a \u06a9\u0648 \u0627\u0644\u06af \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u0627\u0633 \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2: \u062f\u0631\u062c \u0630\u06cc\u0644 \u0641\u0627\u0626\u0644\u06cc\u06ba \u0628\u0646\u0627\u0646\u0627 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u06cc\u06ba: <code>packer_demo<\/code> \u0646\u06cc\u0686\u06d2 \u062f\u06cc \u06af\u0626\u06cc \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u06cc\u06a9 \u0641\u0648\u0644\u0688\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">mkdir -p packer_demo\/script && touch packer_demo\/{build.pkr.hcl,source.pkr.hcl,variable.pkr.hcl,local.pkr.hcl,plugins.pkr.hcl,values.pkrvars.hcl} packer_demo\/script\/base.sh\n<\/code><\/pre>\n<p>\u0641\u0627\u0626\u0644 \u0688\u0627\u0626\u0631\u06a9\u0679\u0631\u06cc \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">packer_demo\n\u251c\u2500\u2500 build.pkr.hcl                 # Build pipeline \u2014 provisioner ordering\n\u251c\u2500\u2500 source.pkr.hcl                # GCP source definition (googlecompute)\n\u251c\u2500\u2500 variable.pkr.hcl              # Variable definitions with defaults\n\u251c\u2500\u2500 local.pkr.hcl                 # Local values\n\u251c\u2500\u2500 plugins.pkr.hcl                # Packer plugin requirements\n\u251c\u2500\u2500 values.pkrvars.hcl             # variable values (copy and customize)\n\u251c\u2500\u2500 script\/\n\u2502   \u251c\u2500\u2500 base.sh                  # requirement script \n<\/code><\/pre>\n<h3 id=\"heading-step-3-install-packers-plugins\">\u0645\u0631\u062d\u0644\u06c1 3: \u067e\u06cc\u06a9\u0631 \u067e\u0644\u06af \u0627\u0646 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0622\u067e \u06a9\u0627 <code>plugins.pkr.hcl file,<\/code>\u0627\u067e\u0646\u06d2 \u067e\u0644\u06af \u0627\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4 <code>packer block.<\/code> \u06a9\u06c1 <code>packer {}<\/code> \u0628\u0644\u0627\u06a9 \u0645\u06cc\u06ba \u067e\u06cc\u06a9\u0631 \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 \u0645\u0637\u0644\u0648\u0628\u06c1 \u067e\u0644\u06af \u0627\u0646 \u0648\u0631\u0698\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u0627\u06d4 \u0622\u067e \u062a\u0644\u0627\u0634 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba <code>required_plugins<\/code> \u067e\u06cc\u06a9\u0631 \u0628\u0644\u0627\u06a9\u0633 \u06a9\u0627 \u0627\u06cc\u06a9 \u0628\u0644\u0627\u06a9 \u062c\u0648 \u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0631\u06a9\u0627\u0631 \u062a\u0645\u0627\u0645 \u067e\u0644\u06af \u0627\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e Azure \u06cc\u0627 AWS \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u06cc\u06c1\u0627\u06ba \u062a\u0627\u0632\u06c1 \u062a\u0631\u06cc\u0646 \u067e\u0644\u06af \u0627\u0646 \u062a\u0644\u0627\u0634 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-hcl\">packer {\n  required_plugins {\n    googlecompute = {\n      source  = \"github.com\/hashicorp\/googlecompute\"\n      version = \"~> 1\"\n    }\n  }\n}\n<\/code><\/pre>\n<p>\u067e\u06be\u0631 \u0646\u06cc\u0686\u06d2 \u062f\u06cc \u06af\u0626\u06cc \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u067e\u06cc\u06a9\u0631 \u067e\u0644\u06af \u0627\u0646 \u06a9\u0648 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-plaintext\">packer init .\n<\/code><\/pre>\n<h3 id=\"heading-step-4-define-your-source\">\u0645\u0631\u062d\u0644\u06c1 4: \u0630\u0631\u0627\u0626\u0639 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u067e\u0644\u06af \u0627\u0646 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0627\u0628 \u0622\u067e \u0633\u0648\u0631\u0633 \u0628\u0644\u0627\u06a9\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0633\u0648\u0631\u0633 \u0628\u0644\u0627\u06a9 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0628\u0644\u0688\u0631 \u067e\u0644\u06af \u0627\u0646 \u06a9\u0648 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u0633\u06d2 \u0628\u0644\u0688 \u0628\u0644\u0627\u06a9 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06c1 \u0628\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u0633\u0648\u0631\u0633 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u06ba <code>project ID<\/code>\u0648\u06c1 \u0639\u0644\u0627\u0642\u06c1 \u062c\u06c1\u0627\u06ba \u0645\u0634\u06cc\u0646 \u0628\u0646\u0627\u0626\u06cc \u062c\u0627\u0626\u06d2 \u06af\u06cc\u060c <code>source_image_family<\/code> (\u0627\u0633 \u06a9\u0648 \u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0648\u0686\u06cc\u06ba \u062c\u06cc\u0633\u06d2 \u0688\u06cc\u0628\u06cc\u0646\u060c \u0627\u0648\u0628\u0646\u0679\u0648\u060c \u0648\u063a\u06cc\u0631\u06c1) <code>source_image_project_id<\/code>.<\/p>\n<p>GCP \u06c1\u0631 \u0627\u06cc\u06a9 \u06a9\u06cc \u062a\u0635\u0648\u06cc\u0631\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 ID \u06c1\u06d2\u060c \u062c\u06cc\u0633\u06d2 Ubuntu \u06a9\u06d2 \u0644\u06cc\u06d2 &#8216;ubuntu-os-Cloud&#8217;\u06d4 \u062a\u0645 \u06c1\u0648 <code>machine type<\/code> \u0686\u0648\u0646\u06a9\u06c1 \u06c1\u0645 \u0627\u06cc\u06a9 GPU \u0645\u0634\u06cc\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0628\u0646\u06cc\u0627\u062f\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06c1\u0645 \u0627\u0633\u06d2 GPU \u0645\u0634\u06cc\u0646 \u06a9\u06cc \u0642\u0633\u0645 \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u06c1\u0645\u06cc\u06ba \u0627\u0633 \u0645\u0634\u06cc\u0646 \u067e\u0631 \u06a9\u0645\u0627\u0646\u0688 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062c\u0633 \u067e\u0631 \u06c1\u0645 \u0627\u0633\u06d2 \u0628\u0646\u0627 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-hcl\">source \"googlecompute\" \"gpu-node\" {\n  project_id              = var.project_id\n  zone                    = var.zone\n  source_image_family     = var.image_family\n  source_image_project_id = var.image_project_id\n  ssh_username            = var.ssh_username\n  machine_type            = var.machine_type\n\n\n\n  image_name        = var.image_name\n  image_description = var.image_description\n\n  disk_size           = var.disk_size\n  on_host_maintenance = \"TERMINATE\"\n\n  tags = [\"gpu-node\"]\n\n}\n<\/code><\/pre>\n<p>\u0645\u0627\u062d\u0648\u0644 <code>on_host_maintenance = \"TERMINATE\"<\/code> Google Cloud Compute Engine \u0644\u0627\u0626\u06cc\u0648 \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 VM \u0645\u062b\u0627\u0644\u0648\u06ba \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u0627\u06c1\u0645 \u06c1\u06d2 \u062c\u0628 GPUs \u06cc\u0627 \u062e\u0635\u0648\u0635\u06cc \u06c1\u0627\u0631\u0688 \u0648\u06cc\u0626\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646\u06c1\u06cc\u06ba \u0688\u06cc\u0679\u0627 \u06a9\u06cc \u0628\u062f\u0639\u0646\u0648\u0627\u0646\u06cc \u06a9\u0648 \u0631\u0648\u06a9\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0646\u062a\u0642\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\u062a\u0645\u0627\u0645 \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06c1\u06cc\u06ba\u06d4 <code>variable.pkr.hcl<\/code> \u0641\u0627\u0626\u0644 \u0645\u06cc\u06ba \u0648\u06cc\u0644\u06cc\u0648 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4 <code>values.pkrvars.hcl<\/code>. \u06c1\u0645\u06cc\u0634\u06c1 \u0634\u0627\u0645\u0644 \u06a9\u0631\u0646\u0627 \u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba <code>values.pkrvars.hcl<\/code> \u0641\u0627\u0626\u0644 Gitignore \u06a9\u0648 \u0628\u06be\u06cc\u062c\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-hcl\">variable \"image_name\" {\n  type        = string\n  description = \"The name of the resulting image\"\n}\n\nvariable \"image_description\" {\n  type        = string\n  description = \"Description of the image\"\n}\n\nvariable \"project_id\" {\n  type        = string\n  description = \"The GCP project ID where the image will be created\"\n}\n\nvariable \"image_family\" {\n  type        = string\n  description = \"The image family to which the resulting image belongs\"\n}\n\nvariable \"image_project_id\" {\n  type        = list(string)\n  description = \"The project ID(s) to search for the source image\"\n}\n\nvariable \"zone\" {\n  type        = string\n  description = \"The GCP zone where the build instance will be created\"\n}\n\nvariable \"ssh_username\" {\n  type        = string\n  description = \"The SSH username to use for connecting to the instance\"\n}\nvariable \"machine_type\" {\n  type        = string\n  description = \"The machine type to use for the build instance\"\n}\n\nvariable \"cuda_version\" {\n  type        = string\n  description = \"CUDA toolkit version\"\n  default     = \"13.1\"\n}\n\nvariable \"driver_version\" {\n  type        = string\n  description = \"NVIDIA driver version\"\n  default     = \"590.48.01\"\n}\n\nvariable \"disk_size\" {\n  type        = number\n  description = \"Boot disk size in GB\"\n  default     = 50\n}\n<\/code><\/pre>\n<p><code>values.pkrvars.hcl<\/code><\/p>\n<pre><code class=\"language-hcl\">image_name        = \"base-gpu-image-{{timestamp}}\"\nimage_description = \"Ubuntu 24.04 LTS with gpu drivers and health checks\"\nproject_id        = \"your gcp project id\"\nimage_family      = \"ubuntu-2404-lts-amd64\"\nimage_project_id  = [\"ubuntu-os-cloud\"]\nzone              = \"us-central1-a\"\nssh_username      = \"packer\"\nmachine_type      = \"g2-standard-4\"\ndisk_size        = 50\ndriver_version   = \"590.48.01\"\ncuda_version      = \"13.1\" \n<\/code><\/pre>\n<h3 id=\"heading-step-5-writing-the-build-template\">\u0645\u0631\u062d\u0644\u06c1 5: \u0627\u06cc\u06a9 \u0628\u0644\u0688 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0628\u0646\u0627\u0646\u0627 <code>build.pkr.hcl<\/code>. \u06a9\u06c1 <code>build<\/code> \u0628\u0644\u0627\u06a9\u0633 \u0639\u0627\u0631\u0636\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u067e\u0631\u0648\u0648\u06cc\u0698\u0646\u0631\u0632 \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0633\u0627\u0646\u0686\u06d2 \u0645\u06cc\u06ba \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u06a9\u0648 \u0627\u0633 \u0637\u0631\u062d \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2:<\/p>\n<ul>\n<li>\n<p><strong>\u067e\u06c1\u0644\u0627 \u06a9\u0645\u06cc\u0634\u0646<\/strong> \u0633\u0633\u0679\u0645 \u0627\u067e\u0688\u06cc\u0679\u0633 \u0627\u0648\u0631 \u0627\u067e \u06af\u0631\u06cc\u0688\u0632 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062f\u0648\u0633\u0631\u0627 \u06a9\u0645\u06cc\u0634\u0646<\/strong> \u0645\u062b\u0627\u0644 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba (<code>expect_disconnect = true<\/code>)\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u06be\u0631\u0688 \u067e\u0627\u0631\u0679\u06cc \u0641\u06cc\u0633<\/strong> \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0648\u0627\u067e\u0633 \u0622\u0646\u06d2 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06cc\u06ba (<code>pause_before<\/code>) \u0627\u0648\u0631 \u067e\u06be\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2: <code>script\/base.sh<\/code>. \u06cc\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u062a\u0627 \u06c1\u06d2: <code>max_retries<\/code> \u0639\u0627\u0631\u0636\u06cc SSH \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u0627\u062d\u0648\u0644\u06cc\u0627\u062a\u06cc \u0645\u062a\u063a\u06cc\u0631\u0627\u062a \u06a9\u0648 \u067e\u0627\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>DRIVER_VERSION<\/code> \u0627\u0648\u0631 <code>CUDA_VERSION<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0622\u062e\u0631 \u0645\u06cc\u06ba\u060c \u0627\u06cc\u06a9 \u067e\u0648\u0633\u0679 \u067e\u0631\u0648\u0633\u06cc\u0633\u0631 \u06c1\u06d2 \u062c\u0648 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u0634\u0646\u0627\u062e\u062a \u0627\u0648\u0631 \u062a\u06a9\u0645\u06cc\u0644 \u06a9\u06cc \u062d\u06cc\u062b\u06cc\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-hcl\">build {\n  sources = [\"source.googlecompute.gpu-node\"]\n\n  provisioner \"shell\" {\n    inline = [\n      \"set -e\",\n      \"sudo apt update\",\n      \"sudo apt -y dist-upgrade\"\n    ]\n  }\n\n  provisioner \"shell\" {\n    expect_disconnect = true\n    inline            = [\"sudo reboot\"]\n  }\n\n  # Base: NVIDIA drivers, CUDA, DCGM\n  provisioner \"shell\" {\n    pause_before = \"60s\"\n    script       = \"script\/base.sh\"\n    max_retries  = 2\n    environment_vars = [\n      \"DRIVER_VERSION=${var.driver_version}\",\n      \"CUDA_VERSION=${var.cuda_version}\"\n    ]\n  }\n\n  post-processor \"shell-local\" {\n    inline = [\n      \"echo '=== Image Build Complete ==='\",\n      \"echo 'Image ID: ${build.ID}'\",\n      \"date\"\n    ]\n  }\n}\n<\/code><\/pre>\n<h3 id=\"heading-step-6-writing-the-gpu-provisioning-script\">\u0645\u0631\u062d\u0644\u06c1 6: GPU \u067e\u0631\u0648\u0648\u06cc\u0698\u0646\u0646\u06af \u0627\u0633\u06a9\u0631\u067e\u0679 \u0644\u06a9\u06be\u06cc\u06ba\u06d4<\/h3>\n<p>\u0627\u0628 \u0622\u0626\u06cc\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0631\u0633\u0645 \u0627\u0644\u062e\u0637 \u067e\u0631 \u0627\u06cc\u06a9 \u0646\u0638\u0631 \u0688\u0627\u0644\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u06a9\u0686\u06be \u062d\u0635\u0648\u06ba \u06a9\u0627 \u062a\u062c\u0632\u06cc\u06c1 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0648\u06ba \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0622\u067e \u06a9\u06d2 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u06a9\u0631\u0646\u0644 \u06c1\u06cc\u0688\u0631\u0632 \u0627\u0648\u0631 \u0628\u0644\u0679 \u0679\u0648\u0644\u0632 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u06af\u06cc\u06d4 NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 DKMS \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0645\u0631\u062a\u0628 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0627\u06af\u0631 \u0686\u0644\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0631\u0646\u0644 \u06a9\u06d2 \u06c1\u06cc\u0688\u0631\u0632 \u063a\u0627\u0626\u0628 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u062a\u0639\u0645\u06cc\u0631 \u062e\u0627\u0645\u0648\u0634\u06cc \u0633\u06d2 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc \u0627\u0648\u0631 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0628\u0648\u0679 \u067e\u0631 \u0644\u0648\u0688 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Installing kernel headers and build tools...\"\nsudo apt-get install -qq -y \n  \"linux-headers-$(uname -r)\" \n  build-essential \n  dkms \n  curl \n  wget\n<\/code><\/pre>\n<h3 id=\"heading-section-2-installing-nvidias-apt-repository\">\u0633\u06cc\u06a9\u0634\u0646 2: NVIDIA \u06a9\u0627 Apt \u0630\u062e\u06cc\u0631\u06c1 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u06cc\u06c1 \u06a9\u0648\u0688 \u06a9\u0627 \u0679\u06a9\u0691\u0627 \u0622\u067e \u06a9\u06d2 OS \u0644\u06cc\u0646\u06a9\u0633 \u06a9\u06cc \u062a\u0642\u0633\u06cc\u0645 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 NVIDIA \u06a9\u06d2 \u0622\u0641\u06cc\u0634\u0644 \u06a9\u06cc\u0631\u0646\u06af \u067e\u06cc\u06a9\u062c \u06a9\u0648 \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u0627\u0648\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u067e\u06cc\u06a9\u062c CUDA \u067e\u06cc\u06a9\u062c\u0648\u06ba \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u062f\u0631\u06a9\u0627\u0631 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u062f\u0633\u062a\u062e\u0637\u06cc \u06a9\u0644\u06cc\u062f\u0648\u06ba \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Adding NVIDIA CUDA apt repository (${DISTRO})...\"\nwget -q \"https:\/\/developer.download.nvidia.com\/compute\/cuda\/repos\/({DISTRO}\/){ARCH}\/cuda-keyring_1.1-1_all.deb\" \n  -O \/tmp\/cuda-keyring.deb\nsudo dpkg -i \/tmp\/cuda-keyring.deb\nrm \/tmp\/cuda-keyring.deb\nsudo apt-get update -qq\n<\/code><\/pre>\n<h3 id=\"heading-section-3-pinning-nvidia-drivers-version\">\u0633\u06cc\u06a9\u0634\u0646 3: NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0648\u0631\u0698\u0646 \u0641\u06a9\u0633\u0688<\/h3>\n<p>NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u0648 \u06a9\u0633\u06cc \u0645\u062e\u0635\u0648\u0635 \u0648\u0631\u0698\u0646 \u0645\u06cc\u06ba \u067e\u0646 \u06a9\u0631\u0646\u0627 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0633\u0633\u0679\u0645 \u06c1\u0645\u06cc\u0634\u06c1 \u0627\u0633 \u062f\u0631\u0633\u062a \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0648\u0631\u0698\u0646 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u0627\u0648\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u0631\u06c1\u06d2 \u06af\u0627\u060c \u0686\u0627\u06c1\u06d2 \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u0645\u06cc\u06ba \u0638\u0627\u06c1\u0631 \u06c1\u0648\u06d4<\/p>\n<p>NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0648\u06ba \u06a9\u0648 CUDA \u0679\u0648\u0644 \u06a9\u0679 \u0648\u0631\u0698\u0646\u060c \u06a9\u0631\u0646\u0644 \u0648\u0631\u0698\u0646\u060c \u0627\u0648\u0631 \u06a9\u0646\u0679\u06cc\u0646\u0631 \u0631\u0646 \u0679\u0627\u0626\u0645\u0632 \u062c\u06cc\u0633\u06d2 Docker \u06cc\u0627 NVIDIA \u06a9\u0646\u0679\u06cc\u0646\u0631 \u0679\u0648\u0644 \u06a9\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0636\u0628\u0648\u0637\u06cc \u0633\u06d2 \u062c\u0648\u0691\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0636\u0627\u062f\u0627\u062a\u060c \u062c\u06cc\u0633\u06d2 \u06a9\u06c1 \u062c\u0628 \u06a9\u0648\u0626\u06cc \u0633\u0633\u0679\u0645 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u062c\u062f\u06cc\u062f \u062a\u0631\u06cc\u0646 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0645\u06cc\u06ba \u0627\u067e \u06af\u0631\u06cc\u0688 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 CUDA \u06a9\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c GPU \u0627\u06cc\u06a9\u0633\u0644\u0631\u06cc\u0634\u0646 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u06cc\u0627 \u0645\u0634\u06cc\u0646 \u06a9\u06cc \u062a\u0635\u0648\u06cc\u0631\u06cc\u06ba \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc\u0648\u06ba \u0645\u06cc\u06ba \u0645\u062a\u0636\u0627\u062f \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Pinning driver to version ${DRIVER_VERSION}...\"\nsudo apt-get install -qq -y \"nvidia-driver-pinning-${DRIVER_VERSION}\"\n<\/code><\/pre>\n<h3 id=\"heading-section-4-installing-the-driver\">\u0633\u06cc\u06a9\u0634\u0646 4: \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u06cc \u062a\u0646\u0635\u06cc\u0628<\/h3>\n<p>\u06a9\u06c1 <code>libnvidia-compute<\/code> \u0635\u0631\u0641 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u0645\u062e\u0635\u0648\u0635 \u06cc\u0648\u0632\u0631 \u0627\u0633\u067e\u06cc\u0633 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0632 (CUDA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0627\u062c\u0632\u0627\u0621) \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 <code>nvidia-dkms-open;<\/code> \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba <strong>\u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 NVIDIA \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644<\/strong>DKMS \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a\u06d4<\/p>\n<p>\u06cc\u06c1 \u062f\u0648\u0646\u0648\u06ba \u067e\u06cc\u06a9\u062c\u0632 \u0627\u06cc\u06a9 \u0645\u06a9\u0645\u0644 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0648\u0627\u0644\u0627 CUDA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0645\u0627\u062d\u0648\u0644 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0633 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc GUI \u06cc\u0627 \u06af\u0631\u0627\u0641\u06a9\u0633 \u0627\u0646\u062d\u0635\u0627\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u06c1\u0645 <strong>\u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 NVIDIA \u06a9\u0627 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u0645\u062e\u0635\u0648\u0635 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0627\u0633\u0679\u06cc\u06a9<\/strong>\u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0645 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0688\u0633\u067e\u0644\u06d2 \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642\u06c1 \u0627\u062c\u0632\u0627\u0621 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u0644\u06a9\u0627 \u067e\u06be\u0644\u06a9\u0627 \u0627\u0648\u0631 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06c1\u06d2\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u06cc\u06c1 DKMS \u067e\u0631 \u0645\u0628\u0646\u06cc \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0644\u06cc\u0646\u06a9\u0633 \u06a9\u06cc \u062a\u0642\u0633\u06cc\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0648\u0632\u0648\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Installing NVIDIA compute-only driver (open kernel modules)...\"\nsudo apt-get -V install -y \n  libnvidia-compute \n  nvidia-dkms-open\n<\/code><\/pre>\n<h3 id=\"heading-section-5-cuda-toolkit-installation\">\u0633\u06cc\u06a9\u0634\u0646 5: CUDA \u0679\u0648\u0644 \u06a9\u0679 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627<\/h3>\n<p>\u0627\u0633\u06a9\u0631\u067e\u0679 \u06a9\u0627 \u06cc\u06c1 \u062d\u0635\u06c1 <strong>CUDA \u0679\u0648\u0644 \u06a9\u0679<\/strong> \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062f\u06cc\u0626\u06d2 \u06af\u0626\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 CUDA \u06a9\u06d2 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u06cc\u0628\u0644 \u0627\u0648\u0631 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0627\u06ba \u062a\u0645\u0627\u0645 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0627\u0648\u0631 \u062a\u0645\u0627\u0645 \u0634\u06cc\u0644 \u0633\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u0648\u0631\u06d2 \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0622\u067e \u06a9\u06d2 PATH \u0645\u06cc\u06ba CUDA \u0628\u0627\u0626\u0646\u0631\u06cc \u06a9\u0648 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06cc \u06a9\u0645\u0627\u0646\u0688 \u0686\u0644\u06d2 \u06af\u06cc: <code>nvcc<\/code>\u060c <code>cuda-gdb<\/code>\u0627\u0648\u0631 <code>cuda-memcheck<\/code> \u0645\u06a9\u0645\u0644 \u0631\u0627\u0633\u062a\u06c1 \u0628\u062a\u0627\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 LD_LIBRARY_PATH \u0645\u06cc\u06ba CUDA \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u06a9\u0648 \u0628\u06be\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0627\u06a9\u06c1 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0631\u0646 \u0679\u0627\u0626\u0645 \u067e\u0631 CUDA \u06a9\u06cc \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631 \u0633\u06a9\u06d2\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Installing CUDA Toolkit ${CUDA_VERSION}...\"\nsudo apt-get install -qq -y \"cuda-toolkit-${CUDA_VERSION}\"\n\n# Persist CUDA paths for all users and sessions\ncat <<'EOF' | sudo tee \/etc\/profile.d\/cuda.sh\nexport PATH=\/usr\/local\/cuda\/bin:$PATH\nexport LD_LIBRARY_PATH=\/usr\/local\/cuda\/lib64:${LD_LIBRARY_PATH:-}\nEOF\necho \"\/usr\/local\/cuda\/lib64\" | sudo tee \/etc\/ld.so.conf.d\/cuda.conf\nsudo ldconfig\n<\/code><\/pre>\n<h3 id=\"heading-section-6-nvidia-container-toolkit\">\u0633\u06cc\u06a9\u0634\u0646 6: NVIDIA \u06a9\u0646\u0679\u06cc\u0646\u0631 \u0679\u0648\u0644 \u06a9\u0679<\/h3>\n<p>\u06cc\u06c1 \u0628\u0644\u0627\u06a9 NVIDIA \u06a9\u0646\u0679\u06cc\u0646\u0631 \u0679\u0648\u0644 \u06a9\u0679 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 GPUs \u062a\u06a9 \u0645\u062d\u0641\u0648\u0638 \u0627\u0648\u0631 \u0635\u062d\u06cc\u062d \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0631\u0633\u0627\u0626\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0646\u0679\u06cc\u0646\u0631\u0632 (Docker \u06cc\u0627 Containerd) \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 Kubernetes GPU \u0646\u0648\u0688\u0633\u060c Docker GPU \u06a9\u0627\u0645 \u06a9\u06d2 \u0628\u0648\u062c\u06be\u060c \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0628\u06be\u06cc \u0633\u0633\u0679\u0645 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0642\u062f\u0645 \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0646\u0679\u06cc\u0646\u0631\u0632 \u06a9\u06d2 \u0627\u0646\u062f\u0631 GPU \u0627\u06cc\u06a9\u0633\u0644\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Installing NVIDIA Container Toolkit...\"\ncurl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/gpgkey \n  | sudo gpg --dearmor -o \/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg\n\ncurl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/stable\/deb\/nvidia-container-toolkit.list \n  | sed 's#deb https:\/\/#deb [signed-by=\/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg] https:\/\/#g' \n  | sudo tee \/etc\/apt\/sources.list.d\/nvidia-container-toolkit.list\n\nsudo apt-get update -qq\nsudo apt-get install -qq -y nvidia-container-toolkit\n\n# Configure for containerd (primary Kubernetes runtime)\nsudo nvidia-ctk runtime configure --runtime=containerd\n\n# Configure for Docker if present on this image\nif systemctl list-unit-files | grep -q \"^docker.service\"; then\n  sudo nvidia-ctk runtime configure --runtime=docker\nfi\n<\/code><\/pre>\n<h3 id=\"heading-section-7-installing-dcgm-data-center-gpu-manager\">\u0633\u06cc\u06a9\u0634\u0646 7: \u0688\u06cc\u0679\u0627 \u0633\u06cc\u0646\u0679\u0631 GPU \u0645\u06cc\u0646\u06cc\u062c\u0631 (DCGM) \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba<\/h3>\n<p>\u06cc\u06c1 \u0633\u06cc\u06a9\u0634\u0646 NVIDIA \u0688\u06cc\u0679\u0627 \u0633\u06cc\u0646\u0679\u0631 GPU \u0645\u06cc\u0646\u06cc\u062c\u0631 (DCGM)\u060c NVIDIA \u06a9\u06d2 \u0622\u0641\u06cc\u0634\u0644 \u0645\u06cc\u0646\u062c\u0645\u0646\u0679 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0633\u06cc\u0646\u0679\u0631 GPUs \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u06cc \u062a\u0646\u0635\u06cc\u0628 \u0627\u0648\u0631 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0635\u062d\u062a \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u0627\u0648\u0631 \u062a\u0634\u062e\u06cc\u0635\u060c \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc (\u0628\u0634\u0645\u0648\u0644 \u062f\u0631\u062c\u06c1 \u062d\u0631\u0627\u0631\u062a\u060c \u06af\u06be\u0691\u06cc\u060c \u0637\u0627\u0642\u062a\u060c \u0627\u0648\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644)\u060c \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u062f\u06c1\u0646\u062f\u06af\u06cc\u060c \u0627\u0648\u0631 Kubernetes\u060c Prometheus\u060c \u0627\u0648\u0631 \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u0627\u06cc\u062c\u0646\u0679\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646\u0636\u0645\u0627\u0645 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 GPU \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u0627\u0633\u0679\u06cc\u06a9 \u0627\u0633 \u067e\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633\u06a9\u0631\u067e\u0679 \u0627\u0646\u0633\u0679\u0627\u0644 \u0634\u062f\u06c1 \u0648\u0631\u0698\u0646 \u0646\u06a9\u0627\u0644\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0686\u06cc\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0648\u0631\u0698\u0646 \u067e\u0648\u0631\u06d2 \u06c1\u0648\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4 <strong>\u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0648\u0631\u0698\u0646<\/strong> NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 590+ \u06a9\u06d2 \u0644\u06cc\u06d2\u06d4 \u067e\u06be\u0631 \u0648\u0631\u0698\u0646 \u06a9\u06cc \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u0627 \u0627\u0637\u0644\u0627\u0642 \u06a9\u0631\u06cc\u06ba\u06d4 \u06cc\u06c1 GPU \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0648\u06ba \u0627\u0648\u0631 DCGM \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u0645\u0627\u062b\u0644\u062a \u06a9\u06cc \u0648\u062c\u06c1 \u0633\u06d2 \u0646\u06af\u0631\u0627\u0646\u06cc \u0627\u0648\u0631 \u0635\u062d\u062a \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0648 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0632\u06cc\u062f \u0628\u0631\u0622\u06ba\u060c \u0627\u06af\u0631 \u0622\u067e \u0645\u0644\u0679\u06cc GPU \u0679\u0648\u067e\u0648\u0644\u0648\u062c\u06cc \u062c\u06cc\u0633\u06d2 A100\/H100 DGX \u06cc\u0627 \u0645\u0644\u0679\u06cc-GPU \u0633\u0631\u0648\u0631\u0632 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 NVLink\/NVSwitch \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u06cc\u0628\u0631\u06a9 \u0645\u06cc\u0646\u06cc\u062c\u0631 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Installing DCGM...\"\nsudo apt-get install -qq -y datacenter-gpu-manager\n\nDCGM_VER=((dpkg -s datacenter-gpu-manager 2>\/dev\/null | awk '\/^Version:\/{print )2}' | sed 's\/^[0-9]*:\/\/')\nDCGM_MAJOR=((echo \"){DCGM_VER}\" | cut -d. -f1)\nDCGM_MINOR=((echo \"){DCGM_VER}\" | cut -d. -f2)\nif [[ \"({DCGM_MAJOR}\" -lt 4 ]] || { [[ \"){DCGM_MAJOR}\" -eq 4 ]] && [[ \"${DCGM_MINOR}\" -lt 3 ]]; }; then\n  error \"DCGM ${DCGM_VER} is below the 4.3 minimum required for driver 590+. Check your CUDA repo.\"\nfi\nlog \"DCGM installed: ${DCGM_VER}\"\n\nsudo systemctl enable nvidia-dcgm\nsudo systemctl start  nvidia-dcgm\n\n# Fabric Manager \u2014 only needed for NVLink\/NVSwitch GPUs (A100\/H100 multi-GPU nodes)\nif systemctl list-unit-files | grep -q \"^nvidia-fabricmanager.service\"; then\n  log \"Enabling nvidia-fabricmanager for NVLink GPUs...\"\n  sudo systemctl enable nvidia-fabricmanager\n  sudo systemctl start  nvidia-fabricmanager\nfi\n<\/code><\/pre>\n<h3 id=\"heading-section-8-enabling-persistence-mode\">\u0633\u06cc\u06a9\u0634\u0646 8: \u067e\u0631\u0633\u0633\u0679\u06cc\u0646\u0633 \u0645\u0648\u0688 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627<\/h3>\n<p>NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u062e\u0648\u062f \u06a9\u0648 \u0627\u062a\u0627\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0628 GPU \u0628\u06cc\u06a9\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u06a9\u0627\u0645 \u06a9\u0627 \u0628\u0648\u062c\u06be \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0648\u06ba \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0644\u0648\u0688 \u06a9\u0631\u0646\u0627\u060c GPU \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u067e\u0646\u06af \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0622\u067e \u06a9\u06d2 GPU \u0627\u0648\u0631 \u0633\u0633\u0679\u0645 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u060c \u06cc\u06c1 \u0686\u0646\u062f \u0633\u0648 \u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688 \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688 \u06a9\u06cc \u062a\u0627\u062e\u06cc\u0631 \u062a\u06a9 \u06a9\u06c1\u06cc\u06ba \u0628\u06be\u06cc \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>NVIDIA-Presistenced \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u06cc\u06ba \u0644\u0648\u0688 \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u062c\u0628 GPU \u0648\u0631\u06a9 \u0628\u0648\u062c\u06be \u0646\u06c1\u06cc\u06ba \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-shellscript\">log \"Enabling nvidia-persistenced...\"\nsudo systemctl enable nvidia-persistenced\nsudo systemctl start  nvidia-persistenced\n<\/code><\/pre>\n<h3 id=\"heading-section-9-system-tuning-for-gpu-compute-workloads\">\u0633\u06cc\u06a9\u0634\u0646 9: GPU \u06a9\u0645\u067e\u06cc\u0648\u0679 \u0648\u0631\u06a9 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0633\u0679\u0645 \u0679\u06cc\u0648\u0646\u0646\u06af<\/h3>\n<p>\u06cc\u06c1 \u0628\u0644\u0627\u06a9 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0633\u06cc\u0679\u0648\u06ba \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2: <strong>\u0633\u0633\u0679\u0645 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u0627\u0648\u0631 \u0627\u0633\u062a\u062d\u06a9\u0627\u0645 \u0679\u06cc\u0648\u0646\u0646\u06af<\/strong> \u0627\u0639\u0644\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u0648\u0627\u0644\u06d2 GPU \u0633\u0631\u0648\u0631\u0632\u060c Kubernetes GPU \u0646\u0648\u0688\u0633\u060c \u0627\u0648\u0631 ML\/AI \u0648\u0631\u06a9 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0639\u06cc\u0627\u0631\u06cc\u06d4<\/p>\n<p>\u06c1\u0631 \u0644\u0627\u0626\u0646 \u0627\u06cc\u06a9 \u0645\u062e\u0635\u0648\u0635 \u0631\u06a9\u0627\u0648\u0679 \u06cc\u0627 \u0639\u062f\u0645 \u0627\u0633\u062a\u062d\u06a9\u0627\u0645 \u06a9\u06d2 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u0646\u0634\u0627\u0646\u06c1 \u0628\u0646\u0627\u062a\u06cc \u06c1\u06d2 \u062c\u0648 \u062d\u0642\u06cc\u0642\u06cc GPU \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0645\u0627\u062d\u0648\u0644 \u0645\u06cc\u06ba \u0646\u0638\u0631 \u0622\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p>\u062a\u0628\u0627\u062f\u0644\u06c1 \u0627\u0648\u0631 \u0645\u06cc\u0645\u0648\u0631\u06cc \u06a9\u0627 \u0628\u0631\u062a\u0627\u0624: \u062a\u0628\u0627\u062f\u0644\u06c1 \u0627\u0648\u0631 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>vm.swappiness=0<\/code> \u062f\u0627\u0646\u0627 \u06a9\u0648 GPU \u06a9\u06d2 \u067e\u0627\u0628\u0646\u062f \u0639\u0645\u0644 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 GPU \u06a9\u0627\u0645 \u06a9\u0627 \u0628\u0648\u062c\u06be \u062a\u0627\u062e\u06cc\u0631 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a \u062d\u0633\u0627\u0633 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062a\u0628\u0627\u062f\u0644\u06c1 CUDA \u0633\u06cc\u0627\u0642 \u0648 \u0633\u0628\u0627\u0642 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0627\u0648\u0631 GPU \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u06d2 \u0679\u0627\u0626\u0645 \u0622\u0624\u0679 \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0628\u0691\u06cc \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u062e\u062a\u0635 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0691\u06d2 \u0635\u0641\u062d\u0627\u062a: \u062a\u0631\u062a\u06cc\u0628\u0627\u062a <code>vm.nr_hugepages=2048<\/code> \u0627\u06cc\u06a9 \u0628\u06c1\u062a \u0628\u0691\u0627 \u0635\u0641\u062d\u06c1 \u067e\u0648\u0644 \u0645\u062e\u062a\u0635 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0691\u06cc \u0645\u0631\u0628\u0648\u0637 \u0645\u06cc\u0645\u0648\u0631\u06cc \u0645\u062e\u062a\u0635 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 TLB \u062f\u0628\u0627\u0624 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>CUDA\u060c NCCL\u060c \u0627\u0648\u0631 \u0688\u06cc\u067e \u0644\u0631\u0646\u0646\u06af \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u062b\u0631\u062a \u0633\u06d2 \u0628\u0691\u06d2 \u0628\u0641\u0631\u0632 \u06a9\u0648 \u0645\u062e\u062a\u0635 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u06c1\u06cc\u062c \u067e\u06cc\u062c\u0632 \u067e\u06cc\u062c \u0679\u06cc\u0628\u0644 \u0627\u0648\u0648\u0631 \u06c1\u06cc\u0688 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0645\u06cc\u0645\u0648\u0631\u06cc \u0628\u06cc\u0646\u0688\u0648\u0688\u062a\u06be \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0628\u0691\u06d2 \u0679\u06cc\u0646\u0633\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0648 \u06a9\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0645\u0644\u0679\u06cc \u062c\u06cc \u067e\u06cc \u06cc\u0648 \u0633\u0631\u0648\u0631\u0632 \u067e\u0631 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0633\u06cc \u067e\u06cc \u06cc\u0648 \u0641\u0631\u06cc\u06a9\u0648\u0626\u0646\u0633\u06cc \u06af\u0648\u0631\u0646\u0631: \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627 <code>cpupower<\/code> CPU \u06af\u0648\u0631\u0646\u0631 \u06a9\u0648 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u06cc\u06ba\u06d4 <code>performance<\/code> \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 CPU \u0627\u0633\u06a9\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0641\u0631\u06cc\u06a9\u0648\u0626\u0646\u0633\u06cc \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0688\u06cc\u0679\u0627 \u067e\u0631\u06cc \u067e\u0631\u0648\u0633\u06cc\u0633\u0646\u06af\u060c \u06a9\u0631\u0646\u0644 \u0627\u0633\u0679\u0627\u0631\u0679 \u0627\u067e\u060c \u0627\u0648\u0631 NCCL \u06a9\u0645\u06cc\u0648\u0646\u06cc\u06a9\u06cc\u0634\u0646 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 GPU \u0648\u0631\u06a9 \u0628\u0648\u062c\u06be \u0627\u06a9\u062b\u0631 CPU \u06a9\u06d2 \u067e\u0627\u0628\u0646\u062f \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u06d2 CPU \u06a9\u0648 \u067e\u0648\u0631\u06cc \u0631\u0641\u062a\u0627\u0631 \u067e\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u0633\u06d2 \u06af\u06be\u0645\u0627\u0624 \u06a9\u0645 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u06be\u0631\u0648 \u067e\u0679 \u0628\u06c1\u062a\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>NUMA \u0627\u0648\u0631 \u0679\u0648\u067e\u0648\u0644\u0648\u062c\u06cc \u0679\u0648\u0644\u0632: \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 <code>numactl<\/code>\u060c <code>libnuma-dev<\/code>\u0627\u0648\u0631 <code>hwloc<\/code> NUMA \u0646\u0648\u0688\u0633 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0648 \u067e\u0646 \u06a9\u0631\u0646\u06d2\u060c CPU-GPU \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u06a9\u0648 \u0633\u0645\u062c\u06be\u0646\u06d2\u060c \u0627\u0648\u0631 \u0645\u0644\u0679\u06cc-GPU \u067e\u0644\u06cc\u0633\u0645\u0646\u0679 \u06a9\u0648 \u0628\u06c1\u062a\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0679\u0648\u0644\u0632 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>irqbalance \u06a9\u0648 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba: \u0631\u0648\u06a9\u06cc\u06ba \u0627\u0648\u0631 \u063a\u06cc\u0631 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>irqbalance<\/code> \u06cc\u06c1 NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u0648 \u0645\u062f\u0627\u062e\u0644\u062a \u06a9\u06d2 \u062a\u0639\u0644\u0642 \u06a9\u0648 \u0645\u0646\u0638\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 GPU \u0633\u0631\u0648\u0631\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c irqbalance \u063a\u0644\u0637 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 GPU interrupts \u06a9\u0648 \u063a\u06cc\u0631 \u0628\u06c1\u062a\u0631\u06cc\u0646 CPU \u0645\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u06a9\u06d2 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0627\u062e\u06cc\u0631 \u0627\u0648\u0631 \u06a9\u0645 \u062a\u06be\u0631\u0648 \u067e\u0679 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-shell\">log \"Applying system tuning...\"\n\n# Disable swap (critical for Kubernetes scheduler and ML stability)\nsudo swapoff -a\nsudo sed -i '\/ swap \/ s\/^\/#\/' \/etc\/fstab\necho \"vm.swappiness=0\"     | sudo tee \/etc\/sysctl.d\/99-gpu-swappiness.conf\n\n# Hugepages \u2014 reduces TLB pressure for large memory allocations\necho \"vm.nr_hugepages=2048\" | sudo tee \/etc\/sysctl.d\/99-gpu-hugepages.conf\n\n# CPU performance governor\nsudo apt-get install -qq -y linux-tools-common \"linux-tools-$(uname -r)\" || true\nsudo cpupower frequency-set -g performance || true\n\n# NUMA and topology tools for GPU affinity tuning\nsudo apt-get install -qq -y numactl libnuma-dev hwloc\n\n# Disable irqbalance \u2014 let NVIDIA driver manage interrupt affinity\nsudo systemctl disable irqbalance || true\nsudo systemctl stop    irqbalance || true\n\n# Apply all sysctl settings now\nsudo sysctl --system\n<\/code><\/pre>\n<p>\u0645\u06a9\u0645\u0644 base.sh \u0627\u0633\u06a9\u0631\u067e\u0679 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-shell\">#!\/bin\/bash\nset -euo pipefail\n\nlog()   { echo \"[BASE] $1\"; }\nerror() { echo \"[BASE][ERROR] $1\" >&2; exit 1; }\n\n###############################################################\n###############################################################\n[[ -z \"${DRIVER_VERSION:-}\" ]] && error \"DRIVER_VERSION is not set.\"\n[[ -z \"${CUDA_VERSION:-}\"   ]] && error \"CUDA_VERSION is not set.\"\n\nlog \"DRIVER_VERSION : ${DRIVER_VERSION}\"\nlog \"CUDA_VERSION   : ${CUDA_VERSION}\"\n\nDISTRO=((. \/etc\/os-release && echo \"){ID}${VERSION_ID}\" | tr -d '.')\nARCH=\"x86_64\"\n\nexport DEBIAN_FRONTEND=noninteractive\n\n###############################################################\n# 1. System update\n###############################################################\nlog \"Updating system packages...\"\nsudo apt-get update -qq\nsudo apt-get upgrade -qq -y\n\n###############################################################\n# 2. Pre-installation \u2014 kernel headers\n#    Source: https:\/\/docs.nvidia.com\/datacenter\/tesla\/driver-installation-guide\/ubuntu.html\n###############################################################\nlog \"Installing kernel headers and build tools...\"\nsudo apt-get install -qq -y \n  \"linux-headers-$(uname -r)\" \n  build-essential \n  dkms \n  curl \n  wget\n\n###############################################################\n# 3. NVIDIA CUDA Network Repository\n###############################################################\nlog \"Adding NVIDIA CUDA apt repository (${DISTRO})...\"\nwget -q \"https:\/\/developer.download.nvidia.com\/compute\/cuda\/repos\/({DISTRO}\/){ARCH}\/cuda-keyring_1.1-1_all.deb\" \n  -O \/tmp\/cuda-keyring.deb\nsudo dpkg -i \/tmp\/cuda-keyring.deb\nrm \/tmp\/cuda-keyring.deb\nsudo apt-get update -qq\n\n###############################################################\n# 4. Pin driver version BEFORE installation (590+ requirement)\n###############################################################\nlog \"Pinning driver to version ${DRIVER_VERSION}...\"\nsudo apt-get install -qq -y \"nvidia-driver-pinning-${DRIVER_VERSION}\"\n\n###############################################################\n# 5. Compute-only (headless) driver \u2014 Open Kernel Modules\n#    Source: NVIDIA Driver Installation Guide \u2014 Compute-only System (Open Kernel Modules)\n#\n#    libnvidia-compute  = compute libraries only (no GL\/Vulkan\/display)\n#    nvidia-dkms-open   = open-source kernel module built via DKMS\n#\n#    Open kernel modules are the NVIDIA-recommended choice for\n#    Ampere, Hopper, and Blackwell data centre GPUs (A100, H100, etc.)\n###############################################################\nlog \"Installing NVIDIA compute-only driver (open kernel modules)...\"\nsudo apt-get -V install -y \n  libnvidia-compute \n  nvidia-dkms-open\n\n###############################################################\n# 6. CUDA Toolkit\n###############################################################\nlog \"Installing CUDA Toolkit ${CUDA_VERSION}...\"\nsudo apt-get install -qq -y \"cuda-toolkit-${CUDA_VERSION}\"\n\n# Persist CUDA paths for all users and sessions\ncat <<'EOF' | sudo tee \/etc\/profile.d\/cuda.sh\nexport PATH=\/usr\/local\/cuda\/bin:$PATH\nexport LD_LIBRARY_PATH=\/usr\/local\/cuda\/lib64:${LD_LIBRARY_PATH:-}\nEOF\necho \"\/usr\/local\/cuda\/lib64\" | sudo tee \/etc\/ld.so.conf.d\/cuda.conf\nsudo ldconfig\n\n###############################################################\n# 7. NVIDIA Container Toolkit\n#    Required for GPU workloads in Docker \/ containerd \/ Kubernetes\n###############################################################\nlog \"Installing NVIDIA Container Toolkit...\"\ncurl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/gpgkey \n  | sudo gpg --dearmor -o \/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg\n\ncurl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/stable\/deb\/nvidia-container-toolkit.list \n  | sed 's#deb https:\/\/#deb [signed-by=\/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg] https:\/\/#g' \n  | sudo tee \/etc\/apt\/sources.list.d\/nvidia-container-toolkit.list\n\nsudo apt-get update -qq\nsudo apt-get install -qq -y nvidia-container-toolkit\n\n# Configure for containerd (primary Kubernetes runtime)\nsudo nvidia-ctk runtime configure --runtime=containerd\n\n# Configure for Docker if present on this image\nif systemctl list-unit-files | grep -q \"^docker.service\"; then\n  sudo nvidia-ctk runtime configure --runtime=docker\nfi\n\n###############################################################\n# 8. DCGM \u2014 DataCenter GPU Manager\n###############################################################\nlog \"Installing DCGM...\"\nsudo apt-get install -qq -y datacenter-gpu-manager\n \nDCGM_VER=((dpkg -s datacenter-gpu-manager 2>\/dev\/null | awk '\/^Version:\/{print )2}' | sed 's\/^[0-9]*:\/\/')\nDCGM_MAJOR=((echo \"){DCGM_VER}\" | cut -d. -f1)\nDCGM_MINOR=((echo \"){DCGM_VER}\" | cut -d. -f2)\nif [[ \"({DCGM_MAJOR}\" -lt 4 ]] || { [[ \"){DCGM_MAJOR}\" -eq 4 ]] && [[ \"${DCGM_MINOR}\" -lt 3 ]]; }; then\n  error \"DCGM ${DCGM_VER} is below the 4.3 minimum required for driver 590+. Check your CUDA repo.\"\nfi\nlog \"DCGM installed: ${DCGM_VER}\"\n\nsudo systemctl enable nvidia-dcgm\nsudo systemctl start  nvidia-dcgm\n\n# Fabric Manager \u2014 only needed for NVLink\/NVSwitch GPUs (A100\/H100 multi-GPU nodes)\nif systemctl list-unit-files | grep -q \"^nvidia-fabricmanager.service\"; then\n  log \"Enabling nvidia-fabricmanager for NVLink GPUs...\"\n  sudo systemctl enable nvidia-fabricmanager\n  sudo systemctl start  nvidia-fabricmanager\nfi\n\n###############################################################\n# 9. NVIDIA Persistence Daemon\n#    Keeps the driver loaded between jobs \u2014 reduces cold-start\n#    latency on the first CUDA call in each new workload\n###############################################################\nlog \"Enabling nvidia-persistenced...\"\nsudo systemctl enable nvidia-persistenced\nsudo systemctl start  nvidia-persistenced\n\n###############################################################\n# 10. System tuning for GPU compute workloads\n###############################################################\nlog \"Applying system tuning...\"\n\n# Disable swap (critical for Kubernetes scheduler and ML stability)\nsudo swapoff -a\nsudo sed -i '\/ swap \/ s\/^\/#\/' \/etc\/fstab\necho \"vm.swappiness=0\"     | sudo tee \/etc\/sysctl.d\/99-gpu-swappiness.conf\n\n# Hugepages \u2014 reduces TLB pressure for large memory allocations\necho \"vm.nr_hugepages=2048\" | sudo tee \/etc\/sysctl.d\/99-gpu-hugepages.conf\n\n# CPU performance governor\nsudo apt-get install -qq -y linux-tools-common \"linux-tools-$(uname -r)\" || true\nsudo cpupower frequency-set -g performance || true\n\n# NUMA and topology tools for GPU affinity tuning\nsudo apt-get install -qq -y numactl libnuma-dev hwloc\n\n# Disable irqbalance \u2014 let NVIDIA driver manage interrupt affinity\nsudo systemctl disable irqbalance || true\nsudo systemctl stop    irqbalance || true\n\n# Apply all sysctl settings now\nsudo sysctl --system\n\n###############################################################\n# Done\n###############################################################\nlog \"============================================\"\nlog \"Base layer provisioning complete.\"\nlog \"  OS      : ${DISTRO}\"\nlog \"  Driver  : ${DRIVER_VERSION} (open kernel modules, compute-only)\"\nlog \"  CUDA    : cuda-toolkit-${CUDA_VERSION}\"\nlog \"  DCGM    : ${DCGM_VER}\"\nlog \"============================================\"\n<\/code><\/pre>\n<h2 id=\"heading-step-7-assembling-and-running-the-build\">\u0645\u0631\u062d\u0644\u06c1 7: \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u062c\u0645\u0639 \u0627\u0648\u0631 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u067e\u06c1\u0644\u06d2 \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u067e\u06be\u0631 \u0628\u0644\u0688 \u06a9\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u062a\u0648\u062b\u06cc\u0642 \u0646\u062d\u0648 \u06cc\u0627 \u0645\u062a\u063a\u06cc\u0631 \u06a9\u06cc \u062e\u0631\u0627\u0628\u06cc\u0648\u06ba \u06a9\u0648 \u062c\u0644\u062f \u067e\u06a9\u0691 \u0644\u06cc\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0679\u0648\u0679\u06cc \u06c1\u0648\u0626\u06cc \u062a\u0631\u062a\u06cc\u0628 \u0633\u06d2 \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-shellscript\">packer validate -var-file=values.pkrvars.hcl .\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u062a\u0648\u062b\u06cc\u0642 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0635\u0631 \u062a\u0635\u062f\u06cc\u0642\u06cc \u067e\u06cc\u063a\u0627\u0645 \u0627\u0633 \u0637\u0631\u062d \u0646\u0638\u0631 \u0622\u0626\u06d2 \u06af\u0627: <code>The configuration is valid.<\/code>. \u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u06c1\u0645 \u062a\u0639\u0645\u06cc\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba. \u0622\u067e \u06a9\u0648 \u0639\u0627\u0631\u0636\u06cc VMs \u0628\u0646\u0627\u0646\u06d2\u060c \u067e\u0631\u0648\u0648\u06cc\u0698\u0646\u0631\u0632 \u0686\u0644\u0627\u0646\u06d2 \u0627\u0648\u0631 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0639\u0645\u0644 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u0631\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">packer build -var-file=values.pkrvars.hcl .\n<\/code><\/pre>\n<p>\u062a\u0639\u0645\u06cc\u0631\u0627\u062a \u0645\u06cc\u06ba \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4 <strong>15-20 \u0645\u0646\u0679\u060c<\/strong> \u06cc\u06c1 \u0622\u067e \u06a9\u06d2 \u0646\u06cc\u0679 \u0648\u0631\u06a9 \u06a9\u06cc \u0631\u0641\u062a\u0627\u0631 \u0627\u0648\u0631 \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u06cc \u062a\u0646\u0635\u06cc\u0628 \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2\u06d4 \u062a\u06cc\u0646 \u0627\u06c1\u0645 \u0686\u0648\u06a9\u06cc\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u067e\u06cc\u06a9\u0631 \u0644\u0627\u06af \u06a9\u0648 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><strong>\u0645\u062b\u0627\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/strong> - \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0639\u0627\u0631\u0636\u06cc VM \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u06a9\u0645\u06cc\u0634\u0646 \u06a9\u06cc \u067e\u06cc\u062f\u0627\u0648\u0627\u0631<\/strong> - \u0627\u0633\u06a9\u0631\u067e\u0679 \u06a9\u0627 \u06c1\u0631 \u0645\u0631\u062d\u0644\u06c1 (\u0627\u067e \u0688\u06cc\u0679\u060c \u0631\u06cc\u0628\u0648\u0679\u060c <code>script\/base.sh<\/code>) \u0627\u0648\u0631 \u063a\u0644\u0637\u06cc\u0627\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u0635\u0648\u06cc\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/strong> \u2014 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0639\u0645\u06cc\u0631 \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u06af\u0626\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u062a\u0635\u0648\u06cc\u0631\u06cc \u0646\u0645\u0648\u0646\u06d2 \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u062a\u0639\u0645\u06cc\u0631 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2 \u062a\u0648\u060c \u0646\u0627\u06a9\u0627\u0645 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06c1 \u0633\u06d2 \u0644\u0627\u06af \u0644\u0627\u0626\u0646 \u06a9\u0627\u067e\u06cc \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0633\u06a9\u0631\u067e\u0679 \u06cc\u0627 \u0645\u062a\u063a\u06cc\u0631 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4 \u062a\u06cc\u0632 \u062a\u0631 \u0679\u0631\u0628\u0644 \u0634\u0648\u0679\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0645\u0645\u0627\u062b\u0644 \u0679\u06cc\u0633\u0679 VMs \u067e\u0631 \u0645\u0642\u0627\u0645\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u06a9\u0627\u0645 \u067e\u0631\u0648\u0648\u06cc\u0698\u0646\u0631\u0632 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627 \u06a9\u0631 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u0627\u0639\u0627\u062f\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">googlecompute.gpu-node: output will be in this color.\n\n==> googlecompute.gpu-node: Checking image does not exist...\n==> googlecompute.gpu-node: Creating temporary RSA SSH key for instance...\n==> googlecompute.gpu-node: no persistent disk to create\n==> googlecompute.gpu-node: Using image: ubuntu-2404-noble-amd64-v20260225\n==> googlecompute.gpu-node: Creating instance...\n==> googlecompute.gpu-node: Loading zone: us-central1-a\n==> googlecompute.gpu-node: Loading machine type: g2-standard-4\n==> googlecompute.gpu-node: Requesting instance creation...\n==> googlecompute.gpu-node: Waiting for creation operation to complete...\n==> googlecompute.gpu-node: Instance has been created!\n==> googlecompute.gpu-node: Waiting for the instance to become running...\n==> googlecompute.gpu-node: IP: 34.58.58.214\n==> googlecompute.gpu-node: Using SSH communicator to connect: 34.58.58.214\n==> googlecompute.gpu-node: Waiting for SSH to become available...\nsystemd-logind.service\n==> googlecompute.gpu-node:  systemctl restart unattended-upgrades.service\n==> googlecompute.gpu-node:\n==> googlecompute.gpu-node: No containers need to be restarted.\n==> googlecompute.gpu-node:\n==> googlecompute.gpu-node: User sessions running outdated binaries:\n==> googlecompute.gpu-node:  packer @ session #1: sshd[1535]\n==> googlecompute.gpu-node:  packer @ user manager service: systemd[1540]\n==> googlecompute.gpu-node: Pausing 1m0s before the next provisioner...\n==> googlecompute.gpu-node: Provisioning with shell script: script\/base.sh\n==> googlecompute.gpu-node: [BASE] DRIVER_VERSION : 590.48.01\n==> googlecompute.gpu-node: [BASE] CUDA_VERSION   : 13.1\n==> googlecompute.gpu-node: [BASE] Updating system packages...\n==> googlecompute.gpu-node: [BASE] Installing kernel headers and build tools...\n==> googlecompute.gpu-node: [BASE] Installing CUDA Toolkit 13.1...\n==> googlecompute.gpu-node: [BASE] Installing DCGM...\n==> googlecompute.gpu-node: [BASE] Enabling nvidia-persistenced...\n==> googlecompute.gpu-node: [BASE] Applying system tuning...\n==> googlecompute.gpu-node: vm.swappiness=0\n==> googlecompute.gpu-node: vm.nr_hugepages=2048\n==> googlecompute.gpu-node: Setting cpu: 0\n==> googlecompute.gpu-node: Error setting new values. Common errors:\n==> googlecompute.gpu-node: [BASE] ============================================\n==> googlecompute.gpu-node: [BASE] Base layer provisioning complete.\n==> googlecompute.gpu-node: [BASE]   OS      : ubuntu2404\n==> googlecompute.gpu-node: [BASE]   Driver  : 590.48.01 (open kernel modules, compute-only)\n==> googlecompute.gpu-node: [BASE]   CUDA    : cuda-toolkit-13.1\n==> googlecompute.gpu-node: [BASE]   DCGM    : 1:3.3.9\n==> googlecompute.gpu-node: [BASE] ============================================\n==> googlecompute.gpu-node: Deleting instance...\n==> googlecompute.gpu-node: Instance has been deleted!\n==> googlecompute.gpu-node: Creating image...\n==> googlecompute.gpu-node: Deleting disk...\n==> googlecompute.gpu-node: Disk has been deleted!\n==> googlecompute.gpu-node: Running post-processor:  (type shell-local)\n==> googlecompute.gpu-node (shell-local): Running local shell script: \n==> googlecompute.gpu-node (shell-local): === Image Build Complete ===\n==> googlecompute.gpu-node (shell-local): Image ID: packer-69b6c2ee-883a-3602-7bb5-059f1ba27c8b\n==> googlecompute.gpu-node (shell-local): Sun Mar 15 15:50:09 WAT 2026\nBuild 'googlecompute.gpu-node' finished after 17 minutes 55 seconds.\n\n==> Wait completed after 17 minutes 55 seconds\n\n==> Builds finished. The artifacts of successful builds are:\n--> googlecompute.gpu-node: A disk image was created in the 'my_project-00000' project: base-gpu-image-1773585134\n<\/code><\/pre>\n<h3 id=\"heading-step-8-test-the-image-and-verify-the-gpu-stack\">\u0645\u0631\u062d\u0644\u06c1 8: \u0627\u0645\u06cc\u062c \u06a9\u06cc \u062c\u0627\u0646\u0686 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 GPU \u0627\u0633\u0679\u06cc\u06a9 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u062a\u0635\u0648\u06cc\u0631 GCP \u06a9\u0646\u0633\u0648\u0644 \u0645\u06cc\u06ba \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2\u06d4 <strong>\u06a9\u0645\u067e\u06cc\u0648\u0679 \u2192 \u0627\u0633\u0679\u0648\u0631\u06cc\u062c \u2192 \u062a\u0635\u0648\u06cc\u0631<\/strong> \u0646\u0626\u06cc \u062a\u062e\u0644\u06cc\u0642 \u06a9\u0631\u062f\u06c1 OS \u062a\u0635\u0648\u06cc\u0631 \u062a\u0644\u0627\u0634 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0635\u0648\u06cc\u0631 \u0633\u06d2 \u0627\u06cc\u06a9 \u0679\u06cc\u0633\u0679 VM \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">gcloud compute instances create my-gpu-vm \n  --machine-type=g2-standard-4 \n  --accelerator=count=1,type=nvidia-l4 \n  --image=base-gpu-image-1772718104 \n  --image-project=YOUR_PROJECT_ID \n  --boot-disk-size=50GB \n  --maintenance-policy=TERMINATE \n  --restart-on-failure \n  --zone=us-central1-a\n\nCreated [https:\/\/www.googleapis.com\/compute\/v1\/projects\/my-project-000\/zones\/us-central1-a\/instances\/my-gpu-vm].\nNAME       ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP    EXTERNAL_IP      STATUS\nmy-gpu-vm  us-central1-a  g2-standard-4               10.128.15.227  104.154.184.217  RUNNING\n<\/code><\/pre>\n<p>\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c \u0645\u062b\u0627\u0644 <code>RUNNING<\/code>\u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 NVIDIA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632 \u0627\u0648\u0631 GPU \u062f\u0631\u062c \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/04\/1776906461_737_GCP-\u067e\u0631-HashiCorp-Packer-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u0631\u062a\u06d2-\u06c1\u0648\u0626\u06d2-GPU-\u0633\u06d2.png\" alt=\"Nvidia-SMI \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0627 \u0622\u0624\u0679 \u067e\u0679 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0627\u0648\u0631 CUDA \u0648\u0631\u0698\u0646 \u062f\u06a9\u06be\u0627 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/04\/1776906461_448_GCP-\u067e\u0631-HashiCorp-Packer-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u0631\u062a\u06d2-\u06c1\u0648\u0626\u06d2-GPU-\u0633\u06d2.png\" alt=\"\u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06c1 \u062b\u0627\u0628\u062a \u0642\u062f\u0645\u06cc \u0645\u0648\u0688 \u0641\u0639\u0627\u0644 \u06c1\u06d2\u06d4\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p><strong>\u06a9\u06c1<\/strong> <code>nvidia-smi<\/code> <strong>\u0622\u0624\u0679 \u067e\u0679 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2:<\/strong><\/p>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0639\u0627\u0645 \u0688\u06cc\u0641\u0627\u0644\u0679 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u06cc \u0637\u0631\u062d \u062f\u06a9\u06be\u0627\u0626\u06cc \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0646\u0648\u0679\u0633 <code>Disp.A: Off<\/code>? \u06cc\u06c1 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0645\u067e\u06cc\u0648\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0627\u0645 \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4 \u0688\u0633\u067e\u0644\u06d2 \u0627\u0688\u0627\u067e\u0679\u0631 \u0686\u0627\u0644\u0648 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0646\u0633\u0679\u0627\u0644 \u0634\u062f\u06c1 CUDA \u0679\u0648\u0644 \u06a9\u0679 \u06a9\u0648 \u0686\u0644\u0627 \u06a9\u0631 \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba: <code>nvcc --version<\/code>. \u0622\u067e \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0648\u0631\u0698\u0646 13.1 \u0645\u062e\u0635\u0648\u0635 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/04\/1776906461_885_GCP-\u067e\u0631-HashiCorp-Packer-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u0631\u062a\u06d2-\u06c1\u0648\u0626\u06d2-GPU-\u0633\u06d2.png\" alt=\"NVCC -Version \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0627 \u0622\u0624\u0679 \u067e\u0679\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<p>\u0622\u0626\u06cc\u06d2 \u0686\u0644 \u06a9\u0631 DCGM \u0627\u0646\u0633\u0679\u0627\u0644\u06cc\u0634\u0646 \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0631\u06cc\u06ba: <code>dcgmi discovery -l<\/code>. \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0622\u0624\u0679 \u067e\u0679 \u0627\u0634\u0627\u0631\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 DCGM \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0627\u062a \u0686\u06cc\u062a \u06a9\u0631 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/umang.pk\/wp-content\/uploads\/2026\/04\/1776906461_108_GCP-\u067e\u0631-HashiCorp-Packer-\u06a9\u0627-\u0627\u0633\u062a\u0639\u0645\u0627\u0644-\u06a9\u0631\u062a\u06d2-\u06c1\u0648\u0626\u06d2-GPU-\u0633\u06d2.png\" alt=\"DCGMI \u062f\u0631\u06cc\u0627\u0641\u062a -l \u06a9\u0645\u0627\u0646\u0688 \u06a9\u0627 \u0622\u0624\u0679 \u067e\u0679 \u0622\u0644\u06c1 \u06a9\u06cc \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u062f\u06a9\u06be\u0627 \u0631\u06c1\u0627 \u06c1\u06d2\u06d4\" style=\"display:block;margin:0 auto\" width=\"600\" height=\"400\" loading=\"lazy\" title=\"\"><\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>\u06c1\u0645\u0627\u0631\u06d2 \u067e\u0627\u0633 \u0627\u0628 \u0627\u06cc\u06a9 \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u06af\u0631\u06cc\u0688\u060c GPU-\u0622\u067e\u0679\u0645\u0627\u0626\u0632\u0688 \u0628\u06cc\u0633 \u0627\u0645\u06cc\u062c \u06c1\u06d2 \u062c\u0633 \u0645\u06cc\u06ba \u0627\u0648\u067e\u0646 \u06a9\u0631\u0646\u0644 \u0645\u0627\u0688\u06cc\u0648\u0644\u0632\u060c \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u06a9\u06d2 \u0644\u06cc\u06d2 DCGM\u060c \u0627\u0648\u0631 CUDA \u0679\u0648\u0644 \u06a9\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0628\u0646\u0627\u0626\u06d2 \u06af\u0626\u06d2 NVIDIA \u06a9\u0645\u067e\u06cc\u0648\u0679 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u0635\u0648\u0635 \u0688\u0631\u0627\u0626\u06cc\u0648\u0631 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0645 \u0646\u06d2 GPU \u06a9\u0645\u067e\u06cc\u0648\u0679\u0646\u06af \u0648\u0631\u06a9 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 OS \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0679\u06cc\u0648\u0646\u0646\u06af \u0628\u06be\u06cc \u0644\u0627\u06af\u0648 \u06a9\u06cc\u060c \u062c\u0648 \u062f\u0633\u062a\u06cc \u0633\u06cc\u0679 \u0627\u067e \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u06cc\u06a9 \u0645\u0633\u062a\u0642\u0644 \u0627\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u062a\u062c\u0631\u0628\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u0627\u06ba \u0633\u06d2\u060c \u0622\u067e PyTorch\u060c TensorFlow\u060c \u06cc\u0627 vLLM \u062c\u06cc\u0633\u06d2 \u0641\u0631\u06cc\u0645 \u0648\u0631\u06a9 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631 \u06a9\u06d2 \u0627\u067e\u0646\u06cc \u062a\u0639\u0645\u06cc\u0631 \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0644\u06cc\u0626\u0631 \u0627\u0633\u06a9\u0631\u067e\u0679\u0633 \u0634\u0627\u0645\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u06cc\u0627 \u0627\u067e\u0646\u06d2 GPU \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062b\u0627\u0644\u06cc \u0679\u06cc\u0645\u067e\u0644\u06cc\u0679\u0633 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633 \u062a\u0635\u0648\u06cc\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u06a9\u0645\u0644 \u067e\u06cc\u06a9\u0631 \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u0645\u06cc\u06ba \u0679\u0631\u06cc\u0646\u0646\u06af \u0627\u0648\u0631 \u0627\u0646\u0641\u0631\u0646\u0633 \u0648\u0631\u06a9 \u0628\u0648\u062c\u06be \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0636\u0627\u0641\u06cc \u0627\u0633\u06a9\u0631\u067e\u0679\u0633 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba \u062c\u0646 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u062a\u0635\u0627\u0648\u06cc\u0631 \u06a9\u0648 \u0628\u0691\u06be\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-references\"><strong>\u062d\u0648\u0627\u0644\u06c1 \u062c\u0627\u062a<\/strong><\/h2>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062c\u0628 \u0628\u06be\u06cc \u0622\u067e \u0627\u067e\u0646\u06d2 GPU \u0627\u0646\u0641\u0631\u0627\u0633\u0679\u0631\u06a9\u0686\u0631 \u06a9\u0648 \u06af\u06be\u0645\u0627\u0624 \u06af\u06d2 \u062a\u0648 \u0622\u067e \u0648\u06c1\u06cc \u06a9\u0627\u0645 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 CUDA \u0688\u0631\u0627\u0626\u06cc\u0648\u0631\u0632\u060c DCGM \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627\u060c OS-level GPU \u0679\u06cc\u0648\u0646\u0646\u06af \u0644\u06af\u0627\u0646\u0627\u060c \u0627\u0648\u0631 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06d2 \u0645\u0633\u0627\u0626\u0644 \u06a9\u0648 \u062d\u0644 \u06a9\u0631\u0646\u0627\u06d4 \u06c1\u0631 \u0628\u0627\u0631 \u0648\u06c1\u06cc \u067e\u0631\u0627\u0646\u06cc \u0631\u0633\u0648\u0645\u0627\u062a\u060c \u0645\u06c1\u0646\u06af\u06d2 \u06a9\u0644\u0627\u0624\u0688 \u06a9\u0631\u06cc\u0688\u0679 \u06a9\u0648 \u0636\u0627\u0626\u0639 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u062d\u0642\u06cc\u0642\u06cc \u06a9\u0627\u0645 \u0634\u0631\u0648\u0639 \u06c1\u0648\u0646\u06d2 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u0645\u0627\u06cc\u0648\u0633\u06cc [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":22903,"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-22902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/22902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/comments?post=22902"}],"version-history":[{"count":1,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/22902\/revisions"}],"predecessor-version":[{"id":22904,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/posts\/22902\/revisions\/22904"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media\/22903"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/media?parent=22902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/categories?post=22902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/en_us\/wp-json\/wp\/v2\/tags?post=22902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}