Cypha · v2.4.0

একটি AI স্থাপত্য, গড়া মৌলিক নীতি থেকে, কোনো ফর্ক থেকে নয়

আধুনিক প্রায় সব কৃত্রিম বুদ্ধিমত্তাই (AI) একই গুটিকয়েক নকশার হেরফের। Cypha শুরু করে অন্য জায়গা থেকে: একটিমাত্র C++ টাইপ, যার শিখনের নিয়ম ধার করা নয়, গণিত থেকে বের করা, আর যা একবার প্রশিক্ষণ নিয়ে জমে যাওয়ার বদলে দেখা প্রতিটি উদাহরণেই নিজেকে হালনাগাদ করে। এটি একটি গবেষণা প্রকল্প, আর ফলাফলের পাশে ব্যর্থতাগুলিও প্রকাশ করা হয়।

ভাষাC++
রিলিজv2.4.0
WikiText-2, প্রতি অক্ষরে বিট (BPC)২.৬৬৪ BPC
সর্বশেষ পুশসম্প্রতি
চারটি ধারা, একটিই শিখন নিয়ম
  • AIXI / Solomonoff — ন্যূনতম বর্ণনা-দৈর্ঘ্যের (MDL) পূর্বধারণা ঠিক করে মডেল সস্তায় কী কী বিশ্বাস করতে পারবে।
  • তথ্য জ্যামিতি — হালনাগাদ চলে প্রাকৃতিক গ্রেডিয়েন্ট ধরে, তাই শিখন প্যারামিটার-স্থানের বক্রতাকে মেনে চলে।
  • সক্রিয় অনুমান / মুক্ত শক্তি — কাঠামোটাকে ভেঙে দেয় পূর্বধারণা, ডিফারেনশিয়াল ও প্রেক্ষাপটে।
  • তথ্য-সংকীর্ণতা — এনকোডারের লক্ষ্য ঠিক করে দেয়: যা পূর্বাভাস দেয় তা রাখো, বাকিটা ফেলে দাও।
সহজ কথায়

এটি কী, এক মিনিটে

সমস্যা

ব্যবহারে থাকা প্রায় প্রতিটি AI ব্যবস্থাই গুটিকয়েক নকশার হেরফের। এগুলিকে একবার বড় যন্ত্রে প্রশিক্ষণ দিয়ে জমাট অবস্থায় পাঠানো হয়, তাই যা বদলাতে থাকে — নতুন ধরনের জালিয়াতি, নতুন ত্রুটি — তার সঙ্গে তাল মেলাতে হলে ফিরে গিয়ে আবার প্রশিক্ষণ দিতে হয়। এগুলি আবার বড়, তাই বসে যন্ত্রের গায়ে নয়, ডেটা সেন্টারে, আর একটিমাত্র সিদ্ধান্ত ব্যাখ্যা করাও কঠিন হয়ে পড়ে।

সমাধান

Cypha একটিমাত্র C++ টাইপ, যা শ্রেণিবদ্ধ করে, সংখ্যার পূর্বাভাস দেয় আর সিকোয়েন্স তৈরি করে। এর শিখনের নিয়ম প্রচলিত কোনো স্থাপত্য থেকে নকল করা নয়, গণিতের চারটি শাখা থেকে বের করা, আর এটি দেখা প্রতিটি উদাহরণেই হালনাগাদ হয় — কোনো ব্যাচ নয়, এপক নয়, আবার প্রশিক্ষণের দৌড় নয়। যে হার্ডওয়্যার ডেটা জোগাড় করে তার উপরেই চলার মতো ছোট।

কাদের জন্য

আজকের দিনে, ভিন্ন নকশা পরখ করতে রাজি গবেষক ও প্রকৌশলীরা। যেসব সমস্যার দিকে এটি তাক করা, সেখানে ডেটা বদলাতেই থাকে — জালিয়াতি, যন্ত্রের ত্রুটি, বদলে যাওয়া আচরণ — মডেলটিকে ডেটা সেন্টারে নয়, যন্ত্রের গায়েই বসতে হয়, আর পরে কাউকে না কাউকে সিদ্ধান্তটা ব্যাখ্যা করতে হয়।

