আপনার যদি মনে হয় আপনার Windows 11 পিসিতে সরাসরি কৃত্রিম বুদ্ধিমত্তা আনুন ক্লাউডের উপর নির্ভর না করে, ONNX রানটাইম এখন ধাঁধার একটি মূল অংশ। এই নির্দেশিকাটি আপনাকে এটি কী, এটি WinML এর সাথে কীভাবে সংহত হয়, আপনাকে কী ইনস্টল করতে হবে এবং .NET (C#, VB.NET) এর পাশাপাশি অন্যান্য ভাষা এবং হার্ডওয়্যার অ্যাক্সিলারেটরের সাথে কীভাবে এটি ব্যবহার করতে পারেন তা বুঝতে সাহায্য করার জন্য ডিজাইন করা হয়েছে।
পুরো লেখা জুড়ে আপনি দেখতে পাবেন প্রযুক্তিগত ব্যাখ্যা, বাস্তব ব্যবহারের উদাহরণ এবং ইনস্টলেশনের বিশদ বিবরণকিন্তু সবই বন্ধুত্বপূর্ণ সুরে। ধারণাটি হল, যখন আপনি পড়া শেষ করবেন, তখন আপনার স্পষ্ট ধারণা থাকবে যে কীভাবে Windows 11-এ এমন একটি অ্যাপ্লিকেশন সেট আপ করতে হয় যা ONNX মডেল লোড করে, দক্ষতার সাথে চালায় (CPU, GPU, অথবা NPU), এবং আধুনিক Windows ইকোসিস্টেমের সাথে ভালভাবে সংহত করে।
ONNX রানটাইম কী এবং কেন এটি Windows 11 এর সাথে এত ভালোভাবে মানানসই?
ONNX রানটাইম একটি ক্রস-প্ল্যাটফর্ম এক্সিকিউশন ইঞ্জিন ONNX (ওপেন নিউরাল নেটওয়ার্ক এক্সচেঞ্জ) ফর্ম্যাটে মেশিন লার্নিং এবং ডিপ লার্নিং মডেল লোড এবং স্কোর করার জন্য ডিজাইন করা হয়েছে। এই ফর্ম্যাটটি একটি ওপেন স্ট্যান্ডার্ড যা আপনাকে PyTorch, TensorFlow, Keras, TFLite, অথবা scikit-learn এর মতো ফ্রেমওয়ার্কে মডেলগুলিকে প্রশিক্ষণ দিতে এবং তারপর প্রায় যেকোনো পরিবেশে কার্যকর করার জন্য ONNX-এ রপ্তানি করতে দেয়।
এই বাস্তুতন্ত্রের মধ্যে, Windows 10 (1809 সংস্করণ থেকে) এবং সমস্ত Windows 11 ইতিমধ্যেই ONNX রানটাইমের একটি সমন্বিত কপি অন্তর্ভুক্ত করেছে। Microsoft.Windows.AI.MachineLearning.dll লাইব্রেরিতে Windows Machine Learning (WinML) এর মাধ্যমে। এই কপিটি DirectML এর মাধ্যমে CPU এবং GPU উভয় ক্ষেত্রেই এক্সিকিউশন অফার করে, যাতে আপনি ড্রাইভার এবং নিম্ন-স্তরের স্তরগুলির সাথে সরাসরি ডিল না করেই GPU এর সুবিধা নিতে পারেন।
ONNX রানটাইম ডিজাইনটি আলাদা কারণ বিভিন্ন "এক্সিকিউশন প্রোভাইডার" (EP) সংযোগ করার অনুমতি দেয়যা উপলব্ধ হার্ডওয়্যারে মডেলের গণনা ম্যাপ করার জন্য দায়ী: CPU, GPU, DirectML, CUDA, TensorRT, এনপিইউFPGA, ইত্যাদি। এটি ONNX রানটাইমকে এক ধরণের বিমূর্ত স্তরে পরিণত করে যা ডেভেলপারের জীবনকে ব্যাপকভাবে সরল করে তোলে।
তদুপরি, সাম্প্রতিক Windows 11 সংস্করণগুলিতে (বিশেষ করে 24H2 সংস্করণ থেকে) WinML ONNX রানটাইমের উপর নির্ভর করে এবং সবচেয়ে উপযুক্ত EP নির্বাচন স্বয়ংক্রিয় করে। ব্যবহারকারীর ডিভাইসের জন্য, উপলব্ধ হার্ডওয়্যারের উপর নির্ভর করে CPU, GPU এবং অন্যান্য অ্যাক্সিলারেটরের মধ্যে স্যুইচ করতে সক্ষম হওয়া, প্রতিবার আপনার সম্পূর্ণ অ্যাপ্লিকেশনটি পুনরায় লেখা ছাড়াই।
ONNX মডেল: তারা কেমন এবং স্থানীয়ভাবে তাদের কী সুবিধা রয়েছে
একটি ONNX ফর্ম্যাট মডেল মূলত, একটি প্রাক-প্রশিক্ষিত নিউরাল নেটওয়ার্ক বা এমএল অ্যালগরিদমের একটি পোর্টেবল উপস্থাপনাফাইলটিতে নেটওয়ার্ক আর্কিটেকচার (স্তর, সংযোগ, ক্রিয়াকলাপের ধরণ), প্রশিক্ষণের সময় শেখা ওজন এবং প্রত্যাশিত ইনপুট এবং আউটপুটগুলির আনুষ্ঠানিক বিবরণ অন্তর্ভুক্ত রয়েছে।
উদাহরণস্বরূপ, একটি চিত্র শ্রেণীবিভাগ মডেল এটি সাধারণত একটি প্রি-প্রসেসড ইমেজ গ্রহণ করে (উদাহরণস্বরূপ, RGB তে 224×224 পিক্সেল) এবং একটি সম্ভাব্যতা ভেক্টর প্রদান করে যেখানে প্রতিটি অবস্থান একটি লেবেলের সাথে যুক্ত থাকে (কুকুর, বিড়াল, নৌকা, ইত্যাদি)। সেই ভেক্টরে প্রতিটি লেবেল যে সূচকটি ধারণ করে তা ক্লাসের একটি তালিকা দ্বারা সংজ্ঞায়িত করা হয় যা আপনি সাধারণত ONNX রিপোজিটরি বা মডেল জুতে মডেলের সাথে পাবেন।
Windows 11-এ ONNX-এর সাথে কাজ করার সবচেয়ে ভালো দিক হল যে আপনি ঐ মডেলগুলি সম্পূর্ণরূপে স্থানীয়ভাবে চালাতে পারেনবহিরাগত সার্ভারে ডেটা পাঠানো ছাড়াই। এর গোপনীয়তা, খরচ এবং বিলম্বের ক্ষেত্রে স্পষ্ট প্রভাব রয়েছে:
- গোপনীয়তা: ছবি, টেক্সট, বা সংবেদনশীল তথ্য কখনই আপনার মেশিন থেকে বের হয় না।
- ব্যয়: অনুমানের জন্য আপনাকে অর্থপ্রদানকারী ক্লাউড পরিষেবার উপর নির্ভর করতে হবে না।
- গতি: আপনি নেটওয়ার্ক ল্যাটেন্সি দূর করেন এবং আপনার CPU, GPU, অথবা NPU-এর আরও ভালো ব্যবহার করেন।
- কন্ট্রোল: কোন মডেলগুলি ব্যবহার করবেন, কখন আপডেট করবেন এবং কীভাবে সেগুলি স্থাপন করবেন তা আপনি সিদ্ধান্ত নিতে পারেন।
উইন্ডোজের নির্দিষ্ট ক্ষেত্রে, WinML এবং ONNX রানটাইম সিস্টেম ইন্টিগ্রেশনকে ব্যাপকভাবে সহজতর করে।আপনি রিয়েল-টাইম ইনফারেন্সের জন্য Windows.Media.VideoFrame (ক্যামেরা থেকে ধারণ করা) এর মতো বস্তুগুলি সরাসরি মডেলটিতে প্রেরণ করতে পারেন, যা ডেস্কটপ কম্পিউটারের দৃষ্টিভঙ্গির জন্য উপযুক্ত।
Windows 11-এ WinML এবং ONNX রানটাইম: কীভাবে তারা একসাথে ফিট করে

উইন্ডোজের মধ্যে, WinML (উইন্ডোজ মেশিন লার্নিং) হল উচ্চ-স্তরের WinRT API এটি ONNX মডেলগুলিতে অনুমান ক্ষমতা প্রদর্শন করে। এটি অপারেটিং সিস্টেমের অংশ হিসাবে বিতরণ করা হয় (উইন্ডোজ 10 1809 থেকে) এবং নির্দিষ্ট সংস্করণের প্রয়োজন এমন অ্যাপ্লিকেশনগুলির জন্য একটি পুনঃবিতরণযোগ্য প্যাকেজ হিসাবেও ইনস্টল করা যেতে পারে।
WinML অভ্যন্তরীণভাবে ONNX রানটাইম ব্যবহার করে, কিন্তু এর লক্ষ্য হল উইন্ডোজ অ্যাপ্লিকেশন ডেভেলপারদের জীবনকে সহজ করা।এটি সিস্টেমের ধরণগুলির (যেমন ভিডিওফ্রেম) সাথে নেটিভ ইন্টিগ্রেশন অফার করে, এক্সিকিউশন প্রোভাইডার নির্বাচন স্বয়ংক্রিয় করে এবং ক্লায়েন্টে AI মডেল চালানোর জন্য প্রয়োজনীয় নির্ভরতাগুলিকে একীভূতভাবে স্থাপন করে।
সাধারণভাবে, Windows 11-এ আপনার আছে ONNX রানটাইমের সাথে ইন্টারঅ্যাক্ট করার দুটি উপায়:
- WinRT (WinML) API ব্যবহার করুন: বিশেষ করে Windows 11 24H2 বা তার উচ্চতর সংস্করণের জন্য সুপারিশ করা হয়, যেখানে WinML EP নির্বাচনকে পরিমার্জন করে এবং বিভিন্ন সিলিকন নির্মাতাদের জন্য ব্যাপক সহায়তা প্রদান করে।
- ONNX রানটাইম C API সরাসরি অথবা এর বাইন্ডিং ব্যবহার করুন (C#, C++, Python, Java, ইত্যাদি), যা আপনাকে DLL-এর কোন সংস্করণ ব্যবহার করবেন এবং প্রতিটি ক্ষেত্রে কোন EP সক্রিয় করবেন তার উপর আরও নিয়ন্ত্রণ দেয়।
যদি আপনার ইতিমধ্যেই নেমস্পেসের বিপরীতে কোড লেখা থাকে উইন্ডোজ.এআই.মেশিনলার্নিংMicrosoft.ML.OnnxRuntime NuGet প্যাকেজ এবং সংশ্লিষ্ট API গুলি ব্যবহার করার জন্য এটি আপডেট করা তুলনামূলকভাবে সহজ: মূলত আপনি উইন্ডোজ নেমস্পেস রেফারেন্সগুলিকে মাইক্রোসফ্টে পরিবর্তন করেন এবং আপনি সমতুল্য প্রকারগুলি সামঞ্জস্য করেন, মূলত একই যুক্তি বজায় রেখে।
Windows 11 এর পূর্ববর্তী সংস্করণগুলিতে এবং Windows 10 (1809+) তে, ONNX রানটাইম একই কাজ করেতবে, আপনাকে মডেল এবং এক্সিকিউশন প্রোভাইডারদের পছন্দ নিজেই পরিচালনা করতে হবে, যেখানে Windows 11-এ 24H2+ WinML আপনাকে সেই জটিলতা থেকে অনেকটাই বাঁচায়।
Windows 11 এবং ইনস্টলেশন ভেরিয়েন্টের পূর্বশর্ত
আরামে কাজ করার জন্য Windows 11 কম্পিউটারে ONNX রানটাইমকিছু মৌলিক সিস্টেম-স্তরের প্রয়োজনীয়তা, উন্নয়ন সরঞ্জাম এবং অতিরিক্ত লাইব্রেরি পর্যালোচনা করা যুক্তিযুক্ত:
- উইন্ডোজ ১১ বা উইন্ডোজ ১০ (১৮০৯+): WinML API এবং ONNX রানটাইমের ইন্টিগ্রেটেড কপি ঐ সংস্করণগুলি থেকে পাওয়া যাবে।
- ভিজ্যুয়াল সি++ ২০১৯ রানটাইম: উইন্ডোজের জন্য ONNX রানটাইমের অফিসিয়াল বিল্ডগুলির জন্য এই রানটাইমটি ইনস্টল করা প্রয়োজন; এটির সর্বশেষ সংস্করণ থাকা বাঞ্ছনীয়।
- ডেভেলপার মোড সক্ষম করা হয়েছে: যদি আপনি স্থানীয়ভাবে UWP অথবা WinUI3 অ্যাপ্লিকেশন স্থাপন এবং ডিবাগ করতে চান, তাহলে Windows সেটিংসে ডেভেলপার মোড সক্ষম করুন।
- ভিজ্যুয়াল স্টুডিও ২০২২ বা তার পরবর্তী সংস্করণ: যদি আপনার লক্ষ্য হয় .NET (C#, VB.NET) দিয়ে ডেস্কটপ অ্যাপ্লিকেশন তৈরি করা, তাহলে ".NET ডেস্কটপ অ্যাপ্লিকেশন ডেভেলপমেন্ট" ওয়ার্কলোড ইনস্টল করুন।
যখন আমরা উইন্ডোজে GPU ত্বরণের কথা বলি, তখন বিবেচনা করার জন্য বেশ কয়েকটি দিক রয়েছে এবং আপনার বেছে নেওয়া ভাষা এবং লেআউটের উপর নির্ভর করে সমন্বয়গুলি পরিবর্তিত হয়।:
- পাইথন প্যাকেজ: আপনি ইনস্টল করতে পারেন
onnxruntime(CPU) অথবা GPU-নির্দিষ্ট প্যাকেজ (CUDA, TensorRT, DirectML), CUDA এবং cuDNN প্রয়োজনীয়তা বিবেচনা করে। GPU প্যাকেজগুলির জন্য, CUDA এবং cuDNN সংস্করণগুলিকে অফিসিয়াল সামঞ্জস্যতা টেবিলের সাথে সারিবদ্ধ করা বাধ্যতামূলক। - সি#/সি/সি++ প্যাকেজ: ONNX রানটাইম CPU, CUDA (11.8 অথবা 12.x) সহ GPU এবং DirectML-ভিত্তিক প্যাকেজগুলির জন্য বিল্ড অফার করে (যদিও DirectML "সাসটেইনেন্ড ইঞ্জিনিয়ারিং" মোডে রয়েছে; নতুন উইন্ডোজ প্রকল্পগুলির জন্য WinML সুপারিশ করা হয়)।
- জাভাস্ক্রিপ্ট এবং মোবাইল: ব্রাউজার (ONNX রানটাইম ওয়েব), Node.js, React Native, iOS এবং Android এর জন্য বিল্ড রয়েছে, যেখানে অপারেটর ছাঁটাই এবং আকার কমানোর জন্য কাস্টম বিল্ড বিকল্প রয়েছে।
NVIDIA GPU সহ পরিবেশে, ONNX রানটাইম GPU প্যাকেজগুলির জন্য সঠিকভাবে কনফিগার করা CUDA এবং cuDNN প্রয়োজন।উইন্ডোজে, ফোল্ডারগুলি bin পরিবেশ ভেরিয়েবলে CUDA এবং cuDNN যোগ করতে হবে। PATHলিনাক্সে, এটি যোগ করা হয় lib64 এবং cuDNN লাইব্রেরিগুলিকে LD_LIBRARY_PATHঅতিরিক্তভাবে, cuDNN এর কিছু সংস্করণের জন্য zlib ইনস্টল করা প্রয়োজন।
.NET প্রকল্পে ONNX রানটাইম এবং WinML ইনস্টল করা হচ্ছে
আপনি যদি Windows 11-এ .NET-এর সাথে কাজ করেন, তাহলে ONNX রানটাইম ইন্টিগ্রেট করার বিভিন্ন উপায় আপনার কাছে আছে, তবে সবচেয়ে সাধারণ দুটি হল ONNX রানটাইম NuGet প্যাকেজগুলি সরাসরি ব্যবহার করুন অথবা উইন্ডোজ এমএল-এ ইন্টিগ্রেটেড কপি সহ WinML-এর উপর নির্ভর করুন।
একটি সাধারণ ডেস্কটপ প্রকল্পে C# এবং WinUI3প্রবাহটি এরকম কিছু দেখাবে:
- ভিজ্যুয়াল স্টুডিওতে তৈরি করুন a প্রকল্প "খালি, প্যাকেজড অ্যাপ্লিকেশন (ডেস্কটপে WinUI 3)" এবং এর নাম দিন, উদাহরণস্বরূপ, ONNXWinUIExample।
- খুলুন NuGet প্যাকেজ ম্যানেজার সেই প্রকল্পের জন্য এবং প্রয়োজনীয় প্যাকেজ যোগ করুন।
একটি দৃশ্যকল্পের জন্য জিপিইউ-ত্বরিত চিত্র শ্রেণীবিভাগ C# থেকে DirectML ব্যবহার করে, আপনি সাধারণত কমপক্ষে নিম্নলিখিতগুলি যোগ করেন:
- মাইক্রোসফট.এমএল.অনক্সরান্টাইম.ডাইরেক্টএমএল: এটি DirectML ব্যবহার করে GPU-ত্বরিত সম্পাদনের জন্য সমর্থন সহ ONNX রানটাইম API গুলিকে প্রকাশ করে।
- সিক্সল্যাবার্স.ইমেজশার্প: এটি মডেলে পাঠানোর আগে ছবি লোড এবং প্রক্রিয়াকরণ, পুনঃস্কেলকরণ এবং স্বাভাবিককরণের জন্য শক্তিশালী সরঞ্জাম সরবরাহ করে।
- SharpDX.DXGI (অথবা অন্যান্য DirectX অ্যাক্সেস): এটি আপনাকে গ্রাফিক্স অ্যাডাপ্টার নির্বাচন করতে এবং DirectML এর সাথে ইন্টিগ্রেশন সমন্বয় করতে দেয়।
প্যাকেজগুলি ইনস্টল হয়ে গেলে, মূল কোড ফাইলে (উদাহরণস্বরূপ MainWindow.xaml.cs) প্রয়োজনীয় ব্যবহারের নির্দেশিকা যোগ করা হয়েছে ইনফারেন্স সেশন, টেনসর এবং ইমেজ প্রসেসিং এর সাথে কাজ করার জন্য। এর সাহায্যে, আপনি আপনার ইনফারেন্স সেশন তৈরি করতে এবং ইনপুট ডেটা প্রস্তুত করতে পারেন।
ব্যবহারিক উদাহরণ: Windows 11-এ WinUI 3 অ্যাপ যা ছবিগুলিকে শ্রেণীবদ্ধ করে

সবচেয়ে দৃষ্টান্তমূলক উদাহরণগুলির মধ্যে একটি হল একটি WinUI 3 অ্যাপ্লিকেশন তৈরি করুন যা আপনাকে একটি ছবি বেছে নিতে এবং এটি একটি ONNX মডেলের বিপরীতে চালাতে দেয়। (উদাহরণস্বরূপ, ResNet50 v2) এবং স্ক্রিনে তাদের আত্মবিশ্বাসের শতাংশ সহ সবচেয়ে সম্ভাব্য লেবেলগুলি প্রদর্শন করুন।
অংশ XAML ইন্টারফেসএকটি খুব সহজ দৃশ্য যথেষ্ট:
- Un ছবি নির্বাচন করার জন্য বোতাম একটি ফাইল ডায়ালগ বক্সের মাধ্যমে।
- একটি নিয়ন্ত্রণ নির্বাচিত ছবিটি প্রদর্শনের জন্য ছবি ব্যবহারকারীর দ্বারা
- Un ভবিষ্যদ্বাণী তালিকাভুক্ত করার জন্য টেক্সটব্লক মডেল দ্বারা ফেরত পাঠানো হয়েছে।
বোতাম হ্যান্ডলার সাধারণত একটি ব্যবহার করে ফাইলওপেনপিকার সাধারণ ইমেজ এক্সটেনশন (.jpg, .jpeg, .png, .gif) অনুমোদন করার জন্য কনফিগার করা হয়েছে, সঠিক উইন্ডো শনাক্তকারী দিয়ে শুরু করা হয়েছে (এর মাধ্যমে InitializeWithWindow.Initialize) যাতে এটি ডেস্কটপ WinUI অ্যাপ্লিকেশনগুলিতে সঠিকভাবে কাজ করে। ব্যবহারকারী একবার ফাইলটি নির্বাচন করলে, এটি লোড হয় BitmapImage এবং চিত্র নিয়ন্ত্রণে বরাদ্দ করা হয়েছে।
তারপর আসে আকর্ষণীয় অংশ: মডেলটি যে ফর্ম্যাটটি আশা করে তার সাথে মানিয়ে নিতে ছবিটিকে প্রিপ্রসেস করুনImageSharp-এর সাহায্যে আপনি ছবিটি 24-বিট RGB ফর্ম্যাটে খুলতে পারেন, এটিকে 224×224 পিক্সেলে আকার দিতে পারেন (যদি মডেলের প্রয়োজন হয়) এবং নির্দিষ্ট উপায় এবং স্ট্যান্ডার্ড ডেভিয়েশন ব্যবহার করে পিক্সেল মানগুলিকে স্বাভাবিক করতে পারেন, যেমন ImageNet-টাইপ শ্রেণীবিভাগে গড় জন্য 255× এবং স্ট্যান্ডার্ড ডেভিয়েশনের জন্য 255×।
DirectML এর মাধ্যমে মডেল আরম্ভ এবং সম্পাদন
GPU অ্যাক্সিলারেশন সহ Windows 11-এ C# থেকে ONNX মডেল চালানোর জন্য, স্বাভাবিক পদ্ধতি হল DirectML এক্সিকিউশন প্রোভাইডার দিয়ে কনফিগার করা একটি InferenceSession তৈরি করুনপূর্বে, আপনি SharpDX.DXGI ব্যবহার করে গ্রাফিক্স অ্যাডাপ্টার তালিকাভুক্ত করতে এবং আপনার পছন্দেরটি বেছে নিতে পারেন, যদিও প্রথম উপলব্ধ অ্যাডাপ্টার দিয়ে শুরু করা বেশি সাধারণ।
এই কনফিগারেশনটি সাধারণত একটি সহায়ক পদ্ধতিতে এনক্যাপসুলেটেড থাকে (উদাহরণস্বরূপ, InitModel সম্পর্কে) যে:
- একটি প্রাথমিক অনুমান অধিবেশন ইতিমধ্যেই বিদ্যমান কিনা তা পরীক্ষা করুন।
- ব্যবহার করা একটি অ্যাডাপ্টার নির্বাচন করতে DXGI Factory1 (অ্যাডাপ্টার1).
- একটি বস্তু তৈরি করুন সেশন অপশন ONNX রানটাইমে, পছন্দসই লগিং স্তর সেট করুন এবং কল করুন
AppendExecutionProvider_DMLডিভাইস শনাক্তকারীর সাথে। - শুরু করুন .onnx ফাইলের দিকে নির্দেশ করে InferenceSession প্রকল্পের অন্তর্ভুক্ত একটি মডেল ফোল্ডারের মধ্যে (উদাহরণস্বরূপ, “model\resnet50-v2-7.onnx”)।
ResNet50 v2 টেমপ্লেটটি অফিসিয়াল ONNX টেমপ্লেট রিপোজিটরি থেকে ONNX ফর্ম্যাটে ডাউনলোড করা যাবে। ডাউনলোড হয়ে গেলে, এটি একটি "মডেল" ফোল্ডারের মধ্যে প্রকল্পের অন্তর্ভুক্ত। এবং ফাইলটি ভিজ্যুয়াল স্টুডিওতে "আউটপুট ডিরেক্টরিতে অনুলিপি করুন - নতুন হলে অনুলিপি করুন" বিকল্পটি দিয়ে কনফিগার করা হয়েছে, যাতে এটি সর্বদা এক্সিকিউটেবলের সাথে উপলব্ধ থাকে।
বোতাম হ্যান্ডলারে, InitModel সাধারণত শুধুমাত্র তখনই আহ্বান করা হয় যদি সেশনটি এখনও শুরু না করা হয়, তাই প্রথম অনুমান এতে একটু বেশি সময় লাগে, এবং পরবর্তীগুলি অনেক দ্রুত হয় কারণ সেশন এবং সংস্থানগুলি ইতিমধ্যেই প্রস্তুত।
টেনসর প্রস্তুতি, অনুমান এবং ফলাফলের পরবর্তী প্রক্রিয়াকরণ
একবার আপনার মেমরিতে স্বাভাবিক চিত্রটি হয়ে গেলে, পরবর্তী ধাপ হল মডেলের প্রত্যাশা অনুযায়ী একটি টেনসরের আকারে ডেটা সংগঠিত করুন।ResNet-এর সাথে শ্রেণীবিভাগের সাধারণ ক্ষেত্রে, ফর্মটি সাধারণত (ব্যাচের আকার ১, তিনটি RGB চ্যানেল, ২২৪×২২৪ পিক্সেল) হয়।
বিরূদ্ধে ঘন টেনসর আপনি একটি বহুমাত্রিক বাফার তৈরি করতে পারেন যা সূচকগুলির সাহায্যে অ্যাক্সেস সহজতর করে। পিক্সেল সারিগুলি অতিক্রম করে (উদাহরণস্বরূপ, ImageSharp এর ProcessPixelRows প্যাটার্নের সাহায্যে), চ্যানেল অনুসারে টেনসরের জন্য স্বাভাবিক মানগুলি নির্ধারিত হয় (R, G, B)।
কপি কমাতে এবং আরও কর্মক্ষমতা পেতে, ONNX রানটাইম অনুমতি দেয় একটি OrtValue তৈরি করুন যা সরাসরি DenseTensor এর পরিচালিত বাফার ব্যবহার করেএটিকে মেমোরিতে (পিন) অ্যাঙ্কর করে যাতে রানটাইম ব্যবহারের সময় আবর্জনা সংগ্রহকারী এটিকে নাড়াতে পারে। এটি ইঞ্জিনের মধ্যে ডেটা প্রতিলিপি হতে বাধা দেয়।
El এন্ট্রির অভিধান এটি তৈরি করা হয় মডেলটি যে নামটি আশা করে (উদাহরণস্বরূপ, "ডেটা") তৈরি করা OrtValue-তে সেই নামটি নির্ধারণ করে। তারপর, একটি কল করা হয় _inferenceSession.Run পছন্দসই বিকল্প এবং আউটপুট নামের তালিকা সহ, ফলস্বরূপ OrtValue এর একটি সংগ্রহ পাওয়া।
অনেক শ্রেণীবিভাগ মডেলে, আউটপুট সহজভাবে হয় লগিটের একটি ভেক্টর যার একটি সফটম্যাক্স প্রয়োজন 0 এবং 1 এর মধ্যে সম্ভাব্যতাতে রূপান্তর করতে। এটি সাধারণত একটি অ্যারেতে ডেটা অনুলিপি করে, প্রয়োগ করে করা হয় exp(x) প্রতিটি মানের জন্য, তাদের একসাথে যোগ করুন এবং প্রতিটি সূচককে সেই যোগফল দিয়ে ভাগ করুন, এইভাবে প্রতি শ্রেণীর স্বাভাবিক সম্ভাব্যতা পাওয়া যাবে।
লেবেল ম্যাপিং, টপ-কে, এবং ব্যবহারকারীর উপস্থাপনা
পাইপলাইনের শেষ ধাপ হল সম্ভাব্যতা ভেক্টরকে এমন কিছুতে রূপান্তর করা যা ব্যবহারকারী সহজেই বুঝতে পারে। আউটপুটে প্রতিটি সূচক একটি শ্রেণীর সাথে মিলে যায় মডেলটিকে যে লেবেল দিয়ে প্রশিক্ষণ দেওয়া হয়েছিল তার তালিকাঅতএব, আপনার টেক্সট স্ট্রিংগুলিতে সূচীর একটি ম্যাপিং থাকা দরকার।
একটি সাধারণ অভ্যাস হল একটি স্ট্যাটিক ক্লাস সংজ্ঞায়িত করা, উদাহরণস্বরূপ LabelMap, যার মধ্যে রয়েছে মডেলের সমস্ত লেবেল সহ স্ট্রিংগুলির একটি অ্যারে প্রশিক্ষণের সময় যে ক্রমে এগুলি ব্যবহার করা হয়েছিল ঠিক সেই ক্রমে। এই তালিকাটি সাধারণত দীর্ঘ (ইমেজনেটের ক্ষেত্রে, হাজার হাজার ক্লাস), তাই এটি সাধারণত অফিসিয়াল নমুনা ফাইল বা রেফারেন্স সংগ্রহস্থল থেকে অনুলিপি করা হয়।
C# কোডে, আপনি দুটি বৈশিষ্ট্য সহ একটি ছোট সহায়ক ক্লাস Prediction তৈরি করতে পারেন: লেবেল (টেক্সট লেবেল) এবং কনফিডেন্স (সম্ভাব্যতার মান)সম্ভাব্যতা ভেক্টর থেকে, একটি Select প্রক্ষেপণ সহ যার মধ্যে সূচক অন্তর্ভুক্ত থাকে, একটি Prediction ক্রম তৈরি করা হয়, যা Confidence দ্বারা অবরোহী ক্রমে সাজানো হয়, এবং উদাহরণস্বরূপ, শীর্ষ 10টি নেওয়া হয়।
এই ফলাফলগুলি ইন্টারফেসের টেক্সটব্লকে একটি পঠনযোগ্য বিন্যাসে পাঠানো হয়, যা "লেবেল: X, আত্মবিশ্বাস: Y" এর মতো কিছু নির্দেশ করে। ব্যবহারকারী দেখতে পান ১০টি সম্ভাব্য শ্রেণীর তালিকা নির্বাচিত ছবির জন্য, যার শতাংশ প্রায় ১ পর্যন্ত যোগ করে (সফটম্যাক্সকে ধন্যবাদ), যা মডেলটি কী সনাক্ত করেছে এবং কোন নিশ্চিততার সাথে তা বোঝা সহজ করে তোলে।
একবার প্রকল্পটি স্থাপন করা হয়ে গেলে এবং অ্যাপটি চালু হয়ে গেলে, কেবল বোতামটি টিপুন। ছবি নির্বাচন করুনডিস্কে একটি ছবি খুঁজে বের করুন এবং যদি এটি প্রথমবার হয় তবে অ্যাপ্লিকেশনটিকে মডেলটি শুরু করতে দিন। অনুমানের পরে, ভবিষ্যদ্বাণীগুলির সাজানো তালিকা প্রদর্শিত হবে, যা আপনাকে দ্রুত বিভিন্ন ছবি পরীক্ষা করে দেখতে দেবে যে মডেলটি কীভাবে প্রতিক্রিয়া দেখায়।
Windows 11-এ অন্যান্য ভাষার ONNX রানটাইম ব্যবহার করা
C# এবং WinUI ছাড়াও, ONNX রানটাইম অন্যান্য অপারেটিং সিস্টেমের মতো প্রায় একইভাবে ব্যবহার করা যেতে পারে। যখন আপনি Windows 11 এ Python, C++ অথবা এমনকি JavaScript দিয়ে কাজ করেন।
পাইথনে, যদি আপনি উইন্ডোজ এমএল এর মাধ্যমে এমবেডেড সংস্করণটি ইনস্টল করেন, মডিউলটি যথারীতি আমদানি করা হচ্ছে বিরূদ্ধে import onnxruntime as ortঠিক যেমন WinML ইকোসিস্টেমের বাইরে ONNX রানটাইমের জেনেরিক সংস্করণ নিয়ে কাজ করা হয়। ইনফারেন্স সেশন তৈরি করা, ফিড এবং ফেচ পরিচালনা করা এবং মডেল মেটাডেটা অনুসন্ধান করা, সবকিছুই স্ট্যান্ডার্ড ডকুমেন্টেশনে পাওয়া একই API অনুসরণ করে।
C++ এবং C-তে, দৃশ্যপটের উপর নির্ভর করে অফিসিয়াল বিল্ডের সাথে বিতরণ করা হেডার এবং লাইব্রেরি বা Windows ML-এ ইন্টিগ্রেটেড ব্যবহার করা হয়। উভয় ক্ষেত্রেই, সেশন তৈরি, মডেল লোড, এক্সিকিউশন প্রোভাইডার সেট করা এবং ইনফারেন্স চালানোর ফাংশন এগুলোই সেইসব যা ইতিমধ্যেই অফিসিয়াল ONNX রানটাইম ওয়েবসাইটে নথিভুক্ত, তাই Linux বা macOS এর জন্য আপনি যা শিখেছেন তা বেশ ভালোভাবে স্থানান্তরিত হয়।
এর জন্য সমর্থনও রয়েছে জাভাস্ক্রিপ্ট (ওয়েব এবং নোড.জেএস), রিঅ্যাক্ট নেটিভ এবং মোবাইল প্ল্যাটফর্মএই পরিবেশে, ONNX রানটাইম ওয়েব বিল্ড বা অ্যান্ড্রয়েড/আইওএস প্যাকেজগুলি ডিভাইসে অনুমান সম্পাদন করার অনুমতি দেয়, কাস্টম বিল্ড তৈরি করার বিকল্প সহ যা শুধুমাত্র আপনার মডেলের জন্য প্রয়োজনীয় অপারেটরগুলিকে অন্তর্ভুক্ত করে, ফলে ডাউনলোডের আকার এবং রিসোর্স খরচ হ্রাস পায়।
উন্নত পরিস্থিতি: একাধিক সংস্করণ, পৃথক প্রক্রিয়া এবং প্রশিক্ষণ
নির্দিষ্ট উৎপাদন পরিস্থিতিতে আপনার প্রয়োজন হতে পারে একই সময়ে ONNX রানটাইমের একাধিক সংস্করণ ব্যবহার করুনএটি ঘটতে পারে যদি আপনার অ্যাপ্লিকেশনটি তৃতীয় পক্ষের প্লাগইন লোড করে যা রানটাইমের নিজস্ব সংস্করণ নিয়ে আসে, অথবা যখন নির্দিষ্ট মডেলগুলি একটি নির্দিষ্ট বিল্ডের উপর নির্ভর করে (উদাহরণস্বরূপ, একটি এক্সিকিউশন প্রদানকারীর সাথে সামঞ্জস্যের জন্য)।
উইন্ডোজে, একটি ব্যবহারিক সমাধান হল একটি পৃথক প্রক্রিয়ায় Windows ML চালান এবং সেই সহায়ক অ্যাপ্লিকেশনের সাথে যোগাযোগ করুন। একটি সাধারণ প্যাটার্নের মধ্যে একটি ছোট এক্সিকিউটেবল কনসোল কম্পাইল করা হয় যা একটি মডেল লোড করে (উদাহরণস্বরূপ, স্কুইজনেট), একটি চিত্রের পথকে একটি প্যারামিটার হিসাবে গ্রহণ করে এবং স্ট্যান্ডার্ড আউটপুটের মাধ্যমে বিষয়বস্তুর (লেবেল এবং সম্ভাব্যতা) ব্যাখ্যা প্রদান করে।
আপনার মূল আবেদনটি তখন System.Diagnostics.Process দিয়ে সেই প্রক্রিয়াটি চালু করুন, উপযুক্ত আর্গুমেন্ট তৈরি করুন, স্ট্যান্ডার্ড আউটপুট পুনঃনির্দেশ করুন এবং চাইল্ড প্রসেস দ্বারা নির্গত লাইনগুলিকে পার্স করুন, উভয় প্রসঙ্গের মধ্যে সরাসরি ONNX রানটাইম DLL ভাগ করার প্রয়োজন ছাড়াই।
এই পদ্ধতিটি বিশেষ করে ভালো কাজ করে যেখানে আপনাকে শুধুমাত্র টেক্সট ইনপুট এবং আউটপুট দিয়ে নির্দিষ্ট অনুমান করতে হবেআরও জটিল ক্ষেত্রে—স্থায়ী AI প্রক্রিয়া অথবা বাইনারি বা স্ট্রাকচার্ড ডেটা টাইপের আদান-প্রদান—উইন্ডোজ আন্তঃ-প্রক্রিয়া যোগাযোগ ব্যবস্থার (পাইপ, সকেট, অ্যাপসার্ভিস, ইত্যাদি) একটি ব্যাটারি অফার করে যা আপনি আপনার ডিজাইন করা আর্কিটেকচারের উপর নির্ভর করে ONNX রানটাইমের সাথে একত্রিত করতে পারেন।
অন্যদিকে, ONNX রানটাইমে আরও অন্তর্ভুক্ত রয়েছে অপ্টিমাইজড প্রশিক্ষণ ক্ষমতা এবং ডিভাইসে প্রশিক্ষণ (ডিভাইস-অন প্রশিক্ষণ)। এই পরিস্থিতিতে, নির্দিষ্ট ইনস্টলেশন টেবিল, নির্দিষ্ট CUDA সংস্করণের সাথে সংযুক্ত সংস্করণ এবং প্যাকেজ যেমন torch-ort y onnxruntime-trainingবড় মডেল এবং উন্নত প্রশিক্ষণ কর্মপ্রবাহের জন্য ডিজাইন করা হয়েছে, যদিও Windows 11-এর বেশিরভাগ ডেস্কটপ অ্যাপ্লিকেশনে অনুমান অংশটিই যথেষ্ট হবে।
এই সম্পূর্ণ ইকোসিস্টেমের সাথে, Windows 11 স্থানীয়ভাবে AI চালানোর জন্য একটি অত্যন্ত শক্তিশালী প্ল্যাটফর্ম হয়ে ওঠে: আপনার সিস্টেমে WinML, NuGet প্যাকেজ এবং কার্যত সমস্ত সাধারণ ভাষার জন্য বিতরণের মাধ্যমে ONNX রানটাইম এমবেড করা আছে, DirectML বা CUDA এর মাধ্যমে GPU ইন্টিগ্রেশন, যেকোনো আধুনিক মেশিনে CPU সমর্থন এবং আকার কমাতে বা নির্দিষ্ট হার্ডওয়্যারের সাথে খাপ খাইয়ে নিতে বিল্ডগুলি কাস্টমাইজ করার ক্ষমতা রয়েছে। এই উপাদানগুলি এবং কীভাবে তারা একসাথে ফিট করে সে সম্পর্কে একটি দৃঢ় ধারণা আপনাকে এমন অ্যাপ্লিকেশন তৈরি করতে দেয় যা ব্যবহারকারীর পিসিতে উপলব্ধ ত্বরণের পূর্ণ সুবিধা নেয়, একই সাথে বজায় রাখে। ডেটার উপর সম্পূর্ণ নিয়ন্ত্রণ এবং বাইরের পরিষেবার উপর নির্ভর না করেই।