মজিলার ইঞ্জিনিয়াররা ফায়ারফক্স এআই রানটাইমের গতি বাড়াতে এর ওয়েবঅ্যাসেম্বলি (WASM)-ভিত্তিক ব্যাকএন্ডকে নেটিভ সি++ ওএনএনএক্স (ONNX) রানটাইম দিয়ে প্রতিস্থাপন করেছে। এই স্থাপত্যগত পরিবর্তনের ফলে ডিভাইসে চলা মেশিন লার্নিং ফিচারগুলোর পারফরম্যান্স ২ থেকে ১০ গুণ বেড়েছে। এটি ওয়েবঅ্যাসেম্বলির ওয়ার্ম-আপ ওভারহেড দূর করেছে এবং হার্ডওয়্যার-নির্দিষ্ট সিপিইউ নির্দেশাবলী ব্যবহার করে মডেল এক্সিকিউশন দ্রুততর করেছে।
ফায়ারফক্সে WASM-এর বাধা
মজিলা ফায়ারফক্সের এআই ফিচার যেমন স্মার্ট ট্যাব গ্রুপিং এবং পিডিএফ.জেএস অল্ট-টেক্সটের জন্য প্রথমে ট্রান্সফরমার্স.জেএস ব্যবহার করেছিল, যা ওএনএনএক্স রানটাইমের ওয়েবঅ্যাসেম্বলি (WASM) বিল্ডের উপর নির্ভরশীল। এটি কার্যকর হলেও বেশ কিছু পারফরম্যান্স সমস্যা ছিল:
- জেএস/ওয়েবঅ্যাসেম্বলি সীমানার ওভারহেড: একটি সাধারণ ইনফারেন্স সাইকেলে প্রি-প্রসেসিং, মডেল এক্সিকিউশন এবং পোস্ট-প্রসেসিংয়ের জন্য জাভাস্ক্রিপ্ট এবং ওয়েবঅ্যাসেম্বলি লেয়ারের মধ্যে একাধিকবার যাতায়াত করতে হতো, যা এমনকি ওয়ার্ম ক্যাশেও লেটেন্সি তৈরি করতো।
- জেনেরিক সিমডি সীমাবদ্ধতা: ম্যাট্রিক্স মাল্টিপ্লিকেশনের মতো মূল হটস্পটগুলো ওয়েবঅ্যাসেম্বলিতে জেনেরিক সিমডি (SIMD) ব্যবহার করে বাস্তবায়িত হতো। এটি অ্যাপল সিলিকনের নিয়ন (NEON) বা আধুনিক ইন্টেল চিপের AVX-512-এর মতো হার্ডওয়্যার-নির্দিষ্ট ইনট্রিনসিক্সের পারফরম্যান্সের সঙ্গে পাল্লা দিতে পারতো না।
- ওয়ার্ম-আপ ট্যাক্স: প্রতিটি ফিচারের কোল্ড স্টার্টে জেএস/ওয়েবঅ্যাসেম্বলি ওয়ার্ম-আপের জন্য অতিরিক্ত সময় লাগতো।
মজিলা এর আগে ফায়ারফক্স ট্রান্সলেশনসে নেটিভ কোড ব্যবহার করে সাফল্য পেয়েছিল, যেখানে ওয়েবঅ্যাসেম্বলি বিল্ট-ইন ব্যবহার করে সি++-এ কল করা হতো। তবে, ওএনএনএক্স অপারেটরগুলো একে একে পোর্ট করার চেষ্টা “অরক্ষণীয়” বলে মনে হয়েছিল।
নেটিভ সি++ ইন্টিগ্রেশন কৌশল
মজিলা ফায়ারফক্স এআই-এর জন্য পুরো ব্যাকএন্ড প্রতিস্থাপনের সিদ্ধান্ত নিয়েছে, যা সম্ভব হয়েছে ট্রান্সফরমার্স.জেএস-এর “ছোট সারফেস” ইন্টারঅ্যাকশনের কারণে। মাইগ্রেশনের তিনটি প্রধান ধাপ ছিল:
- ফায়ারফক্স ট্রিতে সরাসরি ওএনএনএক্স রানটাইম সি++ ভেন্ডর করা।
- একটি পাতলা ওয়েবআইডিএল (WebIDL) লেয়ারের মাধ্যমে সি++ লাইব্রেরি জাভাস্ক্রিপ্টের কাছে উন্মুক্ত করা।
- ট্রান্সফরমার্স.জেএস-কে নতুন নেটিভ ব্যাকএন্ডের সাথে সংযুক্ত করা।
এই পদ্ধতি নিশ্চিত করেছে যে ফিচার-লেভেল কোডে কোনো পরিবর্তন ছাড়াই শুধুমাত্র await pipeline(…) কল করা যায়।
মূল রিপোজিটরির আকার বাড়ানো এবং বিল্ড প্রক্রিয়া ধীর করা এড়াতে ওএনএনএক্স রানটাইমের সোর্স কোড ট্রিতে যোগ করা হয়নি। পরিবর্তে, একটি কনফিগারেশন ফ্ল্যাগ মজিলার টাস্কক্লাস্টার সিআই (Taskcluster CI) সিস্টেম থেকে প্রি-কম্পাইলড লাইব্রেরি ডাউনলোড করার সুবিধা দেয়। এর জন্য ওএনএনএক্স-এর কিছু আপস্ট্রিম প্যাচ প্রয়োজন ছিল, যাতে এক্সেপশন এবং আরটিটিআই (RTTI) ছাড়া বিল্ড সমর্থন করে। বিল্ড কনফিগারেশন মিনসাইজরেল (MinSizeRel) এবং এলটিও (LTO) সহ সেট করা হয়েছে, যাতে বাইনারি সাইজ এবং গতির মধ্যে ভারসাম্য থাকে।
ফায়ারফক্স এআই রানটাইমের পারফরম্যান্স উন্নতি
মজিলা জানিয়েছে, নেটিভ সি++-এ স্থানান্তর ফায়ারফক্স এআই ফিচারগুলোর জন্য তাৎক্ষণিক সুবিধা এনেছে:
- পিডিএফ.জেএস অল্ট-টেক্সট: ইমেজ-টু-টেক্সট মডেলের লেটেন্সি একই হার্ডওয়্যারে ৩.৫ সেকেন্ড থ twoেকে মাত্র ৩৫০ মিলিসেকেন্ডে নেমেছে।
- স্মার্ট ট্যাব গ্রুপিং: টপিক মডেলের জন্য কোল্ড স্টার্ট লেটেন্সি ১৯২০.৯ মিলিসেকেন্ড (ওয়েবঅ্যাসেম্বলি) থেকে ৫৩২.২ মিলিসেকেন্ডে (ওএনএনএক্স নেটিভ) কমেছে। ওয়ার্ম ইনফারেন্স সময় ৩১.৪ মিলিসেকেন্ড থেকে ১৯.২ মিলিসেকেন্ডে কমেছে।
এই নতুন ব্যাকএন্ড ফায়ারফক্স ১৪২-এ স্মার্ট ট্যাব গ্রুপিং দিয়ে ধীরে ধীরে রোল আউট হচ্ছে।