This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Wednesday, 12 November 2025
चेतावनी: ये तो डीआरफ्लिक हैं जो 'के साथ गलत' है.
यह शायद नीचे क्या काम नहीं करेगा, मैं इन्हें बनाने के लिए कैसे और फिर सभी कदमों के रूप में और काम करने के लिए एक नमूना ऐप मिलता है... तुम चुपके से किया गया है और उन्हें देखा है! वे शायद मध्य-बार के लिए तैयार हो जाएगा.
## परिचय
भाग 2 में आपका स्वागत हैपार्ट 1
, हम एक लेखन सहायक बनाने के लिए दर्शन दिया है जो आपके ब्लॉग को एक ज्ञान आधार आधार के रूप में प्रयोग करता है कि किस तरह वकील TLLM के मामले में कानून को प्रशिक्षित करते हैं।
**अब हमारे हाथ नींव के साथ गंदे करने का समय आ गया है. सुनिश्चित करें कि आपका जीपिपी एआई काम के बोझों के लिए तैयार है.**ध्यान दें: यह एआई के साथ मेरे परीक्षण का हिस्सा है (जैसे कि मेरे स्वयं का संपादन).
उसी आवाज़ की तरह, उसी आवाज़ में एक - दूसरे का हाथ होता है; सिर्फ तेज़ उंगलियों को ।मेरे हार्डवेयर के बारे में: मैं एक NVIDRARARAX A4000 (16GB वोथ) का उपयोग कर रहा हूँ, एएमईन 950XXX, और 96वीं डीआर5 रैम.लेकिन आप इस की जरूरत नहीं है!भाग 1 में कवर के रूप में आप किसी भी NVIDia जीपी को 8GB+रैम के साथ उपयोग कर सकते हैं, या सिर्फ सीपीयू को चलाने के लिए.
यह हिस्सा मूल लग सकता है अगर आप पहले से ही परिचित हैं
graph LR
A[AI Workload] --> B{Type?}
B -->|Matrix Operations| C[GPU: 100x+ faster]
B -->|Sequential Logic| D[CPU: Better]
C --> E[Embedding Generation]
C --> F[LLM Inference]
C --> G[Vector Search]
D --> H[Application Logic]
D --> I[File I/O]
class C gpu
class E,F,G aiTasks
classDef gpu stroke:#333,stroke-width:4px
classDef aiTasks stroke:#333
, लेकिन मुझे भरोसा है - मैं अनगिनत घंटे giroddss है कि वापस संस्करण बेमेल, वातावरण चर, या गलत है:
- जीपिपीस के हजारों कोर वीस सीपीयू्स के दर्जनों हैअंतर्निर्मित संचालन
- एआई अधिकतर मैट्रिक्स गणित है, जो कि GUPUs पर उत्कृष्ट हैमेमोरी ब्रादा चौड़ाई
- जीयूपीएस खिसकता डाटा बहुत तेजी सेविशिष्टीकृत हार्डवेयर
टी सेंसर कोर एआई- विशिष्ट ऑपरेशनों को तेज़ करता है
वास्तविक- विश्व उदाहरण( मेरे हार्डवेयर पर): ब्लॉग पोस्ट के लिए एम्बेडिंग बनाया जा रहा है:
(24GB): जोर, ~. 2s प्रति पोस्ट
(12GB): ~ 0. 5s प्रति पोस्ट
6144 सीडा कोर
UNTRX 4090RRRGB 13B- 30BBBY इस परियोजना के लिए टोटेम परUNTX 4070BBBS 12GBBB-13 बढ़िया चुनाव
IMRT 306046 12GB7BBRT 7BT-हंत्रीयUNTX 4060BBBS 16GBBB- 13BBS बढ़िया मान
IMD4000 (अंग्रेजी) 16GB7B- 13BBBB का कामकाज GUULNYE:
: NPUUNA का समर्थन नहीं करता, जो यह शिक्षण पाठ उपयोग करता है:
: अब भी कल की नींद सो रहे हैंयदि आपके पास एनयूयू- डिज़ेड सीपीयू हैसिर्फ सीपीयू मोड का प्रयोग अब के लिए करें (सभी कुछ काम करता है, सिर्फ धीमा)
NNX रन समय प्रत्यक्षएमएल पर
# PowerShell
wmic path win32_VideoController get name
अद्यतन
Name
NVIDIA RTX A4000
भविष्य के भागों पर ग़ौर किया जाएगा जब NPU समर्थन सुधार
नियाडिया
graph TB
A[Your C# Application] --> B[ONNX Runtime / LLamaSharp]
B --> C[CUDA Toolkit]
C --> D[cuDNN Libraries]
D --> E[NVIDIA Driver]
E --> F[GPU Hardware]
G[TensorRT] -.Optional.-> D
class A,F endpoints
class C,D,E install
classDef endpoints stroke:#333,stroke-width:4px
classDef install stroke:#333,stroke-width:2px
subgraph "What We'll Install"
C
D
E
end
क्योंकि यह परिपक्व और सुप्रसिद्ध है, लेकिन धारणाएँ NPU के लिए एक बार पर्यावरण को प्रभावित करता है!:
beninn
graph LR
A[1. NVIDIA Driver] --> B[2. CUDA Toolkit]
B --> C[3. cuDNN]
C --> D[4. Verify Install]
D --> E[5. Test from C#]
class A,B,C,D,E steps
classDef steps stroke:#333,stroke-width:2px
nvidia-smi
आपका अनुप्रयोग
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 546.33 Driver Version: 546.33 CUDA Version: 12.3 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA RTX A4000 WDDM | 00000000:01:00.0 Off | Off |
| 41% 32C P8 10W / 140W | 345MiB / 16376MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
- हमारा C# कोड:
Driver Versionसंस्थापन सड़कमैपCUDA Versionयहाँ आदेश है कि हम चीजों को संस्थापित करेंगे (क्रमिक मामलों!):Memory-Usageचरण 1: निलिया ड्राइवरपावरशेल खोलें:nvidia-smiआपको आउटपुट जैसे देखना चाहिए:
कुंजी जानकारी: क्या 545 होना चाहिए या नया
: यह 4यूडीए संस्करण समर्थित नहीं है, क्या संस्थापित है
RTX A4000
ऑपरेटिंग सिस्टम:nvidia-smi
(या आपका संस्करण)
स्ट्डियो ड्राइवर(संपारीक खेल तैयार से अधिक स्थिर)संस्थापित करें और रिबूट करेंइसके साथ फिर सत्यापित करें
सीयूडीए अभिलेखक
Installation Type: Custom (Advanced)
Select Components:
✅ CUDA Toolkit
✅ CUDA Documentation
✅ CUDA Samples
✅ CUDA Visual Studio Integration
❌ GeForce Experience (not needed)
❌ NVIDIA Driver (already installed)
चुनेंCUDICKSICKSIN_ 12. 1
चुनें:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1
विंडोज़ IF x6_64 exe exe (ow)
संस्थापन विकल्प
संस्थापक चलाएँ.:
$env:CUDA_PATH
# Should show: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1
$env:PATH -split ';' | Select-String CUDA
# Should show CUDA bin and libnvvp paths
जब खोला गया:
क्यों मनपसंद?: हम अपने ड्राइवर पदावनत नहीं करना चाहते या सॉफ्टवेयर संस्थापित करना चाहते हैं.:
This PCडिफ़ॉल्ट पथ ठीक है:लेकिन इस पर ध्यान दीजिए - हम इसे वातावरण चर के लिए आवश्यकता होगी!वातावरण चर नियत करेंआम तौर पर इन्हें सेट करते हैं, लेकिन जांच करते हैं:
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1CUDA_PATH_V12_1 = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1पावरशेल में चेक करेंPathयदि गुम है, जोड़ें को दस्ती रूप से
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\libnvvp
खोलेंवातावरण चर
# Check CUDA compiler
nvcc --version
# Should output:
# nvcc: NVIDIA (R) Cuda compiler driver
# Copyright (c) 2005-2023 NVIDIA Corporation
# Built on Tue_Feb__7_19:32:13_Pacific_Standard_Time_2023
# Cuda compilation tools, release 12.1, V12.1.66
# Check path resolves
where.exe nvcc
# Should show: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\nvcc.exe
के अंतर्गत
, सत्यापित/ जोड़ें:: मेंचर, इन अस्तित्व को निश्चित करें:
अपना टर्मिनल फिर से चालू करेंपरिवर्तनों को प्रभाव में लाने के लिएसीयूडीए संस्थापना सत्यापित करें**चरण 3: बॅस्कन (CUN गहरा नेटवर्क लाइब्रेरी)**Genenn गहरे सीखने के ऑपरेशन के स्तर प्रदान करता है.
यहाँ जाएँ
Genenn अभिलेखआपको एक निलाई विकासकर्ता खाता की आवश्यकता होगी (फ्री)
cudnn-windows-x86_64-8.9.7.29_cuda12-archive\
bin\
cudnn64_8.dll
cudnn_adv_infer64_8.dll
cudnn_adv_train64_8.dll
... (more DLLs)
include\
cudnn.h
... (header files)
lib\
x64\
cudnn.lib
... (lib files)
ढूंढें::
# Assuming you extracted to Downloads and CUDA is in default location
# Run PowerShell as Administrator
$cudnnPath = "$env:USERPROFILE\Downloads\cudnn-windows-x86_64-8.9.7.29_cuda12-archive"
$cudaPath = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1"
# Copy DLLs
Copy-Item "$cudnnPath\bin\*.dll" -Destination "$cudaPath\bin\"
# Copy headers
Copy-Item "$cudnnPath\include\*.h" -Destination "$cudaPath\include\"
# Copy libs
Copy-Item "$cudnnPath\lib\x64\*.lib" -Destination "$cudaPath\lib\x64\"
CUDA 12. एक्स. 7 (डी. 7 @ 203, 2023) के लिए डाउनलोड करें.:
bin\विंडोज़ के लिए स्थानीय संस्थापक (जिप)C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\include\INBOX को निकालें व संस्थापित करेंC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include\lib\x64\जिप निकालेंC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64\# Check DLLs exist
Test-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\cudnn64_8.dll"
# Should return: True
# List all cuDNN DLLs
Get-ChildItem "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\cudnn*.dll"
या इसे दस्ती रूप से करें
nvidia-smi
को
nvcc --version
को
# All these should return paths
$env:CUDA_PATH
$env:CUDA_PATH_V12_1
# Check PATH includes CUDA bin
$env:PATH -split ';' | Select-String CUDA
GConf संस्थापन सत्यापित करें
चरण 4: संपूर्ण विवरण:
cd "C:\ProgramData\NVIDIA Corporation\CUDA Samples\v12.1"
चलो सुनिश्चित करें कि सब कुछ एक साथ काम करता है।:
cd "1_Utilities\deviceQuery"
हार्डवेयर जाँचबिना त्रुटि के आपके जीपीयू को दिखाना चाहिए.
# If you have VS 2022
"C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" deviceQuery_vs2022.vcxproj /p:Configuration=Release /p:Platform=x64
सीयूडी जांच:
.\x64\Release\deviceQuery.exe
क्या CUD 12.1 को दिखाना चाहिए (या जो संस्करण आपने संस्थापित किया है).
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA RTX A4000"
CUDA Driver Version / Runtime Version 12.3 / 12.1
CUDA Capability Major/Minor version number: 8.6
Total amount of global memory: 16376 MBytes (17174683648 bytes)
(048) Multiprocessors, (128) CUDA Cores/MP: 6144 CUDA Cores
GPU Max Clock rate: 1560 MHz (1.56 GHz)
Memory Clock rate: 7001 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 4194304 bytes
...
Result = PASS
तंत्र चर जाँच: Result = PASS
CUD सेंपल जाँच (वैकल्पिक लेकिन अनुशंसित)
चलो नसीहत करते हैं और एक चलाते हैं.
mkdir CudaTest
cd CudaTest
dotnet new console -n CudaTest
cd CudaTest
कम्पाइल किया गया(अनुप्रयोगित दृश्य छात्र):
dotnet add package Microsoft.ML.OnnxRuntime.Gpu # Latest version
चलाएँ
Microsoft.ML.OnnxRuntimeआपको आउटपुट जैसे देखना चाहिए:Microsoft.ML.OnnxRuntime.Gpuकुंजी पंक्तिकदम 5: C# से जाँचProgram.cs:
using Microsoft.ML.OnnxRuntime;
using System;
using System.Linq;
namespace CudaTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("=== CUDA Test from C# ===\n");
// Test 1: Can we create a CUDA execution provider?
Console.WriteLine("Test 1: CUDA Execution Provider");
try
{
var cudaProviderOptions = new OrtCUDAProviderOptions();
var sessionOptions = new SessionOptions();
sessionOptions.AppendExecutionProvider_CUDA(cudaProviderOptions);
Console.WriteLine("✅ CUDA execution provider created successfully");
Console.WriteLine($" Device ID: {cudaProviderOptions.DeviceId}");
}
catch (Exception ex)
{
Console.WriteLine($"❌ Failed to create CUDA provider: {ex.Message}");
return;
}
// Test 2: Check available providers
Console.WriteLine("\nTest 2: Available Execution Providers");
var providers = OrtEnv.Instance().GetAvailableProviders();
foreach (var provider in providers)
{
Console.WriteLine($" - {provider}");
}
if (providers.Contains("CUDAExecutionProvider"))
{
Console.WriteLine("✅ CUDA provider is available");
}
else
{
Console.WriteLine("❌ CUDA provider NOT available");
}
// Test 3: Get CUDA device count and info
Console.WriteLine("\nTest 3: CUDA Device Information");
try
{
// ONNX Runtime doesn't expose deviceQuery directly,
// but we can test by trying to create a session
var opts = new SessionOptions();
opts.AppendExecutionProvider_CUDA(0); // Device 0
Console.WriteLine("✅ Successfully configured for CUDA device 0");
Console.WriteLine(" (Full device info requires native CUDA calls)");
}
catch (Exception ex)
{
Console.WriteLine($"❌ CUDA device configuration failed: {ex.Message}");
}
Console.WriteLine("\n=== Test Complete ===");
}
}
}
अब मज़ा भाग - चलो वास्तव में C# से CUD का उपयोग करते हैं!:
जाँच परियोजना बनाएँCUNX रन समय पर जोड़ें
DeviceIdऑन NNX रन समययह पैकेज क्यों?- सिर्फ सीपीयू
बनाएँकोड कमी
dotnet run
मेमोरी सीमाओं को नियत किया जा सकता है, अनुकूलन स्तर, आदि.:
=== CUDA Test from C# ===
Test 1: CUDA Execution Provider
✅ CUDA execution provider created successfully
Device ID: 0
Test 2: Available Execution Providers
- CUDAExecutionProvider
- CPUExecutionProvider
✅ CUDA provider is available
Test 3: CUDA Device Information
✅ Successfully configured for CUDA device 0
(Full device info requires native CUDA calls)
=== Test Complete ===
यदि यह सफल होता है, CUD काम कर रहा हैयदि यह असफल होता है, तो ढेर में कुछ टुकड़े हो जाता है
मानक (E):
# Make sure CUDA bin is in PATH
$env:PATH += ";C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin"
# Verify cudnn DLL exists
Test-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\cudnn64_8.dll"
# Try running again
dotnet run
यदि सब उचित संस्थापित हो तो "CUNEEXENTERSENTERSENTESENTENTENT" को शामिल करना चाहिएचेक प्रोग्राम के रूप में "Capeapapeapaner" को भी प्रदर्शित करता है
जाँच चलाएँ:
dotnet remove package Microsoft.ML.OnnxRuntime
dotnet add package Microsoft.ML.OnnxRuntime.Gpu --version 1.16.3
सामान्य त्रुटियाँ बरदाश्त की जा रही हैंत्रुटि: "Dafoltin: DLinin' लोड करने में अक्षम"
कारण: NNX रन समय CUND DLs नहीं मिल सकता है.
त्रुटि: "CUNEXERSENTRENTENTESer नहीं मिला"
: NNX रन समय पैकेज पर गलत उपयोग किया जा रहा है (सिर्फ सयूपी- सिर्फ).
# Download sample model
Invoke-WebRequest -Uri "https://github.com/onnx/models/raw/main/vision/classification/mnist/model/mnist-8.onnx" -OutFile "mnist.onnx"
त्रुटि: "CUND त्रुटि कोड: 35 (CUNA ड्राइवर संस्करण अपर्याप्त है)Program.cs:
using Microsoft.ML.OnnxRuntime;
using Microsoft.ML.OnnxRuntime.Tensors;
using System;
using System.Diagnostics;
using System.Linq;
namespace CudaTest
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("=== GPU vs CPU Inference Test ===\n");
// Create dummy input (28x28 image flattened to 784 floats)
var inputData = Enumerable.Range(0, 784).Select(i => (float)i / 784).ToArray();
var tensor = new DenseTensor<float>(inputData, new[] { 1, 1, 28, 28 });
var inputs = new List<NamedOnnxValue>
{
NamedOnnxValue.CreateFromTensor("Input3", tensor)
};
// Test 1: CPU Inference
Console.WriteLine("Test 1: CPU Inference");
var cpuTime = TestInference(inputs, useCuda: false, iterations: 100);
Console.WriteLine($" Average time: {cpuTime:F2}ms\n");
// Test 2: GPU Inference
Console.WriteLine("Test 2: GPU Inference");
var gpuTime = TestInference(inputs, useCuda: true, iterations: 100);
Console.WriteLine($" Average time: {gpuTime:F2}ms\n");
// Compare
Console.WriteLine("Comparison:");
Console.WriteLine($" CPU: {cpuTime:F2}ms");
Console.WriteLine($" GPU: {gpuTime:F2}ms");
Console.WriteLine($" Speedup: {cpuTime / gpuTime:F2}x faster on GPU");
}
static double TestInference(List<NamedOnnxValue> inputs, bool useCuda, int iterations)
{
var options = new SessionOptions();
if (useCuda)
{
options.AppendExecutionProvider_CUDA(0);
}
using var session = new InferenceSession("mnist.onnx", options);
// Warmup run (first run is always slower)
session.Run(inputs);
// Timed runs
var sw = Stopwatch.StartNew();
for (int i = 0; i < iterations; i++)
{
using var results = session.Run(inputs);
// Force evaluation
var output = results.First().AsEnumerable<float>().ToArray();
}
sw.Stop();
return sw.Elapsed.TotalMilliseconds / iterations;
}
}
}
कारण:
**: ड्राइवर सीयूडी 12x के लिए बहुत पुराना है.**ठीक करें
[1, 1, 28, 28]विस्तृत जाँच: वास्तविक**चलो कुछ वास्तविक - रन एक छोटे से तंत्रिका नेटवर्क को जीयूपी वीस पर करते हैं और गति की तुलना करते हैं.**जाँच मॉडल डाउनलोड करें
इंच जांच कोडअद्यतन
डीएसईटी सेंसर-nX रन समय का प्रतिनिधित्व करने का तरीका
dotnet run
= बैच_ आकार=1, चैनल=1, ऊंचाई=28, चौड़ाई=28नामित- परनिक्स मान
=== GPU vs CPU Inference Test ===
Test 1: CPU Inference
Average time: 0.42ms
Test 2: GPU Inference
Average time: 0.15ms
Comparison:
CPU: 0.42ms
GPU: 0.15ms
Speedup: 2.80x faster on GPU
- एक इनपुट नाम के लिए एक जुआर
टाइमिंग विधि ✅ Driver installed correctly ✅ CUDA Toolkit accessible ✅ cuDNN integrated ✅ ONNX Runtime finds CUDA ✅ C# can run GPU-accelerated inference
प्रत्याशित आउटपुट
sequenceDiagram
participant App as C# Application
participant CPU as CPU Memory
participant GPU as GPU Memory
participant Compute as GPU Cores
App->>CPU: Create input tensor
CPU->>GPU: Transfer input (PCIe)
Note over GPU: Slow! ~16GB/s
GPU->>Compute: Execute model
Note over Compute: Fast! TFLOPS
Compute->>GPU: Write output
GPU->>CPU: Transfer output (PCIe)
Note over GPU: Slow again!
CPU->>App: Return results
तो तुम कह दो कि मेरा परवरदिगार बिल्कुल रेज़ा रेज़ा करके उड़ा डालेगा और ज़मीन को एक चटियल मैदान कर छोड़ेगा:
graph TD
A[Inference Request] --> B{Model Size}
B -->|< 100MB| C{Batch Size}
B -->|> 100MB| D[Use GPU]
C -->|Single Item| E[Use CPU]
C -->|Batch > 10| D
D --> F[10-100x Faster]
E --> G[Lower Latency for Single]
class D,E choice
classDef choice stroke:#333,stroke-width:2px
स्मृति ट्रांसफर डायजेस्ट:
जीयूपी पर डाटा रखें
सीपीयू
nvidia-smi- छोटा मॉडल, एकल निवेदन, लंबी जानकारीnvccहमारे ब्लॉग लिखने के सहायक के लिए:
बैच प्रक्रिया 100+R_पीयूअनंतता- बड़ा मॉडल (7Bamms) :
सदिश खोज
सारांश
हम सफलता पूर्वक कर रहे हैं:
और
हमारा विकास वातावरण अब एआई कार्य भारों के लिए तैयार है!
# Check GPU
nvidia-smi
# Check CUDA
nvcc --version
where.exe nvcc
# Check cuDNN
Test-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin\cudnn64_8.dll"
# Check environment
$env:CUDA_PATH
$env:PATH -split ';' | Select-String CUDA
# Test from C#
dotnet run
, हम गहराई से एम्बेडिंग और सदिश डाटाबेस में उड़ा देंगे:
|-------|-------|-----|
| nvidia-smiइसमें क्या - क्या शामिल है और वे किस तरह की खोज में लगे रहते हैं?
| nvccक्यूसेवर, गैलेक्टर तथा अन्य विकल्पों के बीच चुनाव
अनएनएक्स रन समय के साथ स्थानीय बना रहे
लाखों सदिशों को कुशलता से भंडारित किया जा रहा है तथा प्रश्न कर रहा हैMicrosoft.ML.OnnxRuntime.Gpu |
हमारी पहली खोज प्रतिनिधि बनाया जा रहा है
चूकते संदर्भ |--------------|---------------|--------------|-----------------| क्विक डायग्नोस्टिक्स कमांड आम मसले DUREVEN त्रुटि
पार्ट ४: १९ - १९.पार्ट 5: विंडोज़ क्लाएंटभाग ६: स्थानीय संयोजन
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.