গবেষণা হিসেবেই একে বিচার করুন। নিচের সংখ্যাগুলি এসেছে রিপোজিটরির নিজের বেঞ্চমার্ক চালনা থেকে, লিডারবোর্ডের অবস্থান নয়, সংরক্ষিত পরীক্ষার ফিক্সচারের বিপরীতে যাচাই করা। যে অংশের শিরোনাম Cypha যা নয় , সেটি সীমাগুলি খুলে বলে — সেই আদর্শ পরীক্ষাটিসহ, যেখানে একটি নির্দিষ্ট অংশ চালু না করা পর্যন্ত এটি এলোমেলো আন্দাজের কাছাকাছি পড়ে থাকে। এই পাতার বাকিটা স্থাপত্য আর মাপজোখ।
লাইব্রেরিটি নিজেই

র‍্যান্ডম ফিচার, বর্ণনা নয়, মেপে দেখা

র‍্যান্ডম ফুরিয়ে ফিচার (RFF) নিয়ে Cypha-র যুক্তি হলো, এগুলি একটি রৈখিক হেডকে এমন কিছু আলাদা করতে দেয় যা রৈখিক হেড পারে না। এটি মাপা যায় এমন দাবি, তাই এখানে সেটাই মাপা হচ্ছে — সঙ্গে cypha::rff_features WebAssembly-তে কম্পাইল করে, JavaScript-এ নতুন করে বলে নয়।

cypha::rff_features — WebAssembly

লোড হয়নি

হুবহু রেডিয়াল বেসিস ফাংশন (RBF) কার্নেল n সংখ্যক নমুনা বিন্দুর উপরে, আর তাতে পাওয়া যায় একটি ম্যাট্রিক্স K। র‍্যান্ডম ফিচার তার একটি আসন্ন মান পুনর্গঠন করে K̂। যা আঁকা হয়েছে তা হলো ‖K − K̂‖F ফিচারের সংখ্যা বাড়ার সঙ্গে সঙ্গে: যত বেশি ফিচার, তত কাছাকাছি আসন্ন মান।

লাইব্রেরি
—
এটি কম্পাইল করতে গিয়ে একটি বাগ ধরা পড়ল। অর্থোগোনাল র‍্যান্ডম ফিচার (ORF) — ঘন রূপটি — প্রতিটি সারিকে একক দৈর্ঘ্যে স্বাভাবিক করছিল, অথচ Yu et al. সারির নর্ম নেন chi_d থেকে, যাতে একটি অর্থোগোনাল সারি যে গাউসীয় সারির জায়গা নিচ্ছে তার সঙ্গে মেলে। সারিগুলি √d গুণ বেশি ছোট ছিল, তাই ফিচারগুলি ভুল কার্নেলের কাছাকাছি যাচ্ছিল আর ভুলের মাত্রা অভিসারী না হয়ে থমকে যাচ্ছিল। এক লাইন। এখন তিনটির মধ্যে এটিই সবচেয়ে ভালো।
ইচ্ছে করেই একক-থ্রেড: থ্রেডযুক্ত WebAssembly-র দরকার SharedArrayBuffer, যার দরকার Cross-Origin-Opener-Policy (COOP) ও Cross-Origin-Embedder-Policy (COEP) হেডার, যা GitHub Pages পাঠাতে পারে না।
স্থাপত্য

সাতটি স্তর, প্রতিটি একটি করে কাজ করে

নিচের প্রতিটি অংশ আছে কারণ ওই চারটি ধারার কোনো একটি সেটিকে দাবি করে — ওই ত্রৈমাসিকের কোনো গবেষণাপত্রে ছিল বলে নয়।

ক্রম অনুযায়ী Cypha পাইপলাইন: এনকোডার, প্রজেকশন, ওয়ার্ল্ড প্রায়র, ক্লাস ডিফারেনশিয়াল, মেমরি ও স্তরভিত্তিক প্রেক্ষাপট, যা তৈরি করে আত্মবিশ্বাসসহ একটি শ্রেণি, অস্বাভাবিকতার স্কোর ও একটি out-of-distribution পতাকা
পুরো চিত্রটি দেখতে স্ক্রল করুন →
একটিই টাইপ, চারটি কাজ। এই পাতার নিচের দিকের প্রদর্শনীটি ঠিক এই পাইপলাইনই, দুই মাত্রায় — ওয়ার্ল্ড প্রায়র হলো ড্যাশ দেওয়া উপবৃত্ত, ডিফারেনশিয়ালগুলি হলো দণ্ডগুলি।
এনকোডার

বদলে নেওয়া যায় এমন সামনের অংশ

কাঁচা ইনপুট থেকে ফিচার ভেক্টর। সঙ্গে আসে VectorEncoder, RFFEncoder (র‍্যান্ডম ফুরিয়ে ফিচার) ও ConcatEncoder। পরের ধাপের কিছু না ছুঁয়েই এটি বদলে নেওয়া যায়।

প্রজেকশন

