FHE গেমটি পরিবর্তন করছে, এবং আমরা সবাই খেলতে আমন্ত্রিত।
আমি যে বিষয়ে কথা বলছি সে সম্পর্কে আপনার যদি কোনো ধারণা না থাকে, তাহলে এর মানে হল আপনি ইদানীং একটি পাথরের নিচে বসবাস করছেন। FHE.org এর কিছু বিস্তৃত সংস্থান ব্রাউজ করুন এবং ফিরে আসুন।
প্রযুক্তি জগতের কাছে FHE-এর প্রতিশ্রুতি দেওয়ার জন্য, এটিকে অবশ্যই উন্নয়ন, সংকলন এবং রানটাইম সম্পাদনের জন্য একটি নতুন প্রজন্মের শিল্প-শক্তির সরঞ্জামের সাথে আসতে হবে, যেটি যে কেউ সহজেই হোমোমরফিক অ্যাপ তৈরি করতে ব্যবহার করতে পারে।
যদিও বর্তমানে, এফএইচই স্পেসে অনেক বিশেষজ্ঞ এবং কোম্পানি এখনও তাদের বেশিরভাগ সময় এবং প্রচেষ্টাকে এফএইচই-এর পিছনে ক্রিপ্টোগ্রাফি উন্নত করার জন্য বিনিয়োগ করে, অ-বিশেষজ্ঞদের জন্য দুর্দান্ত ডেভ টুল তৈরিতে মনোযোগ দেওয়ার পরিবর্তে। আমাকে এখানে ভাল করে শুনুন: মূল FHE কার্যকারিতা এবং কর্মক্ষমতা বাড়ানো সবসময়ই ভাল খবর হতে চলেছে। কিন্তু জিনিসের মহান পরিকল্পনায়, এই ক্রমবর্ধমান উন্নতিগুলি সর্বোত্তমভাবে বিশ্বব্যাপী গ্রহণকে উন্নীত করে। তারা কিছু সময়ে দত্তক গ্রহণের উপর প্রভাব ফেলবে, কিন্তু এখনই নয়।
আমি যেখান থেকে দাঁড়িয়েছি, সেখান থেকে এটা স্পষ্ট যে প্রযুক্তি জগতের আজ শক্তিশালী, বিকাশকারী-বান্ধব FHE টুলচেইনের প্রয়োজন, যাতে FHE-চালিত সাফল্যের গল্পগুলি আনলক করা শুরু করা যায় এবং FHE-কে প্রযুক্তিগত প্রবণতা থেকে ডিজিটাল নিরাপত্তা ব্যবসায় একটি বাস্তব দৃষ্টান্ত পরিবর্তনে নিয়ে যায়। আমি বিশ্বাস করি যে FHE সম্বন্ধে জ্ঞানের বর্তমান অবস্থা - বৈজ্ঞানিক এবং প্রযুক্তিগতভাবে উভয়ই - বর্তমান সময়ে এই ধরনের সরঞ্জামগুলি তৈরি করতে এবং সেগুলিকে আর দেরি না করে প্রযুক্তি-বুদ্ধিমান জনগণের কাছে উপলব্ধ করার জন্য ইতিমধ্যেই যথেষ্ট। নতুন বৈশিষ্ট্যগুলির ক্রমাগত একীকরণ সময়ের সাথে স্বাভাবিকভাবেই উদ্ভাসিত হবে, এটি সর্বদা করে।
কিন্তু এখানে জিনিস হল: FHE অনেক স্বাদে আসে। আপনি কোন ক্রিপ্টোগ্রাফিক স্কিম ব্যবহার করছেন - বা আপনি এটির কোন বিশেষ ব্যবহার করছেন তার উপর নির্ভর করে, গণনার প্রতিনিধিত্ব করার এবং হোমোমরফিক প্রোগ্রাম চালানোর একটি ভিন্ন উপায় দেখা দেয়। এটা এমন যে এফএইচই স্কিমগুলি সম্পূর্ণ ভিন্ন প্রাণী, একটি আপনাকে টিউরিং মেশিন এবং আরেকটি ল্যাম্বডা ক্যালকুলাস দেয়। জীববৈচিত্র্য সর্বদা প্রযুক্তিগত বা অন্যথায় ভাল, তবে এর মানে হল যে অনুশীলনে FHE যন্ত্র তৈরি করার সময় আপনাকে একটি কার্যকর কৌশল তৈরি করতে হবে।
আমার কোম্পানি জামা একটি বিশেষ FHE স্কিমের উপর ফোকাস করে যা হল TFHE । TFHE খুব নির্দিষ্ট সম্পদের সাথে সমজাতীয় ডেটা প্রসেসিং অর্জন করে: সুপার-ফাস্ট বুটস্ট্র্যাপিং এবং কম্পিউটেশন টেবিল লুকআপের নেটওয়ার্ক হিসাবে প্রকাশ করা হয়। আমরা কীভাবে এই বিশেষত্বগুলি - যেগুলি TFHE-কে FHE স্থানের মধ্যে এক ধরণের আন্ডারডগ তৈরি করত - কীভাবে সমজাতীয় লাইব্রেরি, সংকলন, ভার্চুয়াল মেশিন বা হার্ডওয়্যার ত্বরণে অনুবাদ করা যেতে পারে তার গভীর উপলব্ধি অর্জন করতে এসেছি।
অন্যান্য বিশিষ্ট FHE প্রতিযোগী যেমন CKKS , BGV বা BFV তাদের ব্যবহারিক উপকরণে খুব ভিন্ন ধারণা জড়িত: বুটস্ট্র্যাপিংগুলি একটি বিকল্প হতে খুব ধীর, তাই প্রক্রিয়াকরণ গভীরতায় সীমিত, তবে ডেটা ব্যাপক ব্যাচিংয়ের মাধ্যমে ভেক্টরাইজ করা যেতে পারে, গণনাগুলি বহুপদী সার্কিট হিসাবে প্রকাশ করা হয় এবং - CKKS-এর ক্ষেত্রে - ফলাফল আনুমানিক। তাই BGV/BFV এবং CKKS-এর কম্পাইলার এবং রানটাইমে অনুবাদ করার জন্য টুল নির্মাতাদের থেকে সম্পূর্ণ ভিন্ন মানসিকতার প্রয়োজন।
ডেভেলপাররা, যদিও, কোন বিশেষ স্কিমটি তাদের FHE টুলচেন এবং রানটাইম পরিবেশকে শক্তি দিচ্ছে সে সম্পর্কে খুব বেশি যত্ন নেওয়ার সম্ভাবনা নেই, যতক্ষণ না সেগুলি সহজেই পরিচালিত হয় এবং নিয়োজিত হোমোমরফিক অ্যাপ্লিকেশনগুলিতে কর্মক্ষমতা প্রয়োজনীয়তা পূরণ করা হয়। তারা নিজেরাই সৃজনশীল নির্মাতা, এবং তাদের ফোকাস হওয়া উচিত নতুন অভিজ্ঞতার উপর যে তারা তাদের ব্যবহারকারীদের অফার করতে পারে।
সুতরাং এফএইচই প্রযুক্তি সক্ষমকারীদের জন্য শেষ খেলা হল এমন সরঞ্জামগুলিকে ধারণ করা এবং সরবরাহ করা যা কেবলমাত্র ডেভ মাল্টিভার্সে তাদের প্রাইম টাইমের জন্য প্রস্তুত নয়, বরং একটি নতুন শিল্প মান সেট করার জন্য যথেষ্ট শক্তিশালী। এটি অর্জন করার জন্য, তাদের একটি সুযোগ নিতে হবে যার ভিত্তিতে FHE স্কিম তাদের সেখানে পাওয়ার সম্ভাবনা বেশি।
চল একটা খেলা খেলি.
একজন বিকাশকারীকে নিন যিনি FHE এর জটিলতা সম্পর্কে কিছুই জানেন না কিন্তু একটি সমজাতীয় অ্যাপ্লিকেশন তৈরি করতে চান। আপনি এখানে টুল নির্মাতা, আপনি সেই বিকাশকারীর মুখোমুখি হচ্ছেন, যার কাছ থেকে আপনি সাধারণ ডেভ অনুশীলন এবং কম্পিউটার বিজ্ঞানের মূল বিষয়গুলির সাথে কিছু পরিচিতি আশা করতে পারেন তবে অন্য সবকিছু - উন্নত গণিত এবং এর মতো, সীমাবদ্ধ নয়। কিভাবে আপনি সফলভাবে তাদের নিজেরাই FHE অ্যাপ তৈরি করতে পারেন?
এই নিবন্ধটি TFHE-তে বাজি ধরে সেই গেমটি জেতার জন্য বিভিন্ন কৌশলগুলি অন্বেষণ করে৷
অ্যাপ্লিকেশনের প্রকৃতির উপর নির্ভর করে - কাস্টম ডেটা ক্রাঞ্চিং, নিউরাল নেটওয়ার্ক, স্মার্ট চুক্তি বা সাধারণ-উদ্দেশ্য প্রোগ্রামিং, TFHE-সক্ষম বিজয়ী পথগুলি অন্বেষণ করা হবে। এই অন্বেষণটি আমাদেরকে একটি সহজ রাস্তা, একটি কঠিন রাস্তা এবং এর মধ্যে আরও কয়েকটিকে নিয়ে যাবে, তাদের ব্যবহারিক উপলব্ধিতে বিভিন্ন স্তরের প্রযুক্তিগত প্রস্তুতি নিয়ে।
TFHE মানে Torus FHE। এছাড়াও এটির আবিষ্কারকদের নাম অনুসারে CGGI হিসাবে উল্লেখ করা হয়, TFHE FHE ল্যান্ডস্কেপের মধ্যে একটি অনন্য অবস্থান দখল করে: এটি প্রোগ্রামেবল বুটস্ট্র্যাপিং (PBS) সক্ষম করার জন্য সবচেয়ে পরিচিত প্রক্রিয়া।
সংক্ষেপে, একটি পিবিএস একটি হোমোমর্ফিক টেবিল লুকআপ। এটি T[x]
এর একটি এনক্রিপশন প্রদান করে যেখানে T
হল আপনার পছন্দের একটি সারণীকৃত ফাংশন, একটি সূচক x
এর একটি এনক্রিপশন দেওয়া হয়েছে। এটির চলমান গতি T
এর এন্ট্রিগুলির উপর নির্ভর করে না তবে শুধুমাত্র এন্ট্রির সংখ্যার উপর নির্ভর করে এবং এটি মিলিসেকেন্ডের পরিসরে। এছাড়াও, একটি পিবিএস তার আউটপুট সাইফারটেক্সট এম্বেড করা এনক্রিপশন নয়েজ রিসেট করে, তাই আপনি অনির্দিষ্টকালের জন্য পিবিএস রচনা করতে পারেন, জেনে রাখুন যে আপনার হোমোমরফিক অ্যাপ্লিকেশন সবসময় পরিষ্কার সাইফারটেক্সট পরিচালনা করবে।
TFHE যে কম্পিউটেশনাল মডেলের পক্ষে ওকালতি করে তা সর্বোত্তম।
TFHE প্রোগ্রামে প্রাথমিক প্রক্রিয়াকরণ ইউনিট দেখতে হুবহু একটি নিউরনের মতো এবং 2টি মৌলিক হোমোমরফিক অপারেশন রচনা করে:
ইনপুটগুলির একটি রৈখিক সংমিশ্রণ যা E(x)
প্রদান করে যেখানে x = w_1 x_1 + … + w_n x_n modulo m
, এনক্রিপ্ট করা ইনপুট E(x_1), …, E(x_n)
এবং প্লেইনটেক্সট ওজনের একটি সেট w_1, …, w_n
.
একটি PBS যা E E(x)
) থেকে E(T[x])
গণনা করে যেখানে T
হল m
আকারের কিছু প্লেইনটেক্সট টেবিল।
"TFHE নিউরনে", m
, x_i
, w_i
, সেইসাথে এন্ট্রিগুলি T[0], …, T[m-1]
সমস্ত পূর্ণসংখ্যা, এবং কেউ স্বাধীনভাবে "প্যারামিটার" m
, w_1, …, w_n
বেছে নিতে পারে। w_1, …, w_n
এবং T
প্রদত্ত যে রৈখিক সংমিশ্রণে প্রায় শূন্য খরচ আছে, দক্ষতার বাধা হল PBS যার চলমান সময় শুধুমাত্র মডুলাস m
: গতির উপর m
বাড়ার উপর নির্ভর করে। এটি TFHE নিউরনের মডিউলির জন্য ছোট মান - বিজোড় বা জোড়, তবে কমপক্ষে 2 - ব্যবহার করার জন্য আমন্ত্রণ জানায়, যদিও তাদের গণনামূলক অভিব্যক্তির খুব কঠোর হ্রাস এড়াতে একটি ট্রেড-অফ খুঁজে পাওয়া উচিত।
এখন, সমান্তরালতা এবং এইচপিসি কৌশলগুলি থেকে উপকৃত হওয়ার জন্য নিউরনগুলিকে যেভাবে স্তরগুলিতে একত্রিত করা হয়, TFHE নেটওয়ার্কগুলি TFHE নিউরনের স্তরগুলিকে স্তূপ করে। প্রতিটি স্তরে একটি ওজন ম্যাট্রিক্স মডিউল একটি সাধারণ মডুলাস m
এবং m
আকারের লুকআপ টেবিলের একটি ভেক্টর রয়েছে। যাইহোক, মডুলাসটি লেয়ারের আকৃতির মতই আগের বা পরের লেয়ারে আলাদা হতে পারে।
এবং যে TFHE আপ মোড়ানো! সেখানে আপনি যান, আমাদের শুধুমাত্র লুকআপ নেটওয়ার্ক হিসাবে ফাংশনগুলিকে পদ্ধতিগতভাবে প্রকাশ করতে হবে। আমাদের এখন আমাদের হোমোমরফিক কম্পিউটেশনাল মডেল আছে।
প্রকৃত বাস্তবে, TFHE সেই মডেলের একাধিক এক্সটেনশন সমর্থন করে (নিম্ন স্তরের অপারেটরদের নির্বিচারে গ্রাফ, বিভিন্ন ধরণের সাইফারটেক্সট, মাল্টি-আউটপুট টেবিল লুকআপ, প্যাকিং ভেরিয়েবলের একাধিক উপায় ইত্যাদি)। কিন্তু আমরা আপাতত এই বর্ধনগুলিকে উপেক্ষা করতে পারি কারণ লুকআপ নেটওয়ার্ক ভিশন ইতিমধ্যেই যথেষ্ট শক্তিশালী যা আমাদের একটি প্লেইন প্রোগ্রামকে একটি হোমোমর্ফিক সমতুল্যে রূপান্তর করতে এবং এটি চালানোর অনুমতি দেয়। তাই আমরা অন্তত প্রযুক্তির প্রথম পুনরাবৃত্তির জন্য, কীভাবে ঠিক করতে পারি তার উপর ফোকাস করতে পারি।
যেমন, একটি TFHE নেটওয়ার্ক শুধুমাত্র একটি ব্লুপ্রিন্ট এবং একটি হোমোমরফিক অ্যাপের মধ্যে সঠিকভাবে কার্যকর করার জন্য এখনও প্রস্তুত নয়। যদিও মডুলি, ওজন ম্যাট্রিক্স এবং লুকআপ টেবিলগুলি এর সমস্ত স্তরগুলির জন্য সম্পূর্ণরূপে নির্দিষ্ট করা হয়েছে, এটি এখনও একটি গুরুত্বপূর্ণ উপাদান মিস করে যা একটি ক্রিপ্টোগ্রাফিক প্যারামেট্রিাইজেশন।
ক্রিপ্টো প্যারামিটারগুলি রানটাইমে নেটওয়ার্কের মধ্যে কী ঘটবে সে সম্পর্কে প্রতিটি সম্ভাব্য মেট্রিক নির্দেশ করে: কংক্রিট সাইফারটেক্সট আকার, পিবিএস-এর অভ্যন্তরীণ কী-সুইচিং এবং বুটস্ট্র্যাপিং কীগুলির প্রকৃত টেনসর মাত্রা, নিম্ন-স্তরের হোমোমরফিক অপারেটরগুলির মধ্যে বিভিন্ন অ্যালগরিদমিক বিকল্প, কীভাবে প্লেইনটেক্সট স্পষ্টতা এবং শব্দ স্তরগুলি নেটওয়ার্ক জুড়ে বিবর্তিত হয় এবং শেষ পর্যন্ত, কীভাবে এনক্রিপ্ট এবং ডিক্রিপ্ট করা যায় তার সুনির্দিষ্ট বিবরণ। তারা মেমরি ব্যবহার এবং কর্মক্ষমতা ভবিষ্যদ্বাণী করে।
কোন প্যারামিটারের সেটটি একটি TFHE নেটওয়ার্কের কার্য সম্পাদনকে অপ্টিমাইজ করে তা খুঁজে বের করা কষ্টকর হতে পারে, এবং যে কোনও ক্ষেত্রে, অত্যন্ত কঠিন - এমনকি বিশেষজ্ঞদের জন্য - FHE-এর প্রথম দিনগুলির মতো কলম-এবং-কাগজের শৈলী করা, কারণ সবকিছু নির্ভর করে . এছাড়াও, বেশ কয়েকটি সর্বোত্তম সেট একসাথে থাকতে পারে, এইভাবে সর্বজনীন কী আকার, সমালোচনামূলক-পাথ লেটেন্সি বা সর্বাধিক থ্রুপুটের মধ্যে একটি সালিসি প্রয়োজন। সৌভাগ্যবশত, এই কাজটি স্বয়ংক্রিয় করার সমস্যাটি গত বছরগুলিতে ক্র্যাক হয়ে গেছে এবং একটি প্রদত্ত TFHE নেটওয়ার্কের সেরা ক্রিপ্টোগ্রাফিক ইনস্ট্যান্টিয়েশন দ্রুত নির্ধারণ করতে শক্তিশালী অপ্টিমাইজেশন টুল এখন বিদ্যমান।
একবার ক্রিপ্টোগ্রাফিক পরামিতিগুলির সাথে ইনস্ট্যান্টিশিয়েট করা হলে, একটি TFHE নেটওয়ার্ক সত্যিকারের এক্সিকিউটেবল হয়ে যায়, বা আরও সঠিকভাবে, সংকলনের উপযুক্ত পাসের মাধ্যমে সত্যিকারের এক্সিকিউটেবলের জন্য উপযুক্ত।
একটি TFHE প্রোগ্রাম হল প্যারামেট্রিকৃত TFHE নেটওয়ার্কগুলির একটি সংগ্রহ যা "প্লেইন লজিক" দ্বারা একত্রিত হয়।
সরল যুক্তি দিয়ে তৈরি
নির্দেশাবলী প্লেইনটেক্সট ভেরিয়েবলের উপর কাজ করে (অর্থাৎ স্বাভাবিক, নন-এনক্রিপ্ট করা ভেরিয়েবল),
ব্রাঞ্চিং, হয় শর্তহীন বা প্লেইনটেক্সট পূর্বাভাসের জন্য শর্তযুক্ত,
প্লেইনটেক্সট ঠিকানায় মেমরি পড়া এবং লেখা, পয়েন্টার গাণিতিক,
সাবরুটিন/ফাংশনে কল।
মূলত, প্লেইন লজিক একটি একক কেস বাদ দিয়ে ভাষা দ্বারা সমর্থিত যাই হোক না কেন প্রোগ্রামিং লজিক থাকে: এনক্রিপ্ট করা প্রোগ্রাম ভেরিয়েবল পরিবর্তন করা, যা প্রোগ্রামের TFHE অংশগুলির বিশেষাধিকার। সিফারটেক্সট-এবং TFHE পাবলিক কী-এর সাথে শুধুমাত্র একটি সাধারণ যুক্তির অনুমতি দেওয়া হয় - সেগুলোকে পরিবর্তন না করেই ঘুরিয়ে দেওয়া এবং TFHE অংশে তাদের খাওয়ানো, যেন সেগুলি তাদের নিজস্ব কোপ্রসেসর বা পাত্রে চলছে।
সমস্ত উদ্দেশ্য এবং উদ্দেশ্যের জন্য, এই সংজ্ঞা মেনে চলা একটি প্রোগ্রাম সম্পূর্ণ এবং একটি পূর্ণাঙ্গ হোমোমরফিক অ্যাপ্লিকেশন হয়ে উঠতে প্রস্তুত, প্রোগ্রামিং ভাষা যাই হোক না কেন। কাস্টম সংকলন এই চূড়ান্ত ম্যাপিং প্রদান করবে, এবং ফলস্বরূপ অবজেক্টটি একটি TFHE-সক্ষম রানটাইমের উপরে বা একটি স্বতন্ত্র, স্বয়ংসম্পূর্ণ এক্সিকিউটেবল হিসাবে চালানো যেতে পারে।
একটি ডেডিকেটেড ভাষা টিএফএইচই প্রোগ্রামগুলির উপস্থাপনাকে একীভূত করতে ব্যবহার করা যেতে পারে - যেমন কিছু ডিএসএল, বা আরও ভাল, একটি MLIR উপভাষা - যাতে একই ব্যাক-এন্ড কম্পাইলার দিয়ে সংকলন করা যায়।
রানটাইমের সুনির্দিষ্ট প্রকৃতি (শেয়ারড/ডাইনামিক লাইব্রেরি, ভিএম বা অন্যথায়) এখানে শুধুমাত্র একটি পদ্ধতি। যেকোন বিকল্পটি একটি কার্যকরী TFHE-চালিত হোমোমরফিক অ্যাপের দিকে নিয়ে যাবে যা ব্যবহারকারীদের কাছে স্থাপন এবং প্রকাশ করা যেতে পারে।
এখন এক মিনিটের জন্য খেলায় ফিরে আসা যাক।
আমরা এমন একজন বিকাশকারীর মুখোমুখি হচ্ছি যিনি TFHE বা উপরের কিছুই জানেন না কিন্তু একটি হোমোমরফিক অ্যাপ্লিকেশন তৈরি করতে চান। ধরে নিন আমরা উপরে আলোচিত কম্পাইলার এবং TFHE- সক্ষম রানটাইম প্রকাশ করেছি, যদি থাকে।
আমাদের লক্ষ্য স্থির হয়ে গেছে, এক্সিকিউটেবলে পৌঁছানোর জন্য আমাদের শুধু একটি TFHE প্রোগ্রাম দরকার। কিন্তু... কিভাবে আমরা ডেভেলপারকে প্রথম স্থানে একটি TFHE প্রোগ্রামের মতো নির্দিষ্ট কিছু স্ব-উৎপাদন করতে যাচ্ছি?
এখানে সহজ জয়ের পথ আসে: আপনি একটি কালো-বক্স FHE API-এ সমস্ত জটিলতাকে এনক্যাপসুলেট করেন।
যেকোনো প্রোগ্রামিং ভাষায়, একটি (সাধারণ) প্রোগ্রামকে মূলত 3টি উপাদানের সমন্বয় হিসাবে দেখা যেতে পারে:
প্রোগ্রাম্যাটিক লজিক, ভাষা-নেটিভ নির্দেশাবলী এবং স্কোপিং কনস্ট্রাক্ট দিয়ে তৈরি,
ভেরিয়েবল এবং ডাটা প্রকারের একটি নির্বাচন যা প্রোগ্রাম তাদের জন্য বরাদ্দ করে, সমস্ত সম্ভাব্য ডেটা প্রকারের মধ্যে বেছে নেওয়া,
সমস্ত উপলব্ধ বহিরাগত ফাংশনগুলির মধ্যে নির্বাচিত বহিরাগত ফাংশনগুলির একটি নির্বাচনকে কল করে, যা প্রোগ্রামটি তার ভেরিয়েবলগুলিতে কাজ করতে ব্যবহার করে।
ডেটা টাইপগুলির নিজস্ব উপ-ভাষা রয়েছে, এই নেটিভ টাইপগুলিকে প্রসারিত করতে এবং উচ্চ-স্তরের কাঠামোগত প্রকারগুলিতে তাদের একত্রিত করার জন্য নেটিভ টাইপ এবং টাইপিং কনস্ট্রাক্টের মিশ্রণ রয়েছে। টাইপ সিস্টেমটি প্রোগ্রামটির প্রয়োজন হতে পারে এমন কার্যত যেকোন ডেটা কাঠামোকে কভার করার জন্য যথেষ্ট অভিব্যক্তি প্রদান করার জন্য বোঝানো হয়েছে। বহিরাগত ফাংশনগুলি লাইব্রেরি, মানক বা অন্যথায় দ্বারা সরবরাহ করা হয়, তবে সেগুলি ভাষা-নেটিভ নির্দেশাবলী (মডুলার গাণিতিক বা বিভাগের জন্য অপারেটরদের মনে করুন) দ্বারাও অন্তর্নিহিতভাবে আহ্বান করা যেতে পারে।
তাই সরল প্রোগ্রাম আসলে "সহজ":
এখানে ভালো করে শুনুন। আমি বলছি না যে সমস্ত উচ্চ-স্তরের প্রোগ্রামিং ধারণা যেমন পলিমরফিজম, তাদের সদস্য এবং গুণাবলী সহ বস্তু, শ্রেণী এবং শ্রেণিবদ্ধ উত্তরাধিকার, টেমপ্লেট, ম্যাক্রো, বৈশিষ্ট্য, থ্রেড, পুনরাবৃত্তি, সিনট্যাকটিক চিনি, টীকা এবং অন্যান্য সমস্ত কল্পনাযোগ্য শূন্য খরচ ভাষা দ্বারা প্রদত্ত বিমূর্ততাগুলি বিকাশকারীর পরিচালনার জন্য প্রয়োজনীয় সহজ, যদিও সেগুলি তাদের কাজকে সহজ করার জন্য উদ্ভাবিত হয়েছে।
আমি শুধু বলছি যে আমাদের উদ্দেশ্যের জন্য, এগুলি কেবল নিরীহ সজ্জা যা সংকলন করার সময় অদৃশ্য হয়ে যায়, কারণ প্রোগ্রামটির একটি নিচু অথচ সমতুল্য, স্বাভাবিক ফর্মের সংস্করণটি উত্স থেকে অনুমান করা হয়েছে। প্রোগ্রামের সেই সংস্করণ, যে কোন মধ্যবর্তী উপস্থাপনা (IR) দ্বারা প্রকাশ করা হয়, সরল-রেখার মৌলিক ব্লক দিয়ে তৈরি - নির্দেশাবলীর ক্রম যা সেই IR-তে প্রাথমিক - কিছু নিয়ন্ত্রণ প্রবাহ গ্রাফ দ্বারা সংযুক্ত।
এখন এই প্রোগ্রামটি সাধারণ আকারে "সহজ"। আমি বলতে চাচ্ছি, হোমোমরফিক ক্ষমতার সাথে বর্ধিত করা যথেষ্ট সহজ।
আপনি একটি ভাষা-নেটিভ FHE লাইব্রেরি রিলিজ করে গেমটি জিতবেন এবং ডেভেলপারকে কীভাবে এটিকে সর্বোত্তমভাবে ব্যবহার করবেন তা নিয়ে চুক্তি করতে দেবেন।
লাইব্রেরি নতুন ডেটা প্রকার প্রকাশ করবে - এনক্রিপ্ট করাগুলি, প্লেইনগুলিকে পরিপূরক করার জন্য - এবং সমজাতীয় ফাংশনগুলির একটি সংগ্রহ যা বিকাশকারীর সাথে পরিচিত প্লেইন ফাংশনগুলিকে অনুকরণ করে (কম বা কম) শুধুমাত্র তারা এনক্রিপ্ট করা ডেটা প্রকারগুলির সাথে কাজ করে৷ সংক্ষেপে, আপনি টাইপ সিস্টেম এবং লাইব্রেরি ইকোসিস্টেমকে প্রসারিত করছেন এবং ডেভেলপারের বুদ্ধিমত্তাকে তাদের হোমোমর্ফিক অ্যাপ তৈরি করতে এই এক্সটেনশনগুলি কীভাবে ব্যবহার করবেন তা বের করতে দিন।
এটি বিশেষ করে TFHE এর সাথে সংযুক্ত নয়, যেকোনো FHE স্কিম করবে। সেখানকার বিভিন্ন FHE লাইব্রেরির প্রদানকারীরা এখানেই ফোকাস করে: প্লেইন কোডিং অভিজ্ঞতার যতটা সম্ভব কাছাকাছি দেখায় এবং অনুভব করে এমন উচ্চ-স্তরের হোমোমরফিক ফাংশনগুলিকে উন্মুক্ত করে FHE-এর ব্যবহারযোগ্যতা এবং ব্যবহারকারী-বন্ধুত্বের উন্নতি। সমস্ত ক্রিপ্টোগ্রাফিক জটিলতা ব্ল্যাক বক্সে বিমূর্ত করা হয় যে প্রোগ্রামটি ওরাকল কল করবে।
এটি অবশ্যই বিকাশকারীর জন্য ভাল কাজ করতে পারে। ওয়েল... যদি আপনি লাইব্রেরি প্রদানকারী হিসাবে আপনার দর কষাকষি বন্ধ টান যে.
তারা একটি সমজাতীয় প্রোগ্রাম খুঁজে বের করবে যা এখন এরকম কিছু দেখায়।
এখন প্লেইন এবং এনক্রিপ্ট করা ভেরিয়েবল সহ বিদ্যমান রয়েছে এবং প্রোগ্রামটিকে এই 2টি অবজেক্ট প্রকারের মধ্যে একটি কঠোর বিভাজন বজায় রাখতে হবে। এর কারণ হল এই FHE সুবর্ণ নিয়ম যা বলে যে আপনি যখন প্লেইন এবং এনক্রিপ্ট করা আর্গুমেন্টের মিশ্রণে একটি ফাংশন প্রয়োগ করেন, ফলাফলটি অপরিহার্যভাবে এনক্রিপ্ট করা হয়, যেমন fhe_add(E(x), y)
E(x+y)
প্রদান করে এবং শীঘ্রই. তাই প্লেইন ভেরিয়েবল কিছু এফএইচই ফাংশন প্রবেশ করতে পারে কিন্তু তাদের থেকে বের হতে পারে না। হোমোমরফিক এনক্রিপশন গণনার মাধ্যমে স্পর্শ করা সমস্ত কিছুকে "দূষিত" করে।
সুতরাং, দেখুন... আপনি কিভাবে শর্তসাপেক্ষে একটি এনক্রিপ্ট করা ভেরিয়েবলের সাথে শাখা করবেন?
আচ্ছা, তুমি পারবে না। কিন্তু এটা মোটেই বড় সমস্যা নয়।
একটি FHE অ্যাপ্লিকেশনে, শর্তসাপেক্ষ শাখা শুধুমাত্র প্লেইন বুলিয়ানগুলিতে কাজ করতে পারে, এনক্রিপ্ট করাগুলিতে নয়। একটি এনক্রিপ্ট করা বিটের উপর ভিত্তি করে কোথায় লাফ দিতে হবে তা আপনি কীভাবে জানবেন? সেই বিটটিকে ডিক্রিপ্ট করার জন্য আপনার কাছে ব্যবহারকারীর ব্যক্তিগত কী নেই৷
সৌভাগ্যবশত, FHE আপনাকে এর প্রতিকারের জন্য সহজ কৌশলও দেয়।
ধরুন ডেভেলপার প্রথমে এরকম কিছু করতে চেয়েছিলেন
if (x == 0) then y = 3 else z = 7
কিন্তু বুঝতে পারে যে, যে বিন্দুর মধ্যে, ভেরিয়েবল x
আসলে এনক্রিপ্ট করা হবে। কিভাবে কোড যে টুকরা মানিয়ে?
মাল্টিপ্লেক্সিং ব্যবহার করে এমন একটি সরল-রেখা কোডের সমতুল্য অংশ পেতে হলে প্রথমে প্লেইন if
স্টেটমেন্টটি পুনরায় কাজ করতে হবে:
bit = (x == 0) // bit = 1 if x == 0 otherwise 0 y = 3 * bit + y * (1 - bit) // y = 3 if bit == 1 otherwise no change z = z * bit + 7 * (1 - bit) // z = 7 if bit == 0 otherwise no change
একটি দ্বিতীয় পাসে, dev-কে এই সত্যটি প্রচার করতে হবে যে x
পরবর্তী লাইন জুড়ে এনক্রিপ্টেড ধরনের:
bit = fhe_is_equal(x, 0) // bit, y_new and z_new are encrypted y_new = fhe_add(fhe_mul(3, bit), fhe_mul(y, fhe_sub(1, bit))) z_new = fhe_add(fhe_mul(z, bit), fhe_mul(7, fhe_sub(1, bit)))
কেউ পরীক্ষা করতে পারে যে এটি কার্যকরীভাবে dev এর প্রাথমিক অভিপ্রায়ের সমতুল্য, এবং এটিই।
যদি প্রোগ্রামিং ল্যাঙ্গুয়েজ নেটিভ অপারেটরদের ওভারলোড করার অনুমতি দেয়, তাহলে FHE API এমনকি দ্বিতীয় স্নিপেটের স্পষ্ট FHE ফাংশনগুলিকে অপ্রয়োজনীয় করে তুলতে পারে, যাতে প্রথম পুনর্লিখনই একমাত্র জিনিস যা dev-কে করতে হবে।
দেবকে সিনট্যাকটিক চিনির একটি অতিরিক্ত ডোজ দিতে, আপনি এমনকি একটি ওভারলোডেড টারনারি অপারেটরকে প্রকাশ করতে পারেন a? b : c
যেখানে কোনো আর্গুমেন্ট এনক্রিপ্ট করা যাবে বা করা যাবে না। কোডের টুকরোটি আরও সহজ হয়ে যায়:
bit = (x == 0) // bit = 1 if x == 0 otherwise 0 y_new = bit? 3: y // y = 3 if bit == 1 otherwise no change z_new = bit? z: 7 // z = 7 if bit == 0 otherwise no change
এটি সহজেই বিবৃতিগুলিকে নির্বিচারে সাধারণীকরণ করে if/switch
: প্রতিবার পরীক্ষা করার জন্য একটি এনক্রিপ্ট করা শর্ত থাকে, dev-কে কেবলমাত্র সমতুল্য সরল-রেখা কোডের একটি একক ব্লকে স্টেটমেন্টের একাধিক বডি ফিউজ করতে মাল্টিপ্লেক্সিং ব্যবহার করতে হয়।
এখন, এনক্রিপ্ট করা অবস্থার সাথে জড়িত লুপ কনস্ট্রাক্টগুলিকে একই চেতনায় নিয়মিত করা যেতে পারে। যেমন ধরুন
for (i = 0; i < x; i++) do <body> // i is plain, x is encrypted
যেখানে x
এনক্রিপ্টেড টাইপের হতে হবে। প্রথমত, বিবৃতির for
একটি প্লেইন এবং একটি অনিয়মিত if
বিবৃতিতে এটিকে পচন করুন:
for (i = 0; i < known_max_value_of_x; i++) do if (i < x) then <body> // i is plain, x is encrypted
এবং তারপর আগের মত if
স্টেটমেন্ট নিয়মিত করুন:
for (i = 0; i < known_max_value_of_x; i++) do bit = (i < x) // i is plain, x and bit are encrypted <new_body> // new body regularized using bit? _ : _
লক্ষ্য করুন যে এটির জন্য একটি অবিলম্বে known_max_value_of_x
মান প্রয়োজন। x
এর এনক্রিপ্ট করা টাইপ দ্বারা সমর্থিত সর্বোচ্চ মান ডিফল্টরূপে ব্যবহার করা যেতে পারে, কিন্তু অনেক ক্ষেত্রে dev জানে x
এ অনেক ভালো আপার বাউন্ড যা মোট লুপের সংখ্যাকে কঠোর ন্যূনতম পর্যন্ত কমাতে দেয়।
দিনের শেষে, উপরোক্ত রূপান্তরগুলি অনিয়মিত নিয়ন্ত্রণ প্রবাহকে নিয়মিত করার জন্য একটি পদ্ধতিগত পদ্ধতিতে সহজেই সাধারণীকরণ করা হয়, যা কোডারদের জন্য তাদের কোডিং অভ্যাসকে একীভূত করা এবং যোগ করা সহজ।
Zama's fhEVM হল ইথেরিয়াম ভার্চুয়াল মেশিনে (EVM)-এর বিকাশ এবং গোপনীয় স্মার্ট চুক্তি স্থাপনের জন্য একটি পূর্ণাঙ্গ ওপেন সোর্স ফ্রেমওয়ার্ক। fhEVM চুক্তি হল সাধারণ সলিডিটি চুক্তি যা ঐতিহ্যগত সলিডিটি টুলচেইন ব্যবহার করে তৈরি করা হয়। পরিচিত ডেভ অভিজ্ঞতা হল লাইব্রেরি TFHE.sol
দ্বারা FHE-বর্ধিত যা স্ট্যান্ডার্ড ফাংশনগুলির জন্য এনক্রিপ্ট করা ডেটা প্রকার এবং FHE প্রতিস্থাপন প্রদান করে।
সমর্থিত এনক্রিপ্ট করা ডেটা প্রকারগুলি বর্তমানে রয়েছে৷
ebool, euint4, euint8, euint16, euint32, euint64, eaddress
এবং এনক্রিপ্ট করা স্বাক্ষরিত পূর্ণসংখ্যাও শীঘ্রই অন্তর্ভুক্ত করা হবে। এনক্রিপ্ট করা ভেরিয়েবলগুলি ডেডিকেটেড কনস্ট্রাক্টর ব্যবহার করে কাঁচা ইনপুট সাইফারটেক্সট থেকে তৈরি করা হয়:
function mint(bytes calldata encryptedAmount) public onlyContractOwner { euint64 amount = TFHE.asEuint64(encryptedAmount); balances[contractOwner] = balances[contractOwner] + amount; totalSupply = totalSupply + amount; }
সলিডিটির নেটিভ অপারেটর +, -, *, &, |, ^, etc
dev-এর সুবিধার জন্য ওভারলোড করা হয়েছে এবং প্রদত্ত তুলনা অপারেটর eq, ne, gt, lt, ge, le
একটি এনক্রিপ্ট করা বুলিয়ান ebool
ফেরত দেয়। হোমোমরফিক টারনারি অপারেটর _? _ : _
কে select
বলা হয় :
function bid(bytes calldata encryptedBid) internal { euint32 bid = TFHE.asEuint32(encryptedBid); ebool isAbove = TFHE.le(bid, highestBid); // Replace highest bid highestBid = TFHE.select(isAbove, bid, highestBid); }
রানটাইম সাইডে, fhEVM একটি TFHE-সক্ষম ইভিএম প্রদান করে যেখানে হোমোমরফিক ফাংশনগুলিকে প্রাক-সংকলিত চুক্তি হিসাবে প্রকাশ করা হয়, যা ওপেন-সোর্স TFHE-rs
রাস্ট লাইব্রেরির একীকরণের ফলে হয়।
এই বিষয়ে আরও জানতে fhEVM সাদা কাগজ দেখুন।
মনে রাখবেন কিভাবে এক্সিকিউটেবল TFHE প্রোগ্রামগুলি দেখতে, প্যারামেট্রিাইজড TFHE নেটওয়ার্কগুলি সরল যুক্তি দ্বারা একত্রিত হয়? ঠিক আছে, আপনার কেবল একটি উপায় দরকার যা dev এর সফ্টওয়্যার যুক্তিকে ম্যাপ করতে পারে।
প্রথম প্রয়োজন হল নিশ্চিত করা যে প্রোগ্রাম লজিক "সাধারণ"। ঠিক এটাই আমরা ডেভেলপারকে তাদের নিয়ন্ত্রণ প্রবাহের বিবৃতিগুলি নিয়মিত করার মাধ্যমে নিজেরাই তৈরি করতে শিখিয়েছি। তাই আমরা যে এখন আসলে ভাল.
দ্বিতীয় প্রয়োজনীয়তা হল যে প্রোগ্রাম দ্বারা ডাকা সমস্ত হোমোমরফিক ফাংশনগুলিকে পূর্ব-প্রতিষ্ঠিত প্যারামেট্রিাইজড TFHE নেটওয়ার্কগুলিতে ম্যাপ করা আবশ্যক৷ এটি বিভিন্ন কারণে দেখায় তার চেয়ে জটিল।
একটি প্রদত্ত ফাংশন প্রয়োগ করে এমন একটি প্যারামেট্রিাইজড TFHE নেটওয়ার্ক পূর্ব-প্রতিষ্ঠা করা অগত্যা তুচ্ছ নয়।
শুধুমাত্র 2 এনক্রিপ্ট করা 64-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যার একটি সমজাতীয় সংযোজন তৈরি করা আপনাকে অনেক প্রযুক্তিগত বিকল্পের দিকে নিয়ে যায়: আপনি কীভাবে 64-বিট ইনপুটগুলিকে মডুলার পূর্ণসংখ্যার ভেক্টর হিসাবে উপস্থাপন করবেন? ঠিক কোন মডুলাস (বা একাধিক মডুলি) দিয়ে? এবং তারপরে আপনি কীভাবে টেবিল লুকআপের স্তর সহ একটি 64-বিট সংযোজন সার্কিট উপলব্ধি করবেন?
সেখানে অনেক পছন্দ. কিন্তু আপনি শেষ পর্যন্ত ভাল ইঞ্জিনিয়ারিং এবং প্রচুর পরীক্ষা-নিরীক্ষার মাধ্যমে আপনার মন তৈরি করবেন।
ধরে নিচ্ছি যে আপনি API-এর সমস্ত ফাংশনের জন্য TFHE নেটওয়ার্কগুলি প্রয়োগ করেছেন, আপনি নিশ্চিত করতে চান যে সেগুলি লেগো ব্লকের মতোই রচনা করা যেতে পারে।
এটি অগত্যা গ্যারান্টিযুক্ত নয় কারণ একই এনক্রিপ্ট করা ডেটা টাইপ প্রতিনিধিত্ব করার সর্বোত্তম উপায় এক ফাংশন থেকে অন্য ফাংশনে আলাদা হতে পারে। তাই আপনার TFHE নেটওয়ার্কগুলির দক্ষতার উপর খুব বেশি অবনতি না করে প্রতিটি এনক্রিপ্ট করা ডেটা টাইপের প্রতিনিধিত্ব করার জন্য আপনাকে একটি সাধারণ গাণিতিক বিন্যাস গ্রহণ করতে হবে।
আবার, অনেক অপশন আছে, এবং আপনি তাদের মধ্যে সালিশ করতে হবে.
সমস্ত TFHE নেটওয়ার্ক এখন তাদের ইনপুট/আউটপুট ফরম্যাটে সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ বলে ধরে নিলে, কম্পোজেবিলিটি এখনও নিশ্চিত করা যাবে না।
এর কারণ হল যে ক্রিপ্টোগ্রাফিক প্যারামিটারগুলি যেগুলি একটি TFHE নেটওয়ার্ককে ইনস্ট্যান্টিয়েট করে তা অন্যটি ইনস্ট্যান্টিয়েট করতে ব্যবহৃতগুলির সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে৷ বিশেষ করে, ইনপুট এবং আউটপুট সাইফারটেক্সটগুলির মধ্যে এনক্রিপশন শব্দের স্তরটি প্রকৃত সংমিশ্রণযোগ্যতা নিশ্চিত করতে সামঞ্জস্য করতে হবে।
এটি ইলেকট্রনিক সার্কিটের প্রতিবন্ধকতার অনুরূপ, প্রতিবন্ধকতার মধ্যে অমিল থাকলে আপনি একটি সার্কিটকে অন্য সার্কিটের সাথে সংযোগ করতে পারবেন না। আপনাকে প্রথমে তাদের প্রতিবন্ধকতা স্তরগুলি সারিবদ্ধ করতে হবে এবং এটি এখানে একই জিনিস। এটি করার সবচেয়ে সহজ উপায় হল প্যারামিটারের নির্দিষ্ট সেট ব্যবহার করা - এমনকি শুধুমাত্র একটি অনন্য সেট - যা সমস্ত API ফাংশন জুড়ে প্রান্তিককরণ নিশ্চিত করতে টিউন করা হয়েছে। পরবর্তীকালে, ব্যবহারকারীর পাবলিক কীগুলির বিন্যাস ঠিক করা হবে, সেইসাথে ব্যবহারকারীর এনক্রিপশন এবং ডিক্রিপশনে ব্যবহৃত প্যারামিটারগুলি, ডেভেলপার কোড যাই হোক না কেন।
আপনি যদি আপনার TFHE নেটওয়ার্কগুলি তৈরি করার সময় এবং সেগুলিকে প্যারামেট্রিজ করার সময় এই 3টি প্রয়োজনীয়তা পূরণ করার একটি উপায় খুঁজে পান এবং তারপরও ভাল সামগ্রিক কর্মক্ষমতা অর্জন করেন, তাহলে অভিনন্দন! আপনি এটা বন্ধ.
এগুলি সাধারণ-উদ্দেশ্যের প্রোগ্রামিংয়ের জন্য যথেষ্ট ভাল, আবার ধরে নিচ্ছি যে FHE API সম্পূর্ণ কম্পোজিবিলিটি সহ ডেভেলপারের প্রত্যাশা করা সমস্ত স্ট্যান্ডার্ড ফাংশনগুলির জন্য হোমোমরফিক প্রতিস্থাপনের জন্য যথেষ্ট বিস্তৃত।
কিন্তু তারা বিশেষ প্রোগ্রামগুলির জন্য যথেষ্ট ভাল নাও হতে পারে
মেশিন লার্নিংয়ের মতো বড়, গণনা-নিবিড় ফাংশন,
কাস্টম, অ-মানক ফাংশন।
তখনই হোমোমরফিক সংকলন আসে।
কঠিন রাস্তাটি এখানে শুরু হয়: সাধারণ-উদ্দেশ্য প্রোগ্রামিংয়ের বাইরে গেমটি জিততে, আপনি এখন একটি TFHE কম্পাইলার সরবরাহ করবেন।
কম্পাইলার যত্ন নেবে ডেভেলপারের কোন ধারণা নেই কিভাবে নিজেরাই করতে হবে। এটি ডেভেলপারের ইনপুট দ্বারা খাওয়ানো হবে - তা যাই হোক না কেন, আপনার কল - এবং একটি TFHE প্রোগ্রামে পৌঁছানোর জন্য অনুপস্থিত অংশগুলি সম্পূর্ণ করতে হবে৷
আসুন অ-মানক অ্যাপ্লিকেশনের সাধারণ উদাহরণ দেখি।
একটি প্লেইন নিউরাল নেটওয়ার্ককে একটি হোমোমরফিক সমতুল্যে পরিণত করার মাধ্যমে, বিকাশকারী একটি হোমোমরফিক ইনফারেন্স পরিষেবা তৈরি এবং স্থাপন করবে যেখানে ব্যবহারকারীর ইনপুট এবং আউটপুটগুলি এন্ড-টু-এন্ড এনক্রিপ্ট করা হয়।
একটি প্রশিক্ষিত কোয়ান্টাইজড মডেল তৈরি করার জন্য বা ইতিমধ্যেই একটির অধিকারী হওয়ার জন্য ডেভেলপারকে মেশিন লার্নিং সম্পর্কে যথেষ্ট ভালোভাবে জানার কথা।
কীভাবে পরিমাপকরণ করা হয় তার সুনির্দিষ্ট বিষয়গুলি এখানে গুরুত্বপূর্ণ, কারণ আপনার কম্পাইলারের জন্য মডেলটিকে মূলত একটি TFHE নেটওয়ার্ক হতে হবে - বা একটি সাধারণ পুনর্লিখনের মাধ্যমে সহজেই একটির জন্য উপযুক্ত হতে হবে। উপলব্ধ ওপেন-সোর্স কৌশলগুলি কোয়ান্টাইজেশনের সেই ফর্মটিকে সমর্থন করার জন্য পরিচিত, হয় একটি প্রাক-প্রশিক্ষিত মডেলের পোস্ট-কোয়ান্টাইজেশন দ্বারা, অথবা পছন্দসইভাবে কোয়ান্টাইজেশন-সচেতন প্রশিক্ষণ (QAT) সম্পাদন করে, যা তুলনামূলকভাবে অত্যাধুনিক নির্ভুলতা অর্জন করে। একই ডেটাসেটে প্রশিক্ষিত নন-কোয়ান্টাইজড মডেলগুলিতে।
মূলত, TFHE নেটওয়ার্ক স্তর জুড়ে ব্যবহৃত মডুলি হল 2 এর পরিবর্তনশীল শক্তি, যাতে অ্যাক্টিভেশন সিগন্যালের নির্ভুলতা বিটগুলিতে পরিমাপ করা হয়। ওজনগুলি স্বাক্ষরিত পূর্ণসংখ্যা, এবং অ্যাক্টিভেশন ফাংশনগুলি নিজেই পরিমাপ করা হয় এবং টেবিল লুকআপ হিসাবে তাত্ক্ষণিক হয়। যখন অ্যাক্টিভেশনগুলি একটি শিফটেড অফসেট সহ একটি স্থানান্তরিত হার্ড সাইন ফাংশন সারণী করে, তখন এই সংজ্ঞাটি BNN , TNN এবং তাদের মাল্টি-বিট সাধারণীকরণের মতো মডেল প্রকারগুলিকে অন্তর্ভুক্ত করে। কিন্তু নীতিগতভাবে, কেউ সক্রিয়করণ ফাংশনে নির্বিচারে লুকআপ টেবিল ব্যবহার করতে পারে, এবং সেইজন্য সেগুলি আরও সঠিকভাবে পৌঁছানোর জন্য প্রশিক্ষণের সময় শেখা যেতে পারে।
যদিও ডেভেলপার জানেন না কিভাবে করতে হয়, তা হল তাদের TFHE নেটওয়ার্ককে একটি সমজাতীয় এক্সিকিউটেবলে রূপান্তর করা। সুতরাং এখানে একমাত্র অনুপস্থিত উপাদানটি হল সেই নেটওয়ার্কের একটি ক্রিপ্টোগ্রাফিক প্যারামেট্রিাইজেশন, এবং ব্যাক-এন্ড সংকলন পর্যায়ে যাওয়ার আগে আপনার কম্পাইলারকে এটি করতে হবে।
মনে রাখবেন যে একটি TFHE নেটওয়ার্কের প্যারামেট্রাইজেশন একটি ক্রিপ্টোগ্রাফিক ইনস্ট্যান্টিয়েশন প্রদান করে যা কার্যকর করা যেতে পারে। এটি ব্যবহারকারীর পাবলিক কীগুলির মোট আকার এবং মোট চলমান সময়ের মতো সেই সম্পাদনের সাথে সম্পর্কিত সমস্ত মেট্রিকগুলিও নিয়ন্ত্রণ করে। তাই প্যারামেট্রিাইজেশন এখানে অত্যন্ত গুরুত্বপূর্ণ, কারণ ডেভেলপার অনুমানের বিলম্বকে সর্বনিম্ন ন্যূনতম করার চেষ্টা করছেন।
একটি TFHE নেটওয়ার্কের ক্রিপ্টোগ্রাফিক প্যারামিটারে তাদের সকলকে জবরদস্তি করার জন্য অনেক বেশি স্বাধীনতা রয়েছে। এছাড়াও, অপ্টিমাইজ করার মেট্রিকগুলি 2টি উপাদানের উপর নির্ভর করে যা সম্পূর্ণরূপে নেটওয়ার্কের বাইরের এবং অ্যালগরিদমগুলির উপর নির্ভর করে যা রানটাইম নিম্ন-স্তরের TFHE ক্রিয়াকলাপগুলি সম্পাদন করতে ব্যবহার করে:
গোলমাল সূত্রের একটি সংগ্রহ । একটি গোলমাল সূত্র একটি অপারেটরের শেষ পয়েন্টে এনক্রিপশন নয়েজের ইনপুট এবং আউটপুট বিতরণের সাথে সম্পর্কিত, অপারেটরের পরামিতিগুলিকে অজানা ভেরিয়েবল হিসাবে ব্যবহার করে। তাদের প্রতিষ্ঠার জন্য মানুষের বৈজ্ঞানিক বিশ্লেষণ এবং পরীক্ষামূলক বৈধতা প্রয়োজন।
খরচ মেট্রিক্স একটি সংগ্রহ . খরচ মেট্রিক্স তার পরামিতিগুলির একটি ফাংশন হিসাবে একটি অপারেটরের বহু-মাত্রিক দক্ষতা (মেমরি ব্যবহার, চলমান সময়, ইত্যাদি) ভবিষ্যদ্বাণী করে। এগুলি সাধারণত সেরা-ফিট বিশ্লেষণের মাধ্যমে বেঞ্চমার্ক পরিমাপ থেকে অনুমান করা হয়।
রানটাইম বাস্তবায়নে যেকোনো পরিবর্তন অবশ্যই এই 2টি মডিউলে প্রতিফলিত হবে, কারণ তারা উভয়ই শক্তিশালীভাবে অ্যালগরিদম-নির্ভর এবং হার্ডওয়্যার-নির্ভর।
রানটাইমের নয়েজ সূত্র এবং খরচ মডেল, প্রদত্ত TFHE নেটওয়ার্কের সাথে, একটি সম্পূর্ণ শ্রেণীর অপ্টিমাইজেশান সমস্যার একটি নির্দিষ্ট উদাহরণ তৈরি করে এবং এই উদাহরণটি একটি ডেডিকেটেড অপ্টিমাইজারের কাছে হস্তান্তর করা হয়। আমরা এখানে একাধিক উদ্দেশ্য সহ মিশ্র পূর্ণসংখ্যা ননলাইনার প্রোগ্রামিং নিয়ে কথা বলছি, তাই প্যারামিটারের সর্বোত্তম সেটগুলির একটি প্যারেটো সামনে খুঁজে বের করার জন্য সেই অ-তুচ্ছ শ্রেণীর অপ্টিমাইজেশান সমস্যার সমাধান করা প্রয়োজন।
ভাল বিজ্ঞান এবং প্রকৌশল এই ধরনের অপ্টিমাইজেশন সমস্যার সমাধানের দিকে নিয়ে গেছে কয়েক সেকেন্ডের মধ্যে, এবং TFHE কম্পাইলার যেমন কংক্রিট ইতিমধ্যেই একটি অভ্যন্তরীণ মডিউল হিসাবে একটি দক্ষ TFHE প্যারামিটার অপ্টিমাইজার বৈশিষ্ট্যযুক্ত।
বিভিন্ন উন্নতি ভবিষ্যতে TFHE অপ্টিমাইজারকে আরও দ্রুততর করে তুলতে পারে, কিন্তু সেগুলি ছাড়াও, কেউ TFHE নেটওয়ার্কগুলির প্যারামেট্রিকরণকে - মোটামুটিভাবে - একটি সম্পন্ন চুক্তি হিসাবে বিবেচনা করতে পারে।
এই অ্যাপ্লিকেশনগুলি সম্পূর্ণ ভিন্ন ধরনের। বিকাশকারী একটি কাস্টম ফাংশনের গাণিতিক স্পেসিফিকেশন ধারণ করে, যার সাথে একটি নির্ভুলতা সীমাবদ্ধতা বাস্তবায়নের জন্য। যেমন ধরুন
যেখানে x
হল 0 এবং 1 এর মধ্যে একটি বাস্তব সংখ্যা এবং F
এর আনুমানিক G
ব্যবহার করা ততক্ষণ পর্যন্ত গ্রহণযোগ্য
বিকাশকারী জানেন যে স্ট্যান্ডার্ড API ফাংশনগুলি রচনা করে একটি খামের পিছনে G
প্রয়োগ করা সম্ভবত খুব সাবঅপ্টিমাল হতে চলেছে৷
আপনার কম্পাইলার যা করবে তা হ'ল একটি নতুন TFHE নেটওয়ার্ক তৈরি করা যা বিশেষভাবে G
এর স্পেসিফিকেশন পূরণ করার জন্য তৈরি করা হয়েছে। এটি তারপর এটিকে প্যারামেট্রিাইজ করবে এবং হোমোমর্ফিক অ্যাপ তৈরি করতে ব্যাক-এন্ড সংকলনের সাথে এগিয়ে যাবে।
ঠিক আছে, সেখানেই রাস্তা হঠাৎ করে অনেক বেশি বাম্পার হয়ে যায়।
বর্তমান সময়ে, TFHE নেটওয়ার্কগুলি কীভাবে আমি আগে বলেছি সঠিক সংজ্ঞা সহ, স্বয়ংক্রিয়ভাবে সংশ্লেষিত হতে পারে সে সম্পর্কে বৈজ্ঞানিক জ্ঞানের অভাব রয়েছে৷ এমনকি সংলগ্ন ধরণের সার্কিটগুলির সংশ্লেষণের উপর গবেষণা যা পূর্ণসংখ্যা-মূল্যের মডুলার গাণিতিকের উপরও নির্ভর করে, সর্বোত্তমভাবে দুষ্প্রাপ্য। A থেকে Z পর্যন্ত এই কাজটি সম্পাদন করতে সক্ষম এমন কোনো পূর্ব-বিদ্যমান সিনথেসাইজার উল্লেখ না করা।
সমস্যা সমাধানের একটি উপায় হল TFHE নেটওয়ার্কের কম্পিউটেশনাল শক্তির একটি ভগ্নাংশকে বুলিয়ান সার্কিটে নামিয়ে ব্যবহার করা। উদাহরণস্বরূপ, একটি TFHE নিউরনকে টারনারি বুলিয়ান গেট হিসাবে কাজ করতে বাধ্য করা যেতে পারে
দ্বারা
x_1, x_2, x_3
0/1 মান নির্ধারণ করা,m = 4
এবং এর ওজন (w_1, w_2, w_3) = (2, -1, 1)
,[0, 1, 1, 0]
এ সেট করা হচ্ছে।
একই মডুলাস দিয়ে সমস্ত সম্ভাব্য ওজন এবং টেবিলগুলিকে ব্রুট-ফোর্সিং করে, তারপরে কেউ টিএফএইচই নিউরনের একটি অভিধান গঠন করতে পারে যা টারনারি গেট গণনা করতে পারে। পরবর্তী ধাপে রয়েছে
এটি অনেকের মধ্যে একটি উদাহরণমূলক কৌশল কারণ বুলিয়ান সার্কিটের উপর নির্ভরশীল পদ্ধতিগুলি প্রচুর। আপনি কেবল সাধারণ বাইনারি গেটগুলি বিবেচনা করতে পারেন এবং সীমাবদ্ধ TFHE নিউরনগুলির সাথে প্রয়োগ করতে পারেন। CEA-এর Cingulata এবং - পরে - Google-এর FHE ট্রান্সপাইলার TFHE-এর সাথে সেই রাস্তাটিকে সঠিকভাবে অগ্রগামী করেছে৷
বুলিয়ান সংশ্লেষণ আক্রমনাত্মক সার্কিট অপ্টিমাইজেশান কৌশল ব্যবহার করে, এবং সামগ্রিকভাবে একটি সমাধান করা প্রযুক্তিগত সমস্যা - বা মোটামুটি তাই, যে কম্পাইলার তৈরি করে তার জন্য সেই পদ্ধতিটিকে শব্দ এবং ব্যবহারিক করে তোলে।
যাইহোক, একবার একটি TFHE নেটওয়ার্ক এইভাবে তৈরি হয়ে গেলে, এর প্রস্থ এবং গভীরতা অস্বাভাবিকভাবে বেশি হতে পারে, যার ফলে সামগ্রিক কর্মক্ষমতা খারাপ হতে পারে। তাই একটি ব্যাপক সন্দেহ রয়েছে যে TFHE নিউরনের - সম্পূর্ণ কৃত্রিম - বুলিয়ান কন্ডিশনিং শিথিল করার মাধ্যমে, কেউ তাদের সম্পূর্ণ অভিব্যক্তি লাভ করতে পারে এবং অনেক ছোট, অনেক অগভীর নেটওয়ার্ক পেতে পারে।
কিন্তু আবার, এটি কীভাবে করা যায় তা স্পষ্টভাবে সনাক্ত করার জন্য আরও গবেষণা প্রয়োজন। এটা সম্ভব যে সম্পূর্ণ ভিন্ন পন্থা, যেমন মেশিন লার্নিং থেকে ধার করা কিছু উপযুক্ত প্রশিক্ষণ পদ্ধতির সাহায্যে TFHE নেটওয়ার্ক শেখা, উচ্চতর ফলাফল প্রদান করবে। সময় বলে দেবে.
ধরে নিই যে আমাদের সংশ্লেষণ সমস্যা সমাধান করা হয়েছে এবং দক্ষ কাস্টম TFHE নেটওয়ার্কগুলি তৈরি করে, আপনি নিজেকে সমস্ত চলমান অংশগুলিকে একত্রিত করতে এবং একটি কম্পাইলার ডিজাইন করতে প্রস্তুত দেখতে পাবেন যা পুরো শ্যাবাং করে:
এটি একটি প্লেইন প্রোগ্রাম ইনপুট হিসাবে গ্রহণ করবে, যেখানে সংবেদনশীল ভেরিয়েবলগুলিকে এনক্রিপ্ট করা হিসাবে সহজভাবে টীকা করা হয়।
এটি প্রাক-প্রশিক্ষিত নিউরাল নেটওয়ার্ক বা অন্যান্য মেশিন লার্নিং মডেল গ্রহণ করবে এবং তাদের TFHE নেটওয়ার্ক হিসাবে পুনরায় ব্যাখ্যা করবে।
এটি শুধুমাত্র একটি গাণিতিক স্পেসিফিকেশন দিয়ে তৈরি ফাংশন মক-আপ গ্রহণ করবে এবং কাস্টম TFHE নেটওয়ার্ক তৈরি করতে অন-দ্য-ফ্লাই সংশ্লেষণ করবে।
এটি সংকলন ইউনিটে ঝুলে থাকা সমস্ত আন-প্যারামেট্রিকৃত TFHE নেটওয়ার্কগুলিকে যখনই প্রয়োজন হবে একটি অপ্টিমাইজার মডিউল ব্যবহার করে এক্সিকিউটেবল ইনস্ট্যান্সে পরিণত করবে।
এটি বিভিন্ন টার্গেট TFHE রানটাইম বা/এবং হার্ডওয়্যার আর্কিটেকচারের জন্য সংকলনের ব্যাক-এন্ড স্টেজ সম্পাদন করবে।
এটি দ্রুত TFHE নেটওয়ার্কগুলির সংশ্লেষণ এবং প্যারামেট্রিকরণ সক্ষম করতে নির্দিষ্ট হার্ডওয়্যার এক্সিলারেটর (তাদের খরচ মডেলের মাধ্যমে) সুবিধা গ্রহণ করবে।
হেল, আপনি নিয়ন্ত্রণ প্রবাহের স্বয়ংক্রিয় নিয়মিতকরণের জন্য সেখানে কিছু সমর্থনও নিক্ষেপ করতে পারেন, যাতে বিকাশকারীকে আর এটির যত্ন নিতে না হয়।
এটি FHE অ্যাপ নির্মাতাদের চূড়ান্ত উন্নয়ন অভিজ্ঞতা প্রদান করবে।
সাধারণ-উদ্দেশ্য এফএইচই প্রোগ্রামিং-এর প্রেক্ষাপটে, একটি TFHE লাইব্রেরি মডুলারিটি এবং পূর্বে বিদ্যমান টুলচেনগুলির সাথে সম্পূর্ণ স্বায়ত্তশাসিত বিকাশের অভিজ্ঞতা প্রদান করতে পারে।
TFHE অগ্রগামী সুনির্দিষ্ট সংকলন কৌশল যা ডেভেলপারের প্রয়োজনগুলিকে সেই সময়ের বাইরেও সন্তুষ্ট করতে পারে, বিশেষ করে এনক্রিপ্ট করা মেশিন লার্নিং অনুমানের জন্য এবং, আসন্ন বছরগুলিতে, উচ্চ-গতির এনক্রিপ্ট করা ডেটা ক্রাঞ্চিং এবং অন্যান্য কাস্টম FHE অ্যাপ্লিকেশনগুলির জন্য৷
সামগ্রিকভাবে, TFHE আরও সমন্বিত এবং অভিযোজিত FHE টুলচেইন তৈরি করার জন্য একটি পরিষ্কার প্রযুক্তির পথ প্রদান করে যা এটিকে সফ্টওয়্যার বিকাশের বিশ্বে বড় করে তুলতে পারে এবং গোপনীয়তা-প্রথম সমাধানগুলির একটি নতুন তরঙ্গের জন্ম দেয় যা যে কেউ অভূতপূর্ব স্বাচ্ছন্দ্যে তৈরি এবং চালাতে পারে।
শুধুমাত্র TFHE লুকআপ নেটওয়ার্কগুলিতে ফোকাস করে, আমি TFHE সমর্থন করতে পারে এমন কয়েকটির মধ্যে একটি কম্পিউটেশনাল মডেল ব্যবহার করেছি। যেহেতু গবেষণা ক্রমান্বয়ে এর আরও বেশি ক্ষমতা উন্মোচন করে, এতে কোনো সন্দেহ নেই যে TFHE যন্ত্রের নতুন উপায় পৃষ্ঠে উত্থাপিত হবে।
কোনটা আর কখন অন্য গল্প। কিন্তু সেই গল্পের পিছনে গোপনীয় কম্পিউটিংয়ের ভবিষ্যত সম্পর্কিত অন্যান্য উত্তেজনাপূর্ণ এবং সম্ভাব্য আলোকিত প্রশ্নগুলির একটি সম্পূর্ণ হোস্ট লুকিয়ে আছে।