FlashAttention-2 (BN)
FlashAttention-2 — এটি একটি উন্নত অ্যালগরিদম, যা বৃহৎ ভাষা মডেলে (LLM) attention প্রক্রিয়া গণনার জন্য তৈরি করা হয়েছে। অ্যালগরিদমটি ত্রি দাও (Tri Dao) এবং স্ট্যানফোর্ড বিশ্ববিদ্যালয়ের গবেষকদের দ্বারা তৈরি করা হয়েছিল এবং ২০২৩ সালের জুলাই মাসে উপস্থাপন করা হয়[1]। এর মূল লক্ষ্য হলো GPU-এর হার্ডওয়্যার সম্পদের আরও দক্ষ ব্যবহারের মাধ্যমে transformer মডেলের প্রশিক্ষণ ও ইনফারেন্স (অনুমান) উল্লেখযোগ্যভাবে ত্বরান্বিত করা, একই সঙ্গে স্ট্যান্ডার্ড attention প্রক্রিয়ার সাথে সম্পূর্ণ গণনাগত অভিন্নতা বজায় রাখা, অর্থাৎ নির্ভুলতার কোনো ক্ষতি ছাড়াই।
FlashAttention-2 হলো FlashAttention অ্যালগরিদমের যৌক্তিক উত্তরসূরি, যা একই দলটি ২০২২ সালে উপস্থাপন করেছিল। নতুন সংস্করণটি পূর্ববর্তী সংস্করণে পরিলক্ষিত GPU-এর অসম্পূর্ণ লোডিংয়ের সমস্যাটি সমাধান করে এবং প্রথম সংস্করণের তুলনায় প্রায় দ্বিগুণ গতির উন্নতি অর্জন করে।
পটভূমি: transformer-এ attention-এর সমস্যা
স্ট্যান্ডার্ড self-attention প্রক্রিয়া transformer-এ দীর্ঘ পাঠ্য ক্রমের সাথে কাজ করার সময় একটি বাধা হয়ে দাঁড়ায়। এর গণনীয় জটিলতা এবং মেমরি খরচ ক্রমের দৈর্ঘ্যের (N) উপর নির্ভর করে দ্বিঘাতভাবে (O(N²)) বৃদ্ধি পায়, যা সর্বোচ্চ context দৈর্ঘ্য এবং LLM-এর মাপযোগ্যতার উপর গুরুতর সীমাবদ্ধতা আরোপ করে[1]।
এই সমস্যার সমাধানের জন্য ২০২২ সালে FlashAttention অ্যালগরিদম উপস্থাপন করা হয়েছিল[2]। এর মূল ধারণাগুলি:
- GPU-এর মেমরি হায়ারার্কি বিবেচনা (IO-awareness): অ্যালগরিদমটি GPU-এর ধীর মেমরি (HBM) এবং চিপের দ্রুত স্থির মেমরি (SRAM)-এর মধ্যে ব্যয়বহুল পড়া/লেখার অপারেশন কমিয়ে আনে।
- ব্লক প্রক্রিয়াকরণ (tiling): গণনাগুলিকে ছোট ব্লকে (টাইলে) বিভক্ত করা হয়, যা দ্রুত SRAM-এ প্রক্রিয়া করা হয়, এটি মেমরিতে সম্পূর্ণ attention ম্যাট্রিক্সের বাস্তবায়ন এড়াতে সাহায্য করে।
এটি মেমরি খরচের রৈখিক বৃদ্ধি (O(N)) এবং স্ট্যান্ডার্ড বাস্তবায়নের তুলনায় ২–৪ গুণ ত্বরান্বিতকরণ অর্জন করতে সক্ষম হয়েছে[2]। FlashAttention ব্যাপক প্রসার লাভ করেছে এবং উল্লেখযোগ্যভাবে বর্ধিত context-সহ মডেলের উত্থানে অবদান রেখেছে, উদাহরণস্বরূপ, ২–৪ হাজার token (GPT-3) থেকে ১২৮ হাজার (GPT-4) এবং তার বেশিতে[3]। এভাবে, Falcon-40B মডেলে FlashAttention ব্যবহার GPT-3-এর তুলনায় ইনফারেন্স ৩ গুণ এবং সামগ্রিক জেনারেশন কর্মক্ষমতা ৫ গুণ ত্বরান্বিত করেছে[4]।
FlashAttention-2-এর উন্নয়ন ও লক্ষ্য
সাফল্য সত্ত্বেও, FlashAttention-এর প্রথম সংস্করণ GPU-এর গণনীয় সম্পদ সম্পূর্ণরূপে ব্যবহার করেনি। NVIDIA A100 গ্রাফিক্স কার্ডে কর্মক্ষমতা তাত্ত্বিক সর্বোচ্চ (FLOPs/s)-এর মাত্র ২৫–৪০% পর্যন্ত পৌঁছেছিল[1]। মূল কারণ ছিল Streaming Multiprocessors-এর অনুকূলহীন লোডিং এবং শেয়ার্ড মেমরির অতিরিক্ত অপারেশন[5]।
FlashAttention-2-এর লক্ষ্য হয়ে ওঠে আরও দক্ষ সমান্তরাল প্রক্রিয়াকরণ এবং সহায়ক অপারেশন কমানোর মাধ্যমে গণনাকে আরও ত্বরান্বিত করা। সর্বোচ্চ কর্মক্ষমতা অর্জনের জন্য অ্যালগরিদমটি NVIDIA CUTLASS 3.x লাইব্রেরির নিম্ন-স্তরের primitives ব্যবহার করে সম্পূর্ণরূপে পুনর্লিখিত হয়েছিল[6]।
প্রযুক্তিগত আর্কিটেকচার ও কার্যনীতি
FlashAttention-2 সমান্তরালতা ও দক্ষতা বাড়ানোর জন্য তিনটি মূল উন্নতি প্রবর্তন করে[1]:
১. নন-ম্যাট্রিক্স অপারেশনের হ্রাস
অ্যালগরিদমটি ম্যাট্রিক্স গুণন নয় এমন ফ্লোটিং-পয়েন্ট সহায়ক অপারেশনের (non-matmul FLOPs) সংখ্যা কমায়। যেহেতু GPU-এর tensor core গুলি বিশেষভাবে ম্যাট্রিক্স অপারেশন (GEMM)-এর জন্য অপ্টিমাইজড এবং সেগুলি ১৬ গুণ পর্যন্ত দ্রুততর, এই পরিবর্তনটি বেশিরভাগ সময় GPU-এর সর্বোচ্চ কার্যকরী ব্লকগুলি ব্যবহার করার সুযোগ দেয়।
২. উন্নত সমান্তরালতা
মূল FlashAttention-এ একটি attention "হেড"-এর উপর কাজ সমান্তরালভাবে করা হতো না, যা দীর্ঘ ক্রম এবং ছোট batch আকারের সময় নিষ্ক্রিয়তার দিকে নিয়ে যেত। FlashAttention-2 আন্তঃ-ব্লক সমান্তরালতা প্রবর্তন করে: এখন একটি attention হেডের গণনাগুলি GPU-এর বিভিন্ন Streaming Multiprocessors-এর মধ্যে বিতরণ করা হয়, যা তাদের লোডিং উল্লেখযোগ্যভাবে বৃদ্ধি করে।
৩. ব্লকের মধ্যে অপ্টিমাইজড কার্য বিভাজন
একটি গণনীয় ব্লকের স্তরে, শেয়ার্ড মেমরির মাধ্যমে ডেটা বিনিময় কমাতে thread গোষ্ঠীগুলির (warp) মধ্যে কাজ পুনর্বিতরণ করা হয়েছে। এটি Softmax নর্মালাইজেশনের জন্য প্রয়োজনীয় অতিরিক্ত পড়া/লেখার অপারেশনের সংখ্যা হ্রাস করে।
কর্মক্ষমতা ও দক্ষতা
আর্কিটেকচারাল উন্নতির জন্য ধন্যবাদ, FlashAttention-2 কর্মক্ষমতায় উল্লেখযোগ্য উন্নতি প্রদর্শন করে:
- দ্বিগুণ ত্বরান্বিতকরণ: অ্যালগরিদমটি FlashAttention-এর প্রথম সংস্করণের তুলনায় প্রায় ২ গুণ দ্রুত কাজ করে[1]।
- উচ্চ GPU ব্যবহার: NVIDIA A100 GPU-তে তাত্ত্বিক সর্বোচ্চ থ্রুপুট (TFLOPs)-এর ৫০–৭৩% অর্জিত হয়, যা অপ্টিমাইজড ম্যাট্রিক্স গুণন (GEMM) অপারেশনের দক্ষতার কাছাকাছি[1]।
- রেকর্ড গণনা গতি:
কর্মক্ষমতার এই উন্নতি, উদাহরণস্বরূপ, ১৬k token context উইন্ডো সহ একটি মডেল একই সময়ে প্রশিক্ষণ দেওয়ার সুযোগ দেয়, যা আগে ৮k token উইন্ডোর জন্য প্রয়োজন ছিল[5]। গুরুত্বপূর্ণভাবে, অ্যালগরিদমটি নির্ভুল এবং নির্ধারণবাদী থাকে, তাই এর প্রয়োগ মডেলের পূর্বাভাসের গুণমানকে প্রভাবিত করে না[8]।
প্রয়োগ ও LLM ইকোসিস্টেমে একীভূতকরণ
FlashAttention-2 দ্রুত LLM ইকোসিস্টেমে একটি স্ট্যান্ডার্ড টুল হয়ে উঠেছে। এটি অনেক জনপ্রিয় framework ও লাইব্রেরিতে একীভূত হয়েছে:
- PyTorch: নেটিভ সমর্থন।
- Hugging Face Transformers: মডেল লোড করার সময় `attn_implementation="flash_attention_2"` প্যারামিটার দিয়ে সমর্থন সক্ষম করা হয়[9]। দশটিরও বেশি আর্কিটেকচারের সাথে সামঞ্জস্যপূর্ণ (GPT, Llama, Falcon, BERT এবং অন্যান্য)[10]।
- TensorRT-LLM, xFormers ও Triton: এই প্ল্যাটফর্মগুলির জন্য অ্যালগরিদম বাস্তবায়িত হয়েছে, যা ব্যাপক প্রয়োগ নিশ্চিত করে[7]।
একীভূতকরণ FlashAttention-2-কে কোয়ান্টাইজেশন (GPTQ, QLoRA) এবং দক্ষ fine-tuning (PEFT)-এর মতো অন্যান্য অপ্টিমাইজেশন পদ্ধতির সাথে সহজে যুক্ত করার সুযোগ দেয়[9]।
পরবর্তী সংস্করণগুলির সাথে তুলনা
FlashAttention-3
attention অপ্টিমাইজেশনের ক্ষেত্রে গবেষণা অব্যাহত রয়েছে। ২০২৪ সালের জুলাই মাসে ত্রি দাও FlashAttention-3 উপস্থাপন করেন, যা NVIDIA Hopper (H100/H200) GPU আর্কিটেকচারের সুবিধা ব্যবহারের লক্ষ্যে তৈরি। মূল নতুন বৈশিষ্ট্যগুলি[3]:
- FP8 সমর্থন: আরও ত্বরান্বিতকরণের জন্য ৮-বিট ফ্লোটিং-পয়েন্ট গণনা ব্যবহার করে।
- অ্যাসিঙ্ক্রোনাস অপারেশন: GPU-এর অ্যাসিঙ্ক্রোনাস সক্ষমতা আরও দক্ষতার সাথে ব্যবহার করে।
FlashAttention-3 H100 GPU-তে FlashAttention-2-এর তুলনায় ১.৫–২ গুণ ত্বরান্বিতকরণ প্রদান করে, ৭৪০ TFLOP/s পর্যন্ত কর্মক্ষমতা অর্জন করে (তাত্ত্বিক সর্বোচ্চের ৭৫%)[11]।
সাহিত্য
- Dao, T. (2023). FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning. arXiv:2307.08691.
- Dao, T. et al. (2022). FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness. arXiv:2205.14135.
- Shah, J. et al. (2024). FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision. arXiv:2407.08608.
- Kwon, W. et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention. arXiv:2309.06180.
- Ye, Z. et al. (2025). FlashInfer: Efficient and Customizable Attention Engine for LLM Inference Serving. arXiv:2501.01005.
- Chen, Y. et al. (2023). FlashDecoding++: Faster Large Language Model Inference on GPUs. arXiv:2311.01282.
- Liu, Y. et al. (2024). FastAttention: Extending FlashAttention-2 to NPUs and Low-Resource GPUs. OpenReview: 76NYyOrnfk.
- Dege, P. et al. (2025). FlashMLA-ETAP: Efficient Transpose Attention Pipeline for Accelerating MLA Inference on NVIDIA H20 GPUs. arXiv:2506.01969.
- Wang, G. et al. (2024). FlashMask: Efficient and Rich Mask Extension of FlashAttention. OpenReview: rog0J435OO.
- Abbott, V.; Zardini, G. (2025). FlashAttention on a Napkin: A Diagrammatic Approach to Deep Learning IO-Awareness. arXiv:2412.03317.
টীকা
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Дао, Три. «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning». arXiv:2307.08691 [cs.LG], 17 июля 2023 г. [১]
- ↑ 2.0 2.1 «Optimizing LLMs for Speed and Memory». Hugging Face Documentation. [২]
- ↑ 3.0 3.1 Дао, Три. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». Tri Dao's Blog. [৩]
- ↑ «FlashAttention vs FlashAttention-2 - an Analysis». E2E Networks Blog. [৪]
- ↑ 5.0 5.1 «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning». OpenReview. [৫]
- ↑ «FlashAttention-2». Hazy Research, Stanford University. [৬]
- ↑ 7.0 7.1 7.2 Дао, Три. «FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning» (PDF). arXiv:2307.08691. [৭]
- ↑ Рашка, Себастьян. «Llama 2 and FlashAttention 2». Ahead of AI Magazine. [৮]
- ↑ 9.0 9.1 Белькада, Юнес. «Faster and more memory efficient models with Flash Attention 2!». LinkedIn. [৯]
- ↑ «GPU inference». Hugging Face Documentation. [১০]
- ↑ Дао, Три, и др. «FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision». arXiv:2407.08608 [cs.LG], 11 июля 2024 г. [১১]