EncoderProjection

Fisher–Rao কনট্রাস্টিভ হালনাগাদের মাধ্যমে ফিচারকে সুপ্ত স্থানে নিয়ে যায়, সঙ্গে Frobenius-নর্মে সীমা বেঁধে দেওয়া, যাতে একটিমাত্র বিচ্যুত বিন্দু জ্যামিতিটাকে উড়িয়ে দিতে না পারে।

θ₀

WorldPrior

একটি ভাগ করা কর্ণ গাউসীয় বণ্টন, Welford আর সূচকীয় চলমান গড়ের (EMA) হালনাগাদ দিয়ে অনলাইনে বসানো। এটিই সেই “অসীম প্রেক্ষাপট” যা কখনও ভোলে না — আর যার নড়াচড়াই ড্রিফট সংকেত।

Δₖ

ClassDifferential

শ্রেণিভিত্তিক প্রাকৃতিক-প্যারামিটারের সরণ, যা পর্যবেক্ষণের দিকে টানে আর MDL ক্ষয় তাকে ফিরিয়ে আনে। একটি শ্রেণি হলো জগৎ থেকে একটি সরণ, আলাদা কোনো মডেল নয়।

মেমরি

DIFMemory

সাধারণীকৃত হাইপারবোলিক পোস্টেরিয়রের অধীনে লগ-সম্ভাবনার অনুপাত হিসাব করে, সঙ্গে Bessel-অনুপাতের লুকআপ টেবিল, যাতে ভারী লেজের জন্য প্রতি নমুনায় একটি ট্রান্সেনডেন্টাল ফাংশনের খরচ না লাগে।

প্রেক্ষাপট

TieredContextBuffer

NIGField-এর আত্মবিশ্বাস দিয়ে ওজন করা ছোট, মাঝারি ও দীর্ঘ স্তর, যাতে সাম্প্রতিক প্রমাণ প্রাধান্য পেতে পারে, অথচ দীর্ঘ স্তর যা প্রতিষ্ঠা করেছে তা মুছে না যায়।

শ্রেণিবিভাগ, গোড়া থেকে শেষ পর্যন্ত: এনকোড → প্রজেক্ট → ওয়ার্ল্ড প্রায়রের বিপরীতে প্রতিটি শ্রেণির লগ-সম্ভাবনার অনুপাত হিসাব → সর্বোচ্চটি ফেরত, সঙ্গে একটি আত্মবিশ্বাস, একটি অস্বাভাবিকতার স্কোর ও একটি out-of-distribution পতাকা। নিচের প্রদর্শনীটি ঠিক ওই পাইপলাইনই, ছোট করে।
ইন্টারঅ্যাক্টিভ

ক্লিক করে একটি ক্লাসিফায়ার প্রশিক্ষণ দিন

Cypha পাইপলাইনের একটি বিশ্বস্ত দ্বিমাত্রিক ছোট সংস্করণ: অনলাইনে বসানো একটি ওয়ার্ল্ড প্রায়র, আপনি যা রাখেন তার দিকে টানা শ্রেণিভিত্তিক ডিফারেনশিয়াল, আর লগ-সম্ভাবনার অনুপাত দিয়ে শ্রেণিবিভাগ। প্রতিটি ক্লিক থেকেই এটি শেখে — কোনো ব্যাচ নেই, কোনো এপক নেই, নতুন করে শুরু নেই।

cypha::Cypha — অনলাইন ক্লাসিফায়ার

নির্বাচিত শ্রেণির একটি নমুনা যোগ করতে ক্যানভাসে ক্লিক করুন। একটি গুচ্ছ আঁকতে টেনে নিন।

কোন শ্রেণি বসাবেন

একটি ডেটাসেট লোড করুন

নমুনা
0
শুদ্ধতা
—
সর্বোচ্চ LLR
—
প্রায়র ড্রিফট
0.00

শেষ ইনফারেন্স

নিষ্ক্রিয়
কোনো বিন্দুতে প্রশিক্ষণ না দিয়েই তার শ্রেণি দেখতে ক্যানভাসে মাউস রাখুন।

ক্লাস ডিফারেনশিয়াল Δₖ

এই পাতার জন্য লেখা একটি দ্বিমাত্রিক শিক্ষামূলক বাস্তবায়ন — আসল পাইপলাইনের মতোই গঠন, তার আকারের কিছুই নয়। C++ বাস্তবায়নটি আছে native/.
RFF এনকোডার বন্ধ রেখে এক্সক্লুসিভ অর (XOR) চালিয়ে দেখুন। শুদ্ধতা নেমে এলোমেলো আন্দাজের কাছে চলে যায়, আর এটি এই প্রদর্শনীর কোনো বাগ নয় — এটি একটি রৈখিক লগ-সম্ভাবনার অনুপাতের নথিভুক্ত সীমাবদ্ধতা, Cypha README-তে সোজাসুজি লেখা। সুপ্ত RFF এনকোডার চালু করে দেখুন কীভাবে তা ফিরে আসে। সারাইয়ের পাশেই ব্যর্থতার ধরনটি প্রকাশ করাই তো আসল কথা।
মাপা হয়েছে

ফলাফল, সঙ্গে যে তুলনাটা আসল

রোগনির্ণয়ের সারাইয়ের পরে রিপোজিটরির নিজের বেঞ্চমার্ক চালনা থেকে পাওয়া সংখ্যা। শুদ্ধতার প্রমাণ হলো সংরক্ষিত ফিক্সচার মানের সঙ্গে মিলে যাওয়া একটি CTest ম্যাট্রিক্স — লিডারবোর্ডের অবস্থান নয়।

সারণির সংক্ষেপ: স্টোক্যাস্টিক গ্রেডিয়েন্ট ডিসেন্ট (SGD), লং শর্ট-টার্ম মেমরি (LSTM), সময়ের মধ্য দিয়ে ব্যাকপ্রোপাগেশন (BPTT)।

ডেটাসেটকাজCyphaঅনলাইন SGDমন্তব্য
রৈখিকভাবে আলাদা করা যায়২-শ্রেণি0.7830.644একই অনলাইন বাজেট
Iris৩-শ্রেণি0.900—চিরায়ত ভিত্তি-সেট
Wine৩-শ্রেণি0.969— 
Digits১০-শ্রেণি0.922— 
Breast cancer২-শ্রেণি0.957— 
WikiText-2সিকোয়েন্স, ৩ লাখ টোকেন২.৬৬৪ BPC—হাইব্রিড GRIA+LSTM L2+Wave2 BPTT
XOR২-শ্রেণি, সুপ্ত RFF~0.763—শুধু রৈখিক LLR এলোমেলো আন্দাজের কাছেই আটকে যায়
উৎপাদন

তাপমাত্রা-মাপা, ক্ষেত্র-শর্তাধীন, সুপ্ত-সীমানায় ইন্টারপোলেশন, প্রতিদ্বন্দ্বী (এনট্রপি-সর্বোচ্চকারী), OOD নমুনায়ন, MDL-সীমিত, পূর্বপুরুষভিত্তিক, আর রিপ্লে বাফার থেকে KDE নমুনায়ন।

অস্বাভাবিকতা ও সক্রিয় শিখন

গেটের মান থেকে অস্বাভাবিকতার স্কোর, এনট্রপি × সীমানার নৈকট্য হিসেবে সক্রিয়-প্রশ্নের স্কোর, আর ওয়ার্ল্ড প্রায়রের নড়াচড়া থেকে সরাসরি পড়া ড্রিফট শনাক্তকরণ।

রিপ্লে

১০,০০০ ধারণক্ষমতার একটি অগ্রাধিকার বাফার, সাম্প্রতিকতা ও বিস্ময় দিয়ে ওজন করা, ০.৩০ অনুপাতে আবার চালানো হয় — যাতে বিরল, তথ্যবহুল নমুনাটি সাধারণটির নিচে চাপা না পড়ে।

রেফারেন্স পূর্বনির্ধারিত মান

প্রোফাইল করে পাওয়া, আন্দাজ করা নয়

এগুলি এসেছে একটি প্রোফাইল করা মাঝারি-গ্রিড অপ্টিমাইজেশন থেকে, আর রেফারেন্স কনফিগারেশন হিসেবেই আসে।

ফিচার মাত্রা128
RFF বাজেট256
রিপ্লে অনুপাত0.30
প্রেক্ষাপট জানালা32
ওয়ার্ল্ড প্রায়র LR0.008
ক্লাস ডিফ LR0.05
এনকোডার LR0.002
MDL ল্যাম্বডা0.001
সৎ কথা

Cypha যা নয়

  • কোনো র‍্যাপার নয়। মৌলিক নীতি থেকে নিজের মতো গড়া — যার মানে আবার এই যে, এটি অন্য কারও টিউনিং উত্তরাধিকারসূত্রে পায় না।
  • রৈখিক LLR-এর একটা ছাদ আছে। সুপ্ত RFF এনকোডার ছাড়া XOR এলোমেলো আন্দাজের কাছাকাছি পড়ে থাকে; এনকোডারটি তাকে প্রায় ৭৬.৩% পর্যন্ত তোলে।
  • যাচাই হয় মিল দেখে। সংরক্ষিত ফিক্সচার মানের বিপরীতে CTest। লিডারবোর্ড নিয়ে কোনো দাবি করা হয় না।
  • CUDA কেবল ইনফারেন্সের জন্য। প্রশিক্ষণ কেন্দ্রীয় প্রক্রিয়াকরণ ইউনিটেই (CPU) থাকে, কারণ এই স্থাপত্যে CPU-ই দ্রুততর।
  • তত্ত্ব থাকে অন্যত্র। হারমোনিক-স্পেকট্রাম ও NMP-র কাজ একটি আলাদা কম্প্রেশন-অ্যালগরিদম গবেষণাপত্রের বিষয়; Cypha হলো বাস্তবায়নের স্তর।
পণ্যের প্রদর্শনী

Cypha, একটি সত্যিকারের দাবা ইঞ্জিন থেকে ডিস্টিল করা

২৬,৫৬৮টি অবস্থান, যেগুলিতে একটি প্রচলিত আলফা-বিটা ইঞ্জিনের নিজের অনুসন্ধান-মূল্যায়ন দিয়ে লেবেল দেওয়া, আর সেগুলিতে বসানো হয়েছে স্থাপত্যের বাকি সব জায়গায় ব্যবহৃত সেই একই WorldPrior হোয়াইটেনিং ও প্রাকৃতিক-গ্রেডিয়েন্ট হালনাগাদ। আলাদা করে রাখা অবস্থানগুলিতে এটি শিক্ষকের মূল্যায়ন ফিরিয়ে আনে R² ০.৮৬৬ মাত্রায়, আর সমান অনুসন্ধান গভীরতায় ওই শিক্ষকের বিপরীতে ফল দাঁড়ায় ৫ জয়–১৯ হার–৬ ড্র।

কাদের জন্য

একটি ছোট AI, যা শিখতেই থাকে

বেশিরভাগ AI একবার ডেটা সেন্টারে প্রশিক্ষণ পায়, তারপর জমে যাওয়া অবস্থায় পাঠানো হয়। Cypha যথেষ্ট ছোট যে সাধারণ হার্ডওয়্যারেই চলে, আর যত নতুন উদাহরণ দেখে তার প্রতিটি থেকেই শিখতে থাকে।

01

বড় AI ধরে না এমন ছোট যন্ত্র

সেন্সর, ক্যামেরা, কন্ট্রোলার আর এমন হার্ডওয়্যার যার পিছনে একটা ডেটা সেন্টার রাখার জায়গা নেই। Cypha যথেষ্ট ছোট যে যন্ত্রের ভিতরেই চলে, তাই কিছুই বাড়ির বাইরে যেতে হয় না।

02

যা কিছুকে বদলের সঙ্গে তাল মিলিয়ে চলতে হয়

জালিয়াতির ধরন, যন্ত্রের গোলমাল, ক্রেতার বদলে যাওয়া আচরণ। গত বছর প্রশিক্ষণ পাওয়া মডেল এখনই পুরনো। এটি চলতে চলতেই হালনাগাদ হয়, অফলাইনে নামিয়ে আবার প্রশিক্ষণ না দিয়েই।

03

যে কাজের পরে কৈফিয়ত দিতে হয়

ব্যাংক, বিমা আর স্বাস্থ্যসেবাকে প্রায়ই একটি সিদ্ধান্তের যুক্তি দেখাতে হয়। Cypha যথেষ্ট ছোট যে খুঁটিয়ে দেখা যায়, আর সে কোন জায়গায় খারাপ তা লুকিয়ে না রেখে প্রকাশ করে।

নিজের অবস্থাটা এখানে চিনতে পারছেন? এটি এখনই বেটা পরীক্ষার জন্য খোলা, আর যাদের জন্য এটি বানানো তাদের মতামতই একে সত্যিই বদলায়। বেটা টেস্টার হোন →
বিল্ড করুন

তিনটি কমান্ড

$ cmake -S native -B /tmp/cypha_build -DCMAKE_BUILD_TYPE=Release -G Ninja
$ cmake --build /tmp/cypha_build --parallel
$ ctest --test-dir /tmp/cypha_build -R native_ --output-on-failure

# REST service
$ cypha_rest --listen 127.0.0.1:8099 --cypha fixtures/reference.cypha
# Qt shell (build with -DCYPHA_BUILD_QT=ON)
$ cypha_qt_shell
লাইসেন্সিং শর্ত