अपने ब्लॉग - पार्ट 2: जीयूएमई सेटअप तथा CUNGA में "लेजी जीए" के लिए बनाया जा रहा है
चेतावनी: ये तो डीआरफ्लिक हैं जो 'के साथ गलत' है.
यह शायद नीचे क्या काम नहीं करेगा, मैं इन्हें बनाने के लिए कैसे और फिर सभी कदमों के रूप में और काम करने के लिए एक नमूना ऐप मिलता है... तुम चुपके से किया गया है और उन्हें देखा है! वे शायद मध्य-बार के लिए तैयार हो जाएगा.
## परिचय
भाग 2 में आपका स्वागत हैपार्ट 1
, हम एक लेखन सहायक बनाने के लिए दर्शन दिया है जो आपके ब्लॉग को एक ज्ञान आधार आधार के रूप में प्रयोग करता है कि किस तरह वकील TLLM के मामले में कानून को प्रशिक्षित करते हैं।
**अब हमारे हाथ नींव के साथ गंदे करने का समय आ गया है. सुनिश्चित करें कि आपका जीपिपी एआई काम के बोझों के लिए तैयार है.**ध्यान दें: यह एआई के साथ मेरे परीक्षण का हिस्सा है (जैसे कि मेरे स्वयं का संपादन).
उसी आवाज़ की तरह, उसी आवाज़ में एक - दूसरे का हाथ होता है; सिर्फ तेज़ उंगलियों को ।मेरे हार्डवेयर के बारे में: मैं एक NVIDRARARAX A4000 (16GB वोथ) का उपयोग कर रहा हूँ, एएमईन 950XXX, और 96वीं डीआर5 रैम.लेकिन आप इस की जरूरत नहीं है!भाग 1 में कवर के रूप में आप किसी भी NVIDia जीपी को 8GB+रैम के साथ उपयोग कर सकते हैं, या सिर्फ सीपीयू को चलाने के लिए.
यह हिस्सा Guपिय सेटअप पर ध्यान केंद्रित करता है, लेकिन मैं सीपीयू-बस- केवल विकल्पों पर ध्यान देंगे जहाँ संबंधित है.
यह हिस्सा मूल लग सकता है अगर आप पहले से ही परिचित हैं
सीयूडीए
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 है कि वापस संस्करण बेमेल, वातावरण चर, या गलत है:
- beninnसंस्थापन.
- **हम शुरू से ही यह सही करेंगे.**क्यों?
- **इससे पहले कि हम संस्थापन में कटौती करें, हम समझ जाएँ क्यों हम सभी पर Guपि त्वरण की जरूरत है।**एआई कार्य लोड करने हेतु सीपीयू vUPUGenericName
- क्यों दक्षिण - पश्चिमी देशों में एआई के लिए अधिकार हैसमानांतरता
- जीपिपीस के हजारों कोर वीस सीपीयू्स के दर्जनों हैअंतर्निर्मित संचालन
- एआई अधिकतर मैट्रिक्स गणित है, जो कि GUPUs पर उत्कृष्ट हैमेमोरी ब्रादा चौड़ाई
- जीयूपीएस खिसकता डाटा बहुत तेजी सेविशिष्टीकृत हार्डवेयर
टी सेंसर कोर एआई- विशिष्ट ऑपरेशनों को तेज़ करता है
वास्तविक- विश्व उदाहरण( मेरे हार्डवेयर पर): ब्लॉग पोस्ट के लिए एम्बेडिंग बनाया जा रहा है:
- सीपीयू (Ryyan 9 9950X): ~5 सेकण्ड प्रति पोस्ट
- गपियू (A4000 16GB): ~ 0.3 सेकण्ड प्रति पोस्ट
- **यह 16x तेजी से है, और यह परिसर है जब पोस्टों की सैकड़ों प्रक्रिया!**दूसरे जीपीएस पर परफार्मेंस
- (प्रयोगी:
आरटीएक्स 4090
(24GB): जोर, ~. 2s प्रति पोस्ट
RTX 3060
(12GB): ~ 0. 5s प्रति पोस्ट
- GTX 1070 शेकेल(8GB): ~.8 प्रति पोस्ट
- **अरब से भी अधिक तेजी से!**आपकी हार्डवेयर को समझना
- **कुछ भी संस्थापित करने से पहले, हम के साथ काम कर रहे हैं क्या समझते हैं.**मेरा गापियू: नियाडिया आरटीएक्स A4000
- **यह मेरा विशेष जीपिय - एक पेशेवर कार्य पत्र है जिसके साथ:**16GB जीडीआर6 वीरैम
- 7B-13 पैरामीटर मॉडल के लिए पर्याप्त
6144 सीडा कोर
- समानांतर प्रक्रिया ऊर्जा |-----|------|----------------|----------| 256 टी सेंसर कोर
- धक्काित एआई ऑपरेशन सीयूडी गणना कैपसी 8.6
- संगतता के लिए महत्वपूर्ण सामान्य जीपीयू विकल्प यहाँ है कि विभिन्न गापी को संभाल सकते हैं:
बेलारूसी जीपित वीरैमिक मैक्स मॉडल आकार एवींस के लिए अच्छा
UNTRX 4090RRRGB 13B- 30BBBY इस परियोजना के लिए टोटेम परUNTX 4070BBBS 12GBBB-13 बढ़िया चुनाव
IMRT 306046 12GB7BBRT 7BT-हंत्रीयUNTX 4060BBBS 16GBBB- 13BBS बढ़िया मान
IMD4000 (अंग्रेजी) 16GB7B- 13BBBB का कामकाज GUULNYE:
- UNTX 1070BBSSBS 8GB 7B ( तेज) न्यूनतम व्यवहारAndel/AmPUs के बारे में क्या?
- **आप के बारे में सुना हो सकता है के बारे में Alltest UNPUs (NEEEENerrirates).**क्या आप निक्सिया के बजाय उन लोगों का इस्तेमाल कर सकते हैं?
- छोटा उत्तर: अभी तक नहीं, लेकिन शायद 2024-25 में!
- मौजूदा सीमाएँकोई सीयूएडी नहीं
: NPUUNA का समर्थन नहीं करता, जो यह शिक्षण पाठ उपयोग करता है:
- सीमित . नेटटी समर्थन
- : NNX रन समय NPU समर्थन प्रयोग किया जा रहा हैमॉडल संगतता: ज़्यादातर जीजीएफ मॉडल सीयूडी/ सीयूपी
- प्रत्यक्षएमएल समर्थन
: अब भी कल की नींद सो रहे हैंयदि आपके पास एनयूयू- डिज़ेड सीपीयू हैसिर्फ सीपीयू मोड का प्रयोग अब के लिए करें (सभी कुछ काम करता है, सिर्फ धीमा)
के लिए देखें
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 के लिए एक बार पर्यावरण को प्रभावित करता है!:
- अपना जीपीम जाँचेंपहले, विंडो की जांच करें अपने जीपिय को देखता है:
- **आपको कुछ ऐसा देखना चाहिए:**या NVIDIA नियंत्रण फलकों का इस्तेमाल टैब को सीधे प्रदर्शन करने के लिए करें.
- ओवरव्यूयहाँ है कि कैसे सॉफ्टवेयर स्टैक काम करता है:
- परत कमीनिक्सिया ड्राइवर
- - लो- लेवल जी संचारसेडीडीए औजारComment
- GuAP प्रोग्रामिंग के लिए एपीआई
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
- गहरा नेल नेटवर्क लाइब्रेरी (प्रचलित कर्नेल)
ऑन NNX रन समय / Lepa तीव्र
- उच्च स्तर एमएल फ्रेमवर्क
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यूडीए संस्करण समर्थित नहीं है, क्या संस्थापित है
- : वर्तमान में उपयोग में / कुल वीरैमयदि आवश्यक हो तो ड्राइवर अद्यतन करें
- यदिकाम या आपका ड्राइवर पुराना नहीं है:
- यहाँ जाएँNVIDIA ड्राइवर डाउनलोड
- चुनें:**उत्पाद प्रकार:**आरटीएक्स/क्विरो
- उत्पाद श्रेणी:RTX Aix Aix सेब्सउत्पाद:
RTX A4000
ऑपरेटिंग सिस्टम:
nvidia-smi
विंडोज़ 11
(या आपका संस्करण)
डाउनलोड प्रकार:
स्ट्डियो ड्राइवर(संपारीक खेल तैयार से अधिक स्थिर)संस्थापित करें और रिबूट करेंइसके साथ फिर सत्यापित करें
- चरण 2: CUNA औजारसीयूडीए जीयू त्वरण के लिए प्रोग्रामिंग इंटरफेस प्रदान करता है.
- संस्करण चयनगंभीर
- : हमें ज़रूरत हैसीयूडीए
आधुनिक मॉडलों के लिए 12.x.
- विशिष्ट:CUDIN 12. 11+
-
- सुसंगतता और विशेषताओं का अच्छा संतुलन ( पत्र के समय में)नवीनतम 12.x- अपनी लाइब्रेरी के साथ संगतता की जाँच करें
- सीयूडीडी 11.x नहीं- गुम विशेषता नए मॉडल की जरूरत है
- डाउनलोड करें (I)
यहाँ जाएँ
सीयूडीए अभिलेखक
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
(या 12.3 अगर आप आगमन कर रहे हैं)
चुनें:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1
विंडोज़ IF x6_64 exe exe (ow)
डाउनलोड (033GB)
संस्थापन विकल्प
संस्थापक चलाएँ.:
$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 गहरे सीखने के ऑपरेशन के स्तर प्रदान करता है.
संस्करण संगतता
- गंभीरbeninn
- संस्करण को सीयूडी संस्करण से मेल खाना चाहिए!
- के लिएसीयूडी 12.x
- , हम जरूरत हैGenenn 8. 9+
- के लिए CUD 12.x (जब लेखन के समय में, 8.9. 7 या बाद में)
डाउनलोड किया जा रहा है. कृपया इंतजार करें
यहाँ जाएँ
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\ - डाउनलोड करें (0-200MBMB)
include\INBOX को निकालें व संस्थापित करेंC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include\ - GenckN सिर्फ फ़ाइलों का सेट है जिसे आप अपने सीयूडी संस्थापना में नक़ल करते हैं.
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
उपकरण ढूंढेंQuery
कम्पाइल किया गया(अनुप्रयोगित दृश्य छात्र):
dotnet add package Microsoft.ML.OnnxRuntime.Gpu # Latest version
चलाएँ
Microsoft.ML.OnnxRuntimeआपको आउटपुट जैसे देखना चाहिए:Microsoft.ML.OnnxRuntime.Gpuकुंजी पंक्ति
यदि आप इसे देखते हैं, तो आपके जीयूयूपिडी + CULAV + लेक स्टैक काम कर रहा है!
कदम 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 रन समय- C# से CUD का उपयोग करने का आसान तरीका है.
यह पैकेज क्यों?- सिर्फ सीपीयू
-
- सीयूडी समर्थन शामिल करें
- जाँच कोड: जीपीयू जानकारी
-
बनाएँकोड कमी
- ऑर्टीसीडीएसर विकल्प
-
- CUND चलाने को कॉन्फ़िगर करें
- कौन सा गायू उपयोग करने के लिए (0. प्रथम जीयूयू के लिए)
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 ===
सत्र विकल्प. जोड़ें एक्सपोजर_ CULAN ()
- NNX रन समय बता रहा है जीयू का उपयोग करने के लिए
यदि यह सफल होता है, 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 के लिए बहुत पुराना है.**ठीक करें
- : निक्सिया ड्राइवर को 54.5x या नए.
[1, 1, 28, 28]विस्तृत जाँच: वास्तविक
- : निक्सिया ड्राइवर को 54.5x या नए.
**चलो कुछ वास्तविक - रन एक छोटे से तंत्रिका नेटवर्क को जीयूपी वीस पर करते हैं और गति की तुलना करते हैं.**जाँच मॉडल डाउनलोड करें
- हम एक सरल MNACOT अंक पहचान मॉडल का उपयोग करेंगे (NX प्रारूप में).
इंच जांच कोडअद्यतन
- कोड व्याख्या
डीएसईटी सेंसर-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
- एक इनपुट नाम के लिए एक जुआर
- "3" एमएआईडी मॉडल में इनपुट नाम है
- गरम अप रन
-
- सबसे पहले गंभीरता हमेशा धीमी होती है (छोटा, अनुकूलनशील)
सही माप पाने के लिए समय निकालने से पहले हम एक बार दौड़ जाते हैं
टाइमिंग विधि ✅ Driver installed correctly ✅ CUDA Toolkit accessible ✅ cuDNN integrated ✅ ONNX Runtime finds CUDA ✅ C# can run GPU-accelerated inference
- स्थिर परिणामों के लिए 100 से अधिक औसत
परफ़ॉर्मेंस जाँच चलाएँ
प्रत्याशित आउटपुट
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
तो तुम कह दो कि मेरा परवरदिगार बिल्कुल रेज़ा रेज़ा करके उड़ा डालेगा और ज़मीन को एक चटियल मैदान कर छोड़ेगा:
- **इतनी छोटी रफ्तार क्यों?**एमईआईआईडी छोटा है (सिर्फ 100के मॉडल)
- गापिय डाटा ट्रांसफर का प्रमुख सिरबड़े मॉडलों के लिए (1GB+), आप 10-100x रोल देखेंगे
- कुंजी अगलों को दूर ले जाने की कुंजीहम पूरे स्टैक काम साबित कर चुके हैं:
परफ़ॉर्मेंस को समझना
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
स्मृति ट्रांसफर डायजेस्ट:
- **यहाँ निश्चितता के दौरान क्या होता है:**परफ़ॉर्मेंस सबक
- बैच प्रक्रिया- ढेर सारे इनपुट का ट्रांसफर एक बार में अप अप अप करने के लिए करें
जीयूपी पर डाटा रखें
- - कैंटिन ऑपरेशन से बचने के लिएसबसे बड़े मॉडलों से ज़्यादा फायदा होता है
- - स्थिर ट्रांसफर लागत, स्केलिंग गणनाGPS vs सीपीयू उपयोग करने के लिए
- लघुछवियों का नियमजीपीयू
- बड़ा मॉडल, बैच प्रक्रिया, स्कैनिंग पीढ़ी
सीपीयू
- ✅ Installed NVIDIA driver (545.xx+)
- ✅ Installed CUDA Toolkit 12.1
- ✅ Integrated cuDNN 8.9.7
- ✅ Verified with
nvidia-smi- छोटा मॉडल, एकल निवेदन, लंबी जानकारीnvcc - ✅ Tested GPU access from C# with ONNX Runtime
- ✅ Ran performance comparison (GPU vs CPU)
हमारे ब्लॉग लिखने के सहायक के लिए:
एम्बेडिंग
बैच प्रक्रिया 100+R_पीयूअनंतता- बड़ा मॉडल (7Bamms) :
सदिश खोज
-
- DB विकल्प पर निर्भर करता है, अक्सर सीपीयू सीमा
सारांश
हम सफलता पूर्वक कर रहे हैं:
और
हमारा विकास वातावरण अब एआई कार्य भारों के लिए तैयार है!
अगला क्या है?
में
# 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
पार्ट 3
, हम गहराई से एम्बेडिंग और सदिश डाटाबेस में उड़ा देंगे:
|-------|-------|-----|
| nvidia-smiइसमें क्या - क्या शामिल है और वे किस तरह की खोज में लगे रहते हैं?
| nvccक्यूसेवर, गैलेक्टर तथा अन्य विकल्पों के बीच चुनाव
अनएनएक्स रन समय के साथ स्थानीय बना रहे
लाखों सदिशों को कुशलता से भंडारित किया जा रहा है तथा प्रश्न कर रहा हैMicrosoft.ML.OnnxRuntime.Gpu |
हमारी पहली खोज प्रतिनिधि बनाया जा रहा है
हम अंत में वास्तविक ब्लॉग सामग्री के साथ काम करना शुरू करेंगे और RAG को कार्य में देखना शुरू करेंगे!
चूकते संदर्भ |--------------|---------------|--------------|-----------------| क्विक डायग्नोस्टिक्स कमांड आम मसले DUREVEN त्रुटि
XIV ड्राइवर संस्थापित नहीं हुआ NVIDID ड्राइवर 2004 संस्थापित नहीं हुआ
- आईएयूएओडी पथ में नहीं मिला
- INLLock लोड करने में विफल a baseenin Nain N फ़ाइल को सीयूडी डिरेक्ट्री में गुम हो गया हैUUDLLA प्रदाता गलत एनयूएएस पैकेज उपयोग नहीं मिला
- Libisofs ड्राइवर संस्करण अपर्याप्त पुराना ड्राइवर रहता है 545.x+ रहता हैडर अद्यतन किया जा रहा है
- संस्करण संगतताव्यूGenericName
- INUUN संस्करण 2. 0 in NNIN संस्करण 0. 0 पर Exdi20 घंटे ड्राइवर आवश्यक
- IMIT 12.1 8.9. 797. 16.x 545x.x+6x+6
- INV 12. 27 ("1. 0. 17x46.x46.x+x+x+ El
- 11.888 8.9. 229.15. 520.x+x+6
श्रेणी नेविगेशन
- पार्ट 1: परिचय व गुण
- पार्ट 2: जीपीयू सेटअप सीयूडीडीक में C# में (G)
- (यह पोस्ट)
- भाग ३: सामान्य समझ जो सदिश व डाटाबेस को शामिल करती है
पार्ट ४: १९ - १९.पार्ट 5: विंडोज़ क्लाएंटभाग ६: स्थानीय संयोजन