অ্যাপল সিলিকনের জন্য অন-ডিভাইস ইনফারেন্স অপ্টিমাইজ করা

একটি কাস্টম লোকাল ইঞ্জিন যা প্রফিল এবং ডিকোড থ্রুপুট উন্নত করে।

লেখকগণPerplexity Engineering

অ্যাপল সিলিকনে হাইব্রিড কম্পিউট ক্লাউডে ফ্রন্টিয়ার ইন্টেলিজেন্স এবং ম্যাকের একটি লোকাল মডেলের মধ্যে একটি টাস্ক অর্কেস্ট্রেট করে। ক্লাউড মডেল গবেষণা এবং যুক্তি পরিচালনা করে, যখন একটি লোকাল মডেল ম্যাকের ব্যক্তিগত ফাইল এবং অ্যাপের সাথে কাজ করে।

শ্রমের এই বিভাজন নির্বিঘ্ন অনুভূত হওয়ার জন্য, লোকাল ইনফারেন্সকে বাকি কাজের সাথে তাল মিলিয়ে চলতে হবে। এর জন্য এমন একটি ইঞ্জিন প্রয়োজন যা দ্রুত প্রম্পট প্রসেস করতে পারে এবং একটি উচ্চ টোকেন-জেনারেশন হার বজায় রাখতে পারে।

আমাদের লাইটওয়েট লোকাল ইনফারেন্স ইঞ্জিন লিলি, বিশেষভাবে অ্যাপল সিলিকন এবং Qwen3.6-35B-A3B-এর জন্য তৈরি, যেখানে প্রফিল এবং ডিকোড-এর জন্য আলাদা অপ্টিমাইজেশন রয়েছে। ইঞ্জিনটি শীঘ্রই ওপেন-সোর্স করা হবে।

ভূমিকা

ম্যাকে LLM চালানোর একটি সাধারণ উপায় হলো অ্যাপল সিলিকনের জন্য অ্যাপলের ওপেন-সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক MLX ব্যবহার করা। এর সহায়ক লাইব্রেরি, MLX-LM, বিস্তৃত পরিসরের ভাষা মডেলের সাহায্যে টেক্সট লোড এবং জেনারেট করার জন্য প্রয়োজনীয় উপাদান যোগ করে। একসাথে, MLX এবং MLX-LM লোকাল LLM ইনফারেন্সের জন্য একটি অফ-দ্য-শেল্ফ, সাধারণ-উদ্দেশ্যমূলক স্ট্যাক সরবরাহ করে।

Qwen3.6-35B-A3B হলো একটি স্পার্স, হাইব্রিড মডেল: এটি মিক্সচার-অব-এক্সপার্টস (MoE) রাউটিং ব্যবহার করে এবং নির্দিষ্ট আকারের রিকারেন্ট স্টেটের সাথে ফুল অ্যাটেনশন যুক্ত করে। এই আর্কিটেকচারাল পছন্দগুলো প্রয়োজনীয় গণনার পরিমাণ কমায়, তবে এগুলো অনিয়মিত কাজের চাপও তৈরি করে। টোকেনগুলো বিভিন্ন বিশেষজ্ঞ ওজনের দিকে রাউট করে, এবং রিকারেন্ট স্টেটগুলো স্বভাবগতভাবেই সিকোয়েন্সিয়াল।

MLX-LM ইতিমধ্যে ইনফারেন্স ফেজ এবং সাধারণ কাজের চাপের আকৃতির জন্য অপ্টিমাইজ করা কার্নেল নির্বাচন করে, তবে এর পুনঃব্যবহারযোগ্য অপারেশনগুলোকে অবশ্যই অনেক মডেল আর্কিটেকচার সমর্থন করতে হবে। Qwen-এর জন্য উৎসর্গীকৃত একটি ইঞ্জিন মডেল এবং রানটাইম স্তরে বিশেষায়িত হতে পারে, মডেলের নির্দিষ্ট কাঠামোর চারপাশে কার্নেল, ডেটা মুভমেন্ট এবং শিডিউলিং সমন্বয় করতে পারে।

লিলি একটি একক প্রক্রিয়ায় এই বিশেষায়েশন এন্ড-টু-এন্ড বাস্তবায়ন করে। একটি রাস্ট রানটাইম মডেল চেকপয়েন্ট লোড করে এবং সেশন স্টেট ও জেনারেশন লুপ পরিচালনা করে, একটি OpenAI-সামঞ্জস্যপূর্ণ চ্যাট-কমপ্লেশন API অনুরোধ গ্রহণ করে এবং টোকেন স্ট্রিম করে, এবং কাস্টম মেটাল কার্নেল Qwen-নির্দিষ্ট অপারেশন চালায়। এক্সিকিউশন পথে পাইটর্চ বা MLX কোনটিই নেই।

দুটি ইনফারেন্স স্ট্যাকে জেনারেলাইজেশন এবং স্পেশালাইজেশন কোথায় অবস্থান করে। MLX-LM মডেলটিকে কম্পোজেবল MLX অ্যারে অপারেশন হিসেবে বর্ণনা করে, যা MLX রিইউজেবল কার্নেলের মাধ্যমে শিডিউল করে। পরিবর্তে Lily মডেলের গঠন, ফেজ-নির্দিষ্ট এক্সিকিউশন প্ল্যান এবং কার্নেল নির্বাচনকে Qwen এবং অ্যাপল সিলিকন-এর চারপাশে নির্মিত একটি একক Rust রানটাইমে স্থাপন করে।
দুটি ইনফারেন্স স্ট্যাকে জেনেরালাইসিটি এবং স্পেশালাইজেশন কোথায় থাকে। MLX-LM মডেলটিকে কম্পোজেবল MLX অ্যারে অপারেশন হিসেবে বর্ণনা করে, যা MLX পুনরায় ব্যবহারযোগ্য কার্নেলের মাধ্যমে শিডিউল করে। এর পরিবর্তে লিলি Qwen এবং অ্যাপল সিলিকনের চারপাশে তৈরি একটি একক রাস্ট রানটাইমে মডেল স্ট্রাকচার, ফেজ-নির্দিষ্ট এক্সিকিউশন প্ল্যান এবং কার্নেল নির্বাচন স্থাপন করে।

আমরা প্রফিল এবং ডিকোড পারফরম্যান্স আলাদাভাবে পরিমাপ করি। প্রফিল থ্রুপুট ক্যাপচার করে ইঞ্জিন কত দ্রুত প্রম্পট প্রসেস করে; ডিকোড থ্রুপুট ক্যাপচার করে এটি কত দ্রুত আউটপুট টোকেন জেনারেট করে।

আমরা ৪০-কোর জিপিইউ এবং ১২৮ জিবি ইউনিফাইড মেমোরিযুক্ত এম৫ ম্যাক্স চালিত একটি মাত্র ম্যাকবুক প্রো-তে Qwen3.6-35B-A3B বেঞ্চমার্ক করি। প্রফিল-এর জন্য দশটি প্রম্পট দৈর্ঘ্য এবং ডিকোড-এর জন্য দশটি কনটেক্সট দৈর্ঘ্য জুড়ে, ২৫৬ থেকে ১২৮কে টোকেন পর্যন্ত (কে = ১,০২৪), ইঞ্জিনটি গড়ে MLX-LM-এর প্রফিল থ্রুপুটের ১.২৩ গুণ এবং এর ডিকোড থ্রুপুটের ১.৩৫ গুণ দেয়। ৪কে-টোকেন প্রম্পট এবং ৪কে-টোকেন ডিকোড কনটেক্সটে, কাস্টম ইঞ্জিন প্রতি সেকেন্ডে ৫,৭৪৯.৯ প্রফিল টোকেন এবং প্রতি সেকেন্ডে ১৮৬.৬ ডিকোড টোকেন এ পৌঁছায়, যেখানে MLX-LM-এর ক্ষেত্রে তা যথাক্রমে ৪,৭৩৭.৫ এবং ১৪০.৯। একটি মাল্টি-টার্ন সেশনে, প্রতিটি অতিরিক্ত মডেল কলের সাথে এই সময় সাশ্রয় জমা হতে থাকে।

২৫৬ থেকে ১২৮কে টোকেন পর্যন্ত সমানভাবে ওজনযুক্ত দশটি দৈর্ঘ্যের জুড়ে পাটিগণিত গড় থ্রুপুট। লিলি (Lily) গড়ে ৪,১৫৬ প্রিফিল টোকেন/সেকেন্ডের বিপরীতে এমএলএক্স-এলএম (MLX-LM)-এর জন্য ৩,৩৮৮ (১.২৩×) এবং ১৭০.০ ডিকোড টোকেন/সেকেন্ডের বিপরীতে ১২৬.৪ (১.৩৫×) অর্জন করে। প্রিফিল প্রম্পটের দৈর্ঘ্য পরিবর্তন করে; ডিকোড কন্টেন্টের দৈর্ঘ্য পরিবর্তন করে।
২৫৬ থেকে ১২৮কে টোকেন পর্যন্ত দশটি সমান ওজনযুক্ত দৈর্ঘ্যের অ্যারিথমেটিক মিন থ্রুপুট। লিলি গড়ে প্রতি সেকেন্ডে ৪,১৫৬ প্রফিল টোকেন বনাম MLX-LM-এর জন্য ৩,৩৮৮ (১.২৩ গুণ), এবং প্রতি সেকেন্ডে ১৭০.০ ডিকোড টোকেন বনাম ১২৬.৪ (১.৩৫ গুণ) দেয়। প্রফিল প্রম্পটের দৈর্ঘ্য পরিবর্তন করে; ডিকোড কনটেক্সটের দৈর্ঘ্য পরিবর্তন করে।

এরপরে, আমরা ব্যাখ্যা করি কীভাবে Qwen-এর আর্কিটেকচার অ্যাপল সিলিকনে মডেল-নির্দিষ্ট অপ্টিমাইজেশনের সুযোগ তৈরি করে। এরপর আমরা ফলস্বরূপ প্রফিল এবং ডিকোড পরিবর্তনের মধ্য দিয়ে যাই। MLX-LM-এর বিরুদ্ধে একটি এন্ড-টু-এন্ড তুলনার সাথে শেষ করার আগে অতিরিক্ত অপ্টিমাইজেশন কখন ফল দেওয়া বন্ধ করে আমরা তাও কভার করি।

অ্যাপল সিলিকনে Qwen-নির্দিষ্ট অপ্টিমাইজেশনের সুযোগ

Qwen তিনটি স্বতন্ত্র কাজের চাপের আকৃতি তৈরি করে

Qwen3.6-35B-A3B তে ৩৫ বিলিয়ন প্যারামিটার রয়েছে কিন্তু প্রতিটি টোকেনের জন্য মাত্র ৩ বিলিয়ন বা তার কম সক্রিয় করে। একটি রাউটার ২৫৬টি এক্সপার্ট সাবনেটওয়ার্ক স্কোর করে এবং আটটি নির্বাচন করে, সাথে একটি শেয়ার করা এক্সপার্ট থাকে যা প্রতিটি টোকেন প্রসেস করে। এই স্পার্স MoE ডিজাইন গণনা কমায় কিন্তু অসম কাজ তৈরি করে: এক্সপার্টগুলো বিভিন্ন সংখ্যার টোকেন পায়, এবং প্রতিটি টোকেনের জন্য এক্সপার্টগুলোর একটি ভিন্ন সংমিশ্রণ থেকে ওজনের প্রয়োজন হয়।

Qwen ১০টি ফুল-অ্যাটেনশন লেয়ারের সাথে ৩০টি Gated DeltaNet লেয়ারও একত্রিত করে। এই দুটি লেয়ারের ধরন বিভিন্ন উপায়ে আগের তথ্য ধরে রাখে।

অ্যাটেনশন লেয়ারগুলো গ্রুপড-কোয়েরি অ্যাটেনশন (GQA) ব্যবহার করে। Qwen-এর ১৬টি কুয়েরি হেড এবং দুটি কি–ভ্যালু (KV) হেড রয়েছে, যেখানে আটটি কুয়েরি হেড প্রতিটি কেভি হেড শেয়ার করে। শেয়ারিং কেভি ক্যাশ ছোট করে এবং ক্যাশ করা ডেটাকে কুয়েরি হেড জুড়ে পুনরায় ব্যবহার করার অনুমতি দেয়। ক্যাশটি এখনও প্রতিটি টোকেনের জন্য নতুন কি এবং ভ্যালু সংরক্ষণ করে, তাই কনটেক্সট বাড়ার সাথে সাথে প্রতিটি ডিকোড ধাপ বেশি ডেটা পড়ে।

Gated DeltaNet এর পরিবর্তে আগের তথ্যকে একটি নির্দিষ্ট আকারের রিকারেন্ট স্টেটে সংকুচিত করে। একটি শেখা গেট বিদ্যমান স্টেটের কতটুকু ধরে রাখতে হবে তা নিয়ন্ত্রণ করে, যখন একটি ডেল্টা আপডেট বর্তমান টোকেন থেকে তথ্য অন্তর্ভুক্ত করে। মডেল এই আপডেটগুলোকে রিকারেন্টভাবে সংজ্ঞায়িত করে, তাই প্রতিটি টোকেন পূর্ববর্তী টোকেন দ্বারা উৎপাদিত স্টেটের ওপর নির্ভর করে। প্রফিলের সময় অবশ্য একটি ইঞ্জিন একই গণভ্য দুটি উপায়ে মূল্যায়ন করতে পারে। এটি স্টেট সামনে বহন করার সময় সরাসরি টোকেনগুলোর মধ্য দিয়ে স্ক্যান করতে পারে, অথবা আপডেটগুলোকে এমন ব্লকে পুনর্গঠন করতে পারে যা আরও ম্যাট্রিক্স অপারেশন এবং টোকেন-স্তরের সমান্তরালতা প্রকাশ করে। কোন দৃষ্টিভঙ্গি দ্রুততর তা মডেলের মাত্রা, কাজের চাপ এবং হার্ডওয়্যারের ওপর নির্ভর করে।

একসাথে, এই স্ট্রাকচারগুলো তিনটি কম্পিউটেশনাল প্যাটার্ন তৈরি করে: অসম বিশেষজ্ঞ গ্রুপ, ক্রমবর্ধমান ক্যাশের ওপর অ্যাটেনশন, এবং একটি নির্দিষ্ট আকারের রিকারেন্স যা সরাসরি বা ব্লকে মূল্যায়ন করা যেতে পারে।

অ্যাপল সিলিকন বিভিন্ন কাজের চাপের জন্য বিভিন্ন পথ সরবরাহ করে

প্রফিল একবারে অনেক প্রম্পট টোকেন অ্যাক্টিভেশন সারি প্রসেস করে। এখানে বিবেচনা করা লোকাল কাজের চাপ সাধারণত একবারে একটি অনুরোধ ডিকোড করে (ব্যাচ ১) এবং প্রতি ধাপে একটি নতুন সারি প্রসেস করে। এই পার্থক্যটি পরিবর্তন করে কীভাবে একই মডেল ওজন ব্যবহার করা হয়। প্রফিল শত শত বা হাজার হাজার সারি জুড়ে ওজনের প্রতিটি ব্লক পুনরায় ব্যবহার করতে পারে। ডিকোড মূলত তা পারে না, যেহেতু প্রতিটি নতুন টোকেনের জন্য ওজনের মধ্য দিয়ে আরেকটি পাসের প্রয়োজন হয়।

অ্যাপল সিলিকন সিপিইউ এবং জিপিইউকে ইউনিফাইড মেমরির পেছনে রাখে, যা উভয়ের জন্য অ্যাক্সেসযোগ্য একটি একক শারীরিক মেমোরি পুল। এটি একটি পৃথক জিপিইউ কপি রক্ষণাবেক্ষণ না করেই মডেলটিকে রেসিডেন্ট থাকতে দেয়, তবে এটি ডেটা মুভমেন্টকে বিনামূল্যে করে না। ওজন এবং মধ্যবর্তী ভ্যালু পড়া এখনও মেমোরি ব্যান্ডউইথ খরচ করে, যখন রেজিস্টার এবং অন্যান্য অন-চিপ স্টোরেজ দ্রুততর কিন্তু অনেক ছোট।

M5 জিপিইউ বিভিন্ন কম্পিউট পাথও সরবরাহ করে। প্রফিলের লিনিয়ার লেয়ারগুলো সাধারণ ম্যাট্রিক্স–ম্যাট্রিক্স মাল্টিপ্লিকেশন (GEMM) ব্যবহার করে, একবারে বহু সারিতে একটি ওজন ম্যাট্রিক্স প্রয়োগ করে। সামঞ্জস্যপূর্ণ GEMM-গুলো মেটাল ৪ টেনসর অপারেশন-এর মাধ্যমে প্রতিটি জিপিইউ কোরে নিউরাল অ্যাকিলারেটর ব্যবহার করতে পারে। ব্যাচ-১ ডিকোড এর পরিবর্তে সাধারণ ম্যাট্রিক্স–ভেক্টর মাল্টিপ্লিকেশন (GEMV) ব্যবহার করে, একটি সারিতে একই ওজন প্রয়োগ করে। অল্প ওজন পুনঃব্যবহারের সাথে, GEMV মূলত মেমোরি ব্যান্ডউইথ দ্বারা সীমাবদ্ধ এবং বৃহত্তর ডেটা পুনঃব্যবহার সহ ম্যাট্রিক্স অপারেশনের জন্য ডিজাইন করা নিউরাল অ্যাকিলারেটরের চেয়ে জিপিইউ-এর ভেক্টর অ্যারিথমেটিক লজিক ইউনিট (ALU)-এর জন্য বেশি উপযুক্ত।

এই এক্সিকিউশন পাথগুলো শুধুমাত্র লিলি-র জন্যই অনন্য নয়। MLX একই ইউনিফাইড মেমোরির ওপর কাজ করে এবং কাজের চাপের আকৃতি অনুযায়ী অপ্টিমাইজ করা ম্যাট্রিক্স ও ভেক্টর কার্নেল নির্বাচন করে। MLX-LM-এর Qwen বাস্তবায়ন ইতিমধ্যে বিশেষজ্ঞের কাজ গ্রুপ করে, একটি ফিউজড রিকারেন্ট মেটাল কার্নেলের সাথে Gated DeltaNet মূল্যায়ন করে, এবং GQA-সচেতন অ্যাটেনশন ব্যবহার করে। এই ক্ষমতাগুলো অ্যাপল সিলিকনে দক্ষ Qwen ইনফারেন্সের জন্য শেয়ার করা সূচনা বিন্দু।

অপ্টিমাইজেশন কৌশল

লিলি-র সংকীর্ণ পরিধি এটিকে Qwen-এর সঠিক আর্কিটেকচার এবং মাত্রার চারপাশে এই শেয়ার করা এক্সিকিউশন পাথগুলোকে সমন্বয় করতে দেয়। এটি ফেজ-নির্দিষ্ট জিপিইউ পাথ ব্যবহার করে, ডেটা মুভমেন্ট কমাতে Qwen-এর বিশেষজ্ঞ, রিকারেন্ট এবং অ্যাটেনশন কাজের চাপ ম্যাপ করে, এবং পরিমাপ করা কাজের চাপের আকৃতি থেকে কার্নোল ও লেআউট নির্বাচন করে। কৌশলটির তিনটি অংশ রয়েছে:

  1. ইনফারেন্স ফেজের সাথে জিপিইউ পাথ মেলান। প্রফিল যখন বহু সারি জুড়ে ওজন পুনরায় ব্যবহার করতে পারে তখন ম্যাট্রিক্স-ভিত্তিক এক্সিকিউশন ব্যবহার করুন, এবং ব্যাচ-১ ডিকোড যখন একবারে একটি সারি প্রসেস করে তখন ভেক্টর-ভিত্তিক এক্সিকিউশন ব্যবহার করুন।
  2. ডেটা মুভমেন্ট কম করার সময় Qwen-এর কাঠামো জিপিইউতে ম্যাপ করুন। ওজন ব্যবহার না হওয়া পর্যন্ত সংকুচিত রাখুন, সিপিইউতে ফিরে না গিয়ে রাউট করা এক্সপার্ট কাজ সংগঠিত করুন, এর রিকারেন্ট স্ক্যান জুড়ে Gated DeltaNet স্টেট অন-চিপ ধরে রাখুন, এবং গ্রুপড-কোয়েরি অ্যাটেনশন দ্বারা শেয়ার করা কেভি ডেটা পুনরায় ব্যবহার করুন।
  3. কাজের চাপের আকৃতির সাথে কার্নেল মেলান। প্রতিটি ফেজের মধ্যে, উপলব্ধ সারির গণনা, বিশেষজ্ঞদের জুড়ে সারির বিতরণ, অপারেশনের মাত্রা, এবং বর্তমান কনটেক্সট দৈর্ঘ্য থেকে টাইল সাইজ, এক্সিকিউশন লেআউট এবং অ্যাটেনশন পাথ নির্বাচন করুন।

নিম্নলিখিত বিভাগগুলো এই পছন্দগুলো ব্যাখ্যা করে। একটি M5 Max-এ মিলে যাওয়া অ্যাবলেশনে মূল্যায়ন করা অপ্টিমাইজেশনের জন্য, আমরা অন্যথায় অভিন্ন ইঞ্জিন কনফিগারেশনগুলোর তুলনা করে তাদের প্রভাব অনুমান করি যা শুধুমাত্র অধ্যয়নাধীন অপ্টিমাইজেশনে আলাদা। যেহেতু এই পরীক্ষাগুলো আমাদের ইঞ্জিনের সংস্করণগুলোর সাথে নিজেদের তুলনা করে, তাই এগুলো MLX-LM-এর বিরুদ্ধে চূড়ান্ত ফলাফলের পতন ঘটানোর পরিবর্তে মেকানিজমগুলো ব্যাখ্যা করে।

প্রফিল: ওজন পুনরায় ব্যবহার করুন এবং জিপিইউতে রাউটিং রাখুন

প্রফিল একবারে অনেক টোকেন সারি প্রকাশ করে, কিন্তু Qwen সেই সারিগুলোকে বিশেষজ্ঞদের জুড়ে অসমভাবে রাউট করে এবং সিকোয়েন্সের মাধ্যমে রিকারেন্ট স্টেট আপডেট করে। এর অপ্টিমাইজেশনগুলো তিনটি গ্রুপে পড়ে: রাউট করা সারির চারপাশে স্পার্স এক্সপার্ট কাজ সংগঠিত করুন, Gated DeltaNet স্ক্যান অন চিপ রাখুন, এবং দীর্ঘ প্রম্পটগুলোকে বাউন্ড করা চাংকে ভাগ করুন।

একটি Qwen স্তরের মধ্য দিয়ে যাওয়া একটি বাউন্ডেড প্রিফিল চাংকের জন্য এক্সিকিউশন এবং ডেটা রেসিডেন্সি। অ্যাটেনশন কেভি ক্যাশ প্রসারিত করে, অন্যদিকে গেটেড ডেল্টানেট রেজিস্টারে এর ওয়ার্কিং রিকারেন্ট স্টেট বহন করে। এক্সপার্ট-রাউটিং মেটাডেটা জিপিইউ-তে থেকে যায়, Q4 ওজনগুলো গ্রুউড GEMM-এর ভিতরে ডিকোয়ান্টাইজ না হওয়া পর্যন্ত প্যাক করা থাকে এবং অস্থায়ী অ্যাক্টিভেশন বর্তমান চাংকের মধ্যে সীমাবদ্ধ থাকে।
একটি Qwen লেয়ারের মাধ্যমে একটি বাউন্ড করা প্রফিল চাংকের জন্য এক্সিকিউশন এবং ডেটা রেসিডেন্সি। অ্যাটেনশন কেভি ক্যাশ প্রসারিত করে, যখন Gated DeltaNet এর কাজের রিকারেন্ট স্টেট রেজিস্টারে বহন করে। এক্সপার্ট-রাউটিং মেটাডেটা জিপিইউতে থাকে, গ্রুপ করা GEMM-এর ভেতরে ডিকুয়ান্টাইজ না হওয়া পর্যন্ত Q4 ওজন প্যাক করা থাকে, এবং অস্থায়ী অ্যাক্টিভেশন বর্তমান চাংকে সীমাবদ্ধ থাকে।

স্পার্স এক্সপার্ট গণনা অপ্টিমাইজ করুন

ম্যাট্রিক্স গুণের সময় ওজন ডিকুয়ান্টাইজ করুন

Qwen3.6-35B-A3B চেকপয়েন্ট গ্রুপওয়াইজ অ্যাফাইন ৪-বিট কোয়ান্টাইজেশন ব্যবহার করে। প্রতিটি ওজন একটি ৪-বিট পূর্ণসংখ্যা কোড হিসেবে সংরক্ষিত হয়, যেখানে ৬৪টি ওজনের প্রতিটি গ্রুপ এর মান পুনর্গঠন করতে ব্যবহৃত একটি bfloat16 স্কেল এবং বায়াস শেয়ার করে। এটি ৩৫-বিলিয়ন-প্যারামিটার মডেলটিকে প্রায় ৭০ জিবি bfloat16 ওজন থেকে ১৯.৪ জিবি চেকপয়েন্টে নামিয়ে আনে, যা মডেলে ম্যাকে রেসিডেন্ট রাখা বাস্তবসম্মত করে তোলে।

ম্যাট্রিক্স গুণের জন্য ব্যবহৃত মেটাল ৪ টেনসর অপারেশন প্যাক করা ৪-বিট উপস্থাপনার পরিবর্তে bfloat16 অপারেন্ড ব্যবহার করে। গুণের আগে, জিপিইউকে অবশ্যই bfloat16-এ ওজনগুলো পুনর্গঠন করতে হবে। লিলি-র অপ্টিমাইজ করা গ্রুপ করা GEMM একবারে একটি ছোট ওজন টাইলে এই রূপান্তর সম্পাদন করে এবং রাউট করা অ্যাক্টিভেশন সারির সাথে গুণ করার জন্য যথেষ্ট সময় অন-চিপ থ্রেডগ্রুপ মেমরিতে ফলাফল ধরে রাখে। অ্যাকুমুলেশন ৩২-বিট ফ্লোটিং পয়েন্ট ব্যবহার করে, এবং আউটপুট bfloat16-এ লেখা হয়। সম্পূর্ণ প্রসারিত ওজন অ্যারে ইউনিফাইড মেমরিতে কখনো তৈরি হয় না।

অ্যাবলেশনে, ডিকুয়ান্টাইজেশন একটি পৃথক অপারেশন হিসেবে চলে: এটি ইউনিফাইড মেমরিতে ৪-বিট ওজনগুলোকে একটি bfloat16 অ্যারেতে প্রসারিত করে, যার পরে ম্যাট্রিক্স কার্নেল সেই অ্যারেটি ফিরে পড়ে। একটি ৫১২-টোকেন প্রম্পটে, গ্রুপ করা GEMM-এর ভেতরে ডিকুয়ান্টাইজেশন সরানো এই মধ্যবর্তী রাইট এবং রিড দূর করে এন্ড-টু-এন্ড প্রফিল থ্রুপুট ৭৭.৪% বৃদ্ধি করেছে।

জিপিইউতে এক্সপার্ট রাউটিং রাখুন

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

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

একটি ৫১২-টোকেন প্রম্পটে, জিপিইউ-রেসিডেন্ট রাউটিং সক্ষম করা এন্ড-টু-এন্ড প্রফিল ৮৯% বৃদ্ধি করেছে। এটি এটিও দেখায় কেন একা কার্নেল কাউন্ট বিভ্রান্তিকর হতে পারে: দ্রুততর রুট আরও কার্নেল চালু করে কিন্তু লেয়ারের ভেতরে কখনো সিপিইউ-এর জন্য অপেক্ষা করে না।

বিশেষজ্ঞ লোডের সাথে টাইলের আকার মেলান

একটি ২কে-টোকেন প্রম্পটে, ২৫৬টি এক্সপার্টের মধ্যে আটটিতে প্রতিটি টোকেন রাউট করলে ১৬,৩৮৪টি টোকেন-এক্সপার্ট অ্যাসাইনমেন্ট তৈরি হয়, বা প্রতি এক্সপার্টে গড়ে ৬৪টি অ্যাক্টিভেশন সারি হয়। প্রকৃত বিতরণ অসম: কিছু এক্সপার্ট অনেক সারি পায়, আবার অন্যরা কম পায়।

গ্রুপ করা GEMM প্রতিটি এক্সপার্টের আউটপুটকে টাইলে ভাগ করে, যা হলো একটি ম্যাট্রিক্স গুণের আউটপুটের ছোট আয়তাকার ব্লক। প্রতিটি টাইল একটি জিপিইউ থ্রেডগ্রুপে বরাদ্দ করা হয়। অ্যাপল সিলিকনের জিপিইউতে, একটি থ্রেডগ্রুপে এক বা একাধিক সিম্ডগ্রুপ থাকে, প্রতিটিতে ৩২টি থ্রেড থাকে যা লকস্টেপে নির্দেশাবলী নির্বাহ করে।

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

একটি অ্যাবলেশন ১৬ সারিতে টাইল ঠিক করে। সেই নিয়ন্ত্রণের বিরুদ্ধে, চারটি সিম্ডগ্রুপ সহ ৩২-সারির টাইল সক্ষম করা ২কে টোকেনে এন্ড-টু-এন্ড প্রফিল ১৩.২% উন্নত করেছে।

রিকারেন্ট স্টেট অন-চিপ রাখুন

প্রফিলের সময়, প্রতিটি Gated DeltaNet লেয়ার এর রিকারেন্ট স্টেট সামনে বহন করার সময় ক্রমানুসারে প্রম্পট স্ক্যান করে। রেজিস্টার রেসিডেন্সি নিষ্ক্রিয় থাকায়, অ্যাবলেশনটি একটি ব্লকওয়াইজ স্ক্যান ব্যবহার করে। একটি ২কে-টোকেন প্রম্পটে, সেই পথ প্রতি লেয়ারে ২৫৬ MiB (মেবিবাইট) স্টেট সরায় এবং বারবার ব্যারিয়ারে সহযোগিতাকারী থ্রেডগুলোকে থামায়, যেগুলো হলো সিঙ্ক্রোনাইজেশন পয়েন্ট যেখানে সমস্ত অংশগ্রহণকারী থ্রেডকে একে অপরের জন্য অপেক্ষা করতে হয়।

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

স্টেট এবং এর গেট একটি ৩২-বিট ফ্লোটিং-পয়েন্ট ফরম্যাট ব্যবহার করে কারণ ছোট ছোট রাউন্ডিং ত্রুটিগুলো সিকোয়েন্সিয়াল আপডেটের মাধ্যমে যৌগিক হয়। কুয়েরি এবং কেভি অ্যাক্টিভেশন bfloat16-এ থাকে।

একটি ২কে-টোকেন প্রম্পটে, রেজিস্টার-রেসিডেন্ট স্ক্যান সক্ষম করা এন্ড-টু-এন্ড প্রফিল ৫.৬% উন্নত করেছে। বিশেষজ্ঞ GEMM প্রফিলের সময়ের প্রায় ৯০% অংশ নিয়েছিল। সিকোয়েন্সিয়াল স্ক্যান নিউরাল অ্যাকিলারেটরগুলো থেকে উপকৃত হওয়ার জন্য পর্যাপ্ত পুনঃব্যবহারযোগ্য ম্যাট্রিক্স কাজ প্রকাশ করে না।

প্রম্পট চাংকিংয়ের সাথে অস্থায়ী মেমোরি সীমিত করুন

রানটাইমটি মেমরিতে একবারে প্রতিটি প্রম্পট টোকেনের জন্য অস্থায়ী ডেটা রাখার পরিবর্তে একটি দীর্ঘ প্রম্পটকে বাউন্ড করা চাংকের সিকোয়েন্স হিসেবে প্রসেস করে। মডেল ওজন ইউনিফাইড মেমরিতে রেসিডেন্ট থাকে, যখন রিকারেন্ট স্টেট এবং কেভি ক্যাশ একটি চাংক থেকে পরবর্তী চাংকে কনটেক্সট বহন করে। পূর্ববর্তী কোনো কনটেক্সট বাতিল করা হয় না।

চাংকিং ছাড়া, অস্থায়ী অ্যাক্টিভেশন অ্যারে সম্পূর্ণ প্রম্পটের সাথে বৃদ্ধি পায় এবং ইউনিফাইড মেমোরির জন্য মডেল ওজন, রিকারেন্ট স্টেট এবং কেভি ক্যাশের সাথে প্রতিযোগিতা করে। চাংকিং একবারে মাত্র একটি সেগমেন্টের অস্থায়ী ভ্যালু লাইভ রাখে, তারপর পরবর্তী সেগমেন্ট প্রসেস করার আগে সেই স্টোরেজ রিলিজ বা পুনরায় ব্যবহার করে। এটি পিক ওয়ার্কিং মেমোরি সীমাবদ্ধ করে এবং ইঞ্জিনকে মডেলের আউটপুট পরিবর্তন না করেই দীর্ঘ প্রম্পট প্রসেস করতে দেয়।

চাংক করা প্রফিল অনেক ইঞ্জিনে জনপ্রিয় এবং এই মেমোরি-সীমাবদ্ধ পরিবেশগুলোতে দীর্ঘ মাল্টি-টার্ন ট্র্যাজেক্টরি পরিবেশন করার জন্য অত্যন্ত গুরুত্বপূর্ণ। আগের চাংকের বারবার কেভি লোড থেকে কিছু অতিরিক্ত ওভারহেড সহ, অ্যাটেনশন লেয়ারের জন্য মোট প্রফিল সময় প্রম্পট দৈর্ঘ্যে দ্বিঘাত থাকে।

ডিকোড: প্রতি টোকেনে স্থানান্তরিত বাইট কম করুন

ব্যাচ-১ ডিকোড একবারে একটি নতুন সারি প্রসেস করে। অল্প ওজন পুনঃব্যবহারের সাথে, এর থ্রুপুট মূলত নির্ভর করে ইঞ্জিন প্রতিটি টোকেনের জন্য কত বাইট সরায় তার ওপর। ডিকোড পরিবর্তনগুলো চারটি গ্রুপে পড়ে: এক-রো ওজন পথ অপ্টিমাইজ করুন, প্রতিটি ধাপ জিপিইউতে রাখুন, মধ্যবর্তী এবং স্টেট ট্রাফিক হ্রাস করুন, এবং দক্ষতার সাথে অ্যাটেনশন ক্যাশ পড়ুন।

একটি ব্যাচ-১ ডিকোড ধাপের জন্য ডেটা ফ্লো এবং দুটি মেকানিজম যা নিষ্ক্রিয় সময় এবং ক্যাশ ট্রাফিক হ্রাস করে। (এ) জিপিইউ (GPU) অ্যাটেনশন, গেটেড ডেল্টানেট, রাউটিং এবং ফিউজড এক্সপার্ট কার্নেলের মাধ্যমে কিউ৪ (Q4) ওজন এবং মডেল স্টেট স্ট্রিম করে, তারপরে নির্বাচিত টোকেনটিকে সরাসরি পরবর্তী ধাপের ইনপুট স্লটে লেখে এবং একই সাথে সিপিইউ (CPU)-তে একটি কপি পাঠায়। (বি) ডিপেন্ডেন্সি-সচেতন সিডিউলিং স্বাধীন কার্নেলগুলোকে ওভারল্যাপ করতে দেয়। (সি) জিকিউএ (GQA) প্যাকিং চারটি কুয়েরি হেডকে প্রতিটি কেভি-রো লোড শেয়ার করতে দেয়, যার ফলে আটটি স্বাধীন অনুরোধ দুটি শেয়ার্ড লোডে নেমে আসে।
একটি ব্যাচ-১ ডিকোড ধাপের জন্য ডেটা ফ্লো এবং দুটি মেকানিজম যা অলস সময় এবং ক্যাশ ট্রাফিক কমায়। (এ) জিপিইউ অ্যাটেনশন, গেটেড ডেলটানেট, রাউটিং এবং ফিউজড এক্সপার্ট কার্নেলের মাধ্যমে Q4 ওজন এবং মডেল স্টেট স্ট্রিম করে, তারপরে পরবর্তী ধাপের ইনপুট স্লটে সরাসরি নির্বাচিত টোকেন লেখে এবং একই সাথে সিপিইউতে একটি কপি পাঠায়। (বি) ডিপেনডেন্সি-অ্যাওয়্যার শিডিউলিং স্বাধীন কার্নেলগুলোকে ওভারল্যাপ করতে দেয়। (সি) GQA প্যাকিং চারটি কুয়েরি হেডকে প্রতিটি KV-row লোড শেয়ার করতে দেয়, যা আটটি স্বাধীন অনুরোধকে দুটি শেয়ার করা লোডে নামিয়ে আনে।

এক-রো ওজন পথ অপ্টিমাইজ করুন

MLX ইতিমধ্যে বিশেষায়িত ম্যাট্রিক্স-ভেক্টর কার্নেলে এক-রো কাজ ডিসপ্যাচ করে। যেহেতু লিলি MLX ব্যবহার করে না, তাই কাস্টম রানটাইমকে অবশ্যই একই মৌলিক কৌশল প্রদান করতে হবে। আমাদের রো-প্যারালাল GEMV একটি অ্যাক্টিভেশন সারির জন্য ডিজাইন করা হয়েছে। একটি সিম্ডগ্রুপ সমান্তরালভাবে ওজন ম্যাট্রিক্সের বিভিন্ন অংশ পড়ার সময় আউটপুটে সহযোগিতা করে।

প্রতিটি ডিকোড ধাপ জিপিইউতে রাখুন

টোকেন হ্যান্ডঅফ জিপিইউতে রাখুন

প্রতিটি ডিকোড ধাপ পরবর্তী টোকেন নির্বাচন করার মাধ্যমে শেষ হয়; নিম্নলিখিত ধাপটি ইনপুট হিসেবে সেই টোকেন দিয়ে শুরু হয়। নির্বাচনটি সিপিইউতে এবং তারপর আবার জিপিইউতে পাঠানো প্রতিটি টোকেনে একটি সিঙ্ক্রোনাইজেশন পয়েন্ট যোগ করে। আমাদের রানটাইম এর পরিবর্তে দুটি কমান্ড বাফার এবং দুটি জিপিইউ-রেসিডেন্ট টোকেন স্লটের মধ্যে বিকল্প হিসেবে কাজ করে। জিপিইউ সর্বোচ্চ স্কোরিং টোকেন নির্বাচন করে এবং পরবর্তী ডিকোড ধাপের ইনপুট স্লটে সরাসরি এর টোকেন আইডি লেখে, যখন সিপিইউ পরবর্তী কাজ প্রস্তুত করে।

স্বাধীন জিপিইউ কাজ ওভারল্যাপ করুন

একটি রেকর্ড করা ব্যাচ-১ ডিকোড ধাপে, একটি টোকেন জেনারেট করা ৭৯৫টি জিপিইউ কার্নেল চালু করেছে। তাদের ডিপেনডেন্সিগুলো ৫৫৫টি সিকোয়েন্সিয়াল স্টেজ তৈরি করেছে, যা কিছু কার্নেলকে একযোগে চালানোর জন্য মুক্ত রেখেছে। তা সত্ত্বেও মেটালের সিরিয়াল এক্সিকিউশন মোড প্রতিটি কার্নেল ক্রমানুসারে চালিয়েছে।

অপ্টিমাইজ করা ডিকোড পাথ একটি সমসাময়িক মেটাল পাসে প্রকৃত ডেটা ডিপেনডেন্সি রেকর্ড করে। জিপিইউ সম্পদ অনুমতি দিলে স্বাধীন কার্নেল লঞ্চ একই সময়ে চলতে পারে। পরবর্তী কাজের আগের ফলাফলের প্রয়োজন হলেই কেবল একটি ব্যারিয়ার সন্নিবেশ করা হয়।

মধ্যবর্তী এবং স্টেট ট্রাফিক হ্রাস করুন

পৃথক কার্নেলগুলো প্রায়ই একটি মধ্যবর্তী ম্যাটেরিয়ালাইজ করে: একটি কার্নেল মেমরিতে একটি অস্থায়ী ফলাফল লেখে, এবং পরবর্তীটি ফলাফলটি ফিরে পড়ে। অপ্টিমাইজ করা ডিকোড পাথ চারটি চেইন ফিউজ করে: গেটেড অ্যাক্টিভেশনের সাথে দুটি এক্সপার্ট ইনপুট প্রজেকশন; রাউটিং স্কোর এবং শেয়ার করা-এক্সপার্ট ফলাফলের সাথে এক্সপার্ট আউটপুট প্রজেকশন; অ্যাটেনশনের আগে কুয়েরি এবং কেভি প্রস্তুতি; এবং এর নরমালাইজেশনের সাথে রিকারেন্ট আপডেট। প্রতিটি ফিউজড কার্নেল মেমরির মাধ্যমে পাঠানোর পরিবর্তে রেজিস্টারে অস্থায়ী ভ্যালুগুলো রাখে।

ফিউশন ডিপেনডেন্সি গ্রাফটিকেও ছোট করে: যখন একটি মধ্যবর্তী রাইট অদৃশ্য হয়ে যায়, তখন এর কনজিউমারকে সুরক্ষা দেওয়া ব্যারিয়ারটিও অদৃশ্য হয়ে যায়।

অ্যাটেনশন ক্যাশ দক্ষতার সাথে পড়ুন

অ্যাটেনশন-ক্যাশ পড়া কোয়ালেস করুন

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

bfloat16 কনফিগারেশনে, কোয়ালেসিং কী ব্যান্ডউইথ ৩৩.৮ থেকে বাড়িয়ে ৪৭.৯ GB/s করেছে, ভ্যালু ব্যান্ডউইথ ৪২.০ থেকে বাড়িয়ে ৬১.৮ GB/s করেছে, এবং ৩,৮৪০-টোকেন কনটেক্সটে এন্ড-টু-এন্ড ডিকোড ২.১% উন্নত করেছে।

KV রো পুনরায় ব্যবহার করতে কুয়েরি হেড প্যাক করুন

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

এই কৌশলটি, সাধারণত GQA প্যাকিং বলা হয়, আটটি স্বাধীন কেভি অনুরোধকে দুটি শেয়ার করা লোডে নামিয়ে আনার সময় একই পাটিগণিত সম্পাদন করে এবং অভিন্ন আউটপুট বাইট তৈরি করে। আনপ্যাক করা অ্যাবলেশনের বিরুদ্ধে, এটি একটি ৩২কে-টোকেন কনটেক্সটে এন্ড-টু-এন্ড ডিকোড থ্রুপুট ২৩.৮% উন্নত করেছে।

দীর্ঘ কনটেক্সটে অ্যাটেনশন লেআউট পরিবর্তন করুন

ফুল-অ্যাটেনশন লেয়ারে প্রতিটি ডিকোড ধাপ বিদ্যমান কেভি ক্যাশ স্ক্যান করে। একটি ফিক্সড-ব্লক লেআউট সেই ক্যাশটিকে সমান টুকরোতে ভাগ করে যা জিপিইউ সমান্তরালভাবে প্রসেস করতে পারে। ক্যাশ ছোট হলে এর অতিরিক্ত শিডিউলিং মূল্যবান হয় না, তবে কনটেক্সট বাড়ার সাথে সাথে ফিক্সড-ব্লক লেআউট কাজটি আরও সমানভাবে ভারসাম্য বজায় রাখে।

এই মডেলের জন্য, রানটাইম সাধারণ অ্যাটেনশন পাথ ৩২কে টোকেনের নিচে রাখে এবং ৩২কে বা তার বেশি হলে ফিক্সড-ব্লক পাথ ব্যবহার করে। সুইচটি প্রযোজ্য হয় যখন প্রতিটি হেডের ২৫৬টি ভ্যালু থাকে এবং আটটি কুয়েরি হেড একটি কেভি হেড শেয়ার করে; অন্যান্য আকৃতি সাধারণ পথেই থাকে। একটি অ্যাবলেশন এই সুইচটি নিষ্ক্রিয় করে এবং সর্বদা সাধারণ পথ ব্যবহার করে। ফিক্সড-ব্লক রুট সক্ষম করা ৩২কে তে এন্ড-টু-এন্ড ডিকোড ৭.৭%, ৬৪কে তে ২৭.৪%, এবং ১২৮কে তে ৪০.২% উন্নত করেছে।

আরও অপ্টিমাইজেশনের সীমা

কিছু পরিবর্তন একটি বিচ্ছিন্ন অপারেশন উন্নত করেছে কিন্তু এন্ড-টু-এন্ড ইনফারেন্স উন্নত করেনি।

স্পেকুলেটিভ ডিকোডিং, যা যাচাই করার জন্য সম্পূর্ণ মডেলের টোকেন প্রস্তাব করতে একটি ছোট মডেল ব্যবহার করে, ব্যাচ-১ ডিকোডকে ১৮% ধীর করে দিয়েছে। যাচাইকরণ দুই থেকে পাঁচটি সারির গ্রুপ প্রসেস করেছে, যা এই হার্ডওয়্যারের জন্য একটি অদক্ষ আকৃতি, এবং সারিগুলো প্রায়ই বিভিন্ন এক্সপার্ট নির্বাচন করেছে, যা পড়া এক্সপার্ট-ওজন ডেটার পরিমাণ বৃদ্ধি করেছে। ড্রাফটারের আউটপুট ভোকাবুলারি কমানো ড্রাফটার থ্রুপুট ৪.৭–৫.১% উন্নত করেছে, তবে সম্পূর্ণ স্পেকুলেটিভ লুপটিকে দ্রুততর করেনি। এই ফলাফলটি কাজের চাপ-নির্দিষ্ট: ব্ল্যাকওয়েলে আমাদের ব্যাচ করা Qwen ডিপ্লয়মেন্ট বিভিন্ন শর্তে স্পেকুলেটিভ ডিকোডিং ব্যবহার করে।

অন্যান্য পরীক্ষার মধ্যে ছিল জিপিইউ লঞ্চ কমানো, সম্পূর্ণ ফেজ ওভারল্যাপ করা, বড় প্রফিল টাইল ব্যবহার করা, বিস্তৃত ফিউশন প্রয়োগ করা, রাউটার ত্বরান্বিত করা, এবং টোকেন নির্বাচনের সাথে আউটপুট প্রজেকশন একত্রিত করা। কোনোটিই সম্পূর্ণ ইনফারেন্স লুপ উন্নত করেনি।

হার্ডওয়্যার সীমার পরিমাপগুলো প্রধান প্রফিল এবং ডিকোড অপারেশনে খুব কম অবশিষ্টাংশও দেখিয়েছে। MoE GEMM এবং GEMV-গুলো তাদের অ্যাক্সেস প্যাটার্নের জন্য দ্রুততম টেকসই ওজন-পড়ার হারের ৯৭.৯% এবং ৯০.৩% এ পৌঁছেছে। স্পার্স GEMV থেকে পাটিগণিত অপসারণ করায় থ্রুপুট মাত্র ০.২% পরিবর্তিত হয়েছে, যা নিশ্চিত করে যে গণনার চেয়ে ওজন পড়া সীমিতকরণ সম্পদ ছিল। প্রফিলের ম্যাট্রিক্স গুণ একইভাবে বিচ্ছিন্ন অবস্থায় তাত্ত্বিক ম্যাট্রিক্স সীমার ৯৩% এবং পরীক্ষিত মডেলগুলোর ভেতরে ৮০–৮৬% এ পৌঁছেছে।

এন্ড-টু-এন্ড পারফরম্যান্স

এন্ড-টু-এন্ড তুলনা উভয় ইঞ্জিনে অভিন্ন ৪-বিট চেকপয়েন্ট বাইট লোড করে এবং একটি ৪০-কোর, ১২৮ জিবি M5 Max-এ একবারে একটি অনুরোধ চালায়। প্রতিটি রাউন্ডের মধ্যে, ব্যাকগ্রাউন্ড লোড এবং চিপ তাপমাত্রার পরিবর্তন থেকে বায়াস কমাতে দুটি ইঞ্জিন বিকল্প ক্রমে চলে। আমরা MLX-LM-এর সার্ভার নয়, বরং এর দ্রুততম সরাসরি-জেনারেশন পাথের সাথে তুলনা করি, তাই পরিমাপটি পরিবেশন ওভারহেডের পরিবর্তে মডেল এক্সিকিউশনের ওপর ফোকাস করে।

সুইপটি প্রফিলের জন্য দশটি প্রম্পট দৈর্ঘ্য এবং ২৫৬ থেকে ১২৮কে টোকেন পর্যন্ত ডিকডের জন্য দশটি কনটেক্সট দৈর্ঘ্য কভার করে। ইঞ্জিন যখন আরও টোকেন জুড়ে নির্দিষ্ট সেটআপ খরচ ছড়িয়ে দেয় তখন প্রফিল থ্রুপুট প্রথমে বৃদ্ধি পায়। প্রফিল প্রায় ৪কে-টোকেন প্রম্পটের কাছাকাছি শিখরে পৌঁছায়, তারপর কমে যায় কারণ প্রম্পট বাড়ার সাথে সাথে দশটি ফুল-অ্যাটেনশন লেয়ার বেশি কাজ করে। ছোট কনটেক্সটে ডিকোড প্রায় সমতল থাকে এবং ক্রমবর্ধমান কেভি ক্যাশ পড়া তাৎপর্যপূর্ণ হয়ে উঠলে হ্রাস পায়। কাস্টম ইঞ্জিন প্রতিটি রেকর্ড করা দৈর্ঘ্যে দ্রুততর।

যেহেতু বিশেষায়িত এক্সিকিউশন ফ্লোটিং-পয়েন্ট অপারেশনের ক্রম পরিবর্তন করতে পারে, আমরা MLX-LM-এর বিরুদ্ধে সংখ্যাগত ধারাবাহিকতাও পরীক্ষা করেছি। একটি শিক্ষক-বাধ্যতামূলক তুলনায়, উভয় ইঞ্জিনই ১৯২টি পজিশনের প্রতিটিতে একই রেফারেন্স প্রিফিক্স থেকে পরবর্তী টোকেন ভবিষ্যদ্বাণী করেছে, যা পূর্ববর্তী পার্থক্যগুলোকে পরবর্তী ইনপুটগুলোকে প্রভাবিত করা থেকে বাধা দেয়। লিলি-র পারপ্লেক্সিটি মাত্র ০.০৪% বেশি ছিল, এবং এটি পরীক্ষিত পজিশনের ৯৬.৩৫%-এ একই শীর্ষ-র‍্যাঙ্কড টোকেন নির্বাচন করেছে।

একটি ৪০-কোর, ১২৮ জিবি এম৫ ম্যাক (Max)-এ Qwen3.6-35B-A3B Q4, ব্যাচ ১-এর জন্য প্রম্পট দৈর্ঘ্য অনুযায়ী প্রিফিল থ্রুপুট এবং কন্টেন্ট দৈর্ঘ্য অনুযায়ী ডিকোড থ্রুপুট। ২৫৬ থেকে ১২৮কে টোকেন পর্যন্ত দশটি দৈর্ঘ্যের জুড়ে, লিলি প্রতিটি রেকর্ড করা পয়েন্টে দ্রুততর: MLX-LM-এর প্রিফিল থ্রুপুটের ১.১২–১.৪২× এবং এর ডিকোড থ্রুপুটের ১.৩১–১.৩৭×। তুলনাটিতে MLX-LM-এর দ্রুততম সরাসরি-জেনারেট পথ ব্যবহার করা হয়েছে। উভয় অনুভূমিক অক্ষ লগারিদমিক স্কেল ব্যবহার করে; কোনো উল্লম্ব অক্ষই শূন্য থেকে শুরু হয় না।
একটি ৪০-কোর, ১২৮ জিবি M5 Max-এ Qwen3.6-35B-A3B Q4, ব্যাচ ১-এর জন্য প্রম্পট দৈর্ঘ্য অনুযায়ী প্রফিল থ্রুপুট এবং কনটেক্সট দৈর্ঘ্য অনুযায়ী ডিকোড থ্রুপুট। ২৫৬ থেকে ১২৮কে টোকেন পর্যন্ত দশটি দৈর্ঘ্য জুড়ে, লিলি প্রতিটি রেকর্ড করা পয়েন্টে দ্রুততর: MLX-LM-এর প্রফিল থ্রুপুটের ১.১২–১.৪২ গুণ এবং এর ডিকোড থ্রুপুটের ১.৩১–১.৩৭ গুণ। তুলনাটিতে MLX-LM-এর দ্রুততম সরাসরি-জেনারেশন পাথ ব্যবহার করা হয়েছে। উভয় অনুভূমিক অক্ষ লগারিদমিক স্কেল ব্যবহার করে; কোনো লম্বালম্বি অক্ষই শূন্য থেকে শুরু হয় না।

স্থানীয় প্ল্যাটফর্মের জন্য নির্মিত

অ্যাপল সিলিকন কোনো ছোট ডেটাসেন্টার জিপিইউ নয়। এটি নিজস্ব হার্ডওয়্যার এবং সফ্টওয়্যার বৈশিষ্ট্যযুক্ত একটি সম্পূর্ণ লোকাল ইনফারেন্স প্ল্যাটফর্ম। ইউনিফাইড মেমোরি একটি একক নোডকে এটি কত মডেল এবং স্টেট ধারণ করতে পারে তার ওপর একটি খুব উচ্চ সীমা দেয়। M5 নিউরাল অ্যাকিলারেটরগুলো প্রফিলের ঘন ম্যাট্রিক্স কাজ শোষণ করে। ভেক্টর ALU-গুলো ডিকোডে ব্যান্ডউইথ-বাউন্ড, কম-পুনঃব্যবহারের অবশিষ্টাংশ পরিচালনা করে।

Qwen বিশেষায়েশনের জন্য আরও সুযোগ যোগ করে: জিপিইউতে এক্সপার্ট রাউটিং এবং রিকারেন্ট স্টেট রাখুন, অপ্রয়োজনীয় মধ্যবর্তীগুলো দূর করুন, স্বাধীন কাজ ওভারল্যাপ করুন, শেয়ার করা কেভি ডেটা পুনরায় ব্যবহার করুন, এবং কাজের চাপের আকৃতির সাথে কার্নেল মেলান।

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

ব্যাপক নীতি হলো ইঞ্জিনটিকে মডেলের আর্কিটেকচার এবং হার্ডওয়্যারের নির্দিষ্ট কম্পিউট ও মেমোরি পাথ উভয়ের সাথেই মেলানো। যেহেতু ফ্রন্টিয়ার ওপেন-ওয়েট মডেল এবং হার্ডওয়্যার বিকশিত হচ্ছে, উচ্চ-কার্যক্ষমতাসম্পন্ন লোকাল ইনফারেন্স ক্রমবর্ধমানভাবে তাদের পার্থক্যগুলোকে বিমূর্ত করে এমন ইঞ্জিনের পরিবর্তে উভয়ের জন্য তৈরি ইঞ্জিনের ওপর নির্ভর করবে।