প্রকল্প সম্পর্কে

Transformer Engine (TE) হলো NVIDIA GPU-তে Transformer মডেল ত্বরান্বিত করার জন্য একটি NVIDIA লাইব্রেরি। এর কেন্দ্রীয় বৈশিষ্ট্য হলো লো-প্রিসিশন গণনা: Hopper, Ada এবং Blackwell GPU-তে ৮-বিট ফ্লোটিং পয়েন্ট (FP8), এবং Blackwell-এ MXFP8 ও NVFP4 ফরম্যাট, যা প্রশিক্ষণ ও ইনফারেন্স উভয় ক্ষেত্রে পারফরম্যান্স উন্নত এবং মেমরি ব্যবহার কমাতে লক্ষ্য করে। এটি Ampere এবং পরবর্তী আর্কিটেকচারে FP16 ও BF16 জুড়ে অপ্টিমাইজেশনও সমর্থন করে। লাইব্রেরিটি সাধারণ Transformer আর্কিটেকচারের জন্য অত্যন্ত অপ্টিমাইজড বিল্ডিং ব্লক এবং একটি স্বয়ংক্রিয় মিক্সড-প্রিসিশন-সদৃশ API প্রদান করে যা ফ্রেমওয়ার্ক-নির্দিষ্ট কোডের সাথে ব্যবহার করা যায়। একটি ফ্রেমওয়ার্ক-নিরপেক্ষ C++ API অন্তর্ভুক্ত রয়েছে যাতে অন্যান্য ডিপ লার্নিং লাইব্রেরি Transformer-এর জন্য FP8 সমর্থন যোগ করতে পারে। TE মডিউলগুলি অভ্যন্তরীণভাবে স্কেলিং ফ্যাক্টর এবং FP8 প্রশিক্ষণের জন্য প্রয়োজনীয় সংশ্লিষ্ট মান বজায় রাখে, যা ব্যবহারকারীদের জন্য মিক্সড-প্রিসিশন ওয়ার্কফ্লো সহজ করে। প্রকল্পটি যে হাইলাইটগুলি তালিকাভুক্ত করেছে তার মধ্যে রয়েছে FP8 সমর্থনসহ Transformer লেয়ার তৈরির জন্য সহজে ব্যবহারযোগ্য মডিউল, ফিউজড-কার্নেল অপ্টিমাইজেশন, Hopper, Ada ও Blackwell-এ FP8 সমর্থন, Blackwell-এ MXFP8 ও NVFP4 সমর্থন, এবং Ampere ও পরবর্তীতে FP16/BF16 জুড়ে অপ্টিমাইজেশন। PyTorch এবং JAX/Flax-এর জন্য ব্যবহারের উদাহরণ দেওয়া হয়েছে। PyTorch-এ, ব্যবহারকারীরা transformer_engine.pytorch ইমপোর্ট করেন, নির্বাচিত FP8 ফরম্যাটসহ DelayedScaling-এর মতো একটি রেসিপি তৈরি করেন, এবং ফরওয়ার্ড পাসটি te.autocast-এ মোড়ান। JAX/Flax-এ, te_flax মডিউল এবং একটি রেসিপিসহ অনুরূপ autocast ব্যবহার দেখানো হয়েছে। আরও পূর্ণ টিউটোরিয়ালের জন্য একটি গেটিং-স্টার্টেড গাইড লিঙ্ক করা হয়েছে। ইনস্টলেশন অপশনের মধ্যে রয়েছে NGC Docker কন্টেইনার (প্রস্তাবিত), PyTorch এবং/অথবা JAX-এর জন্য এক্সট্রাসহ pip প্যাকেজ, PyTorch ইন্টিগ্রেশনের জন্য conda-forge প্যাকেজ, এবং সোর্স বিল্ড। সিস্টেম প্রয়োজনীয়তায় উল্লেখ করা হয়েছে Blackwell, Hopper, Grace Hopper/Blackwell, Ada এবং Ampere হার্ডওয়্যার; অফিসিয়াল OS হিসেবে Linux সীমিত WSL2 সমর্থনসহ; CUDA 12.1+ (Blackwell-এর জন্য 12.8+); cuDNN 9.12+; GCC 9+ বা Clang 10+ C++17 সহ; এবং Python 3.12 প্রস্তাবিত। FP8 বৈশিষ্ট্যের জন্য compute capability 8.9 বা উচ্চতর প্রয়োজন। বিল্ড-সম্পর্কিত এনভায়রনমেন্ট ভেরিয়েবল যেমন CUDA_PATH, CUDNN_PATH, CXX, NVTE_FRAMEWORK, MAX_JOBS এবং NVTE_CUDA_ARCHS নথিভুক্ত করা হয়েছে। README-তে PyTorch-এ FlashAttention-2 এবং FlashAttention-3 সমর্থন কভার করা হয়েছে, উভয়ই উপস্থিত থাকলে FlashAttention-3 অগ্রাধিকার পায়, এবং উল্লেখ করা হয়েছে যে FlashAttention-2 কম্পাইলেশন মেমরি-নিবিড় হতে পারে। একটি ট্রাবলশুটিং বিভাগ ABI সামঞ্জস্য ইমপোর্ট ত্রুটি, অনুপস্থিত হেডার বা লাইব্রেরি, বিল্ড রিসোর্স সমস্যা, ভার্বোস বিল্ড লগিং, UV/ভার্চুয়াল-এনভায়রনমেন্ট সমস্যা যার মধ্যে cuDNN সাবলাইব্রেরি লোডিং ব্যর্থতা রয়েছে, এবং JAX FFI রেজিস্ট্রেশন ত্রুটি সম্বোধন করে। v1.7-এর জন্য একটি ব্রেকিং চেঞ্জ নথিভুক্ত করা হয়েছে: PyTorch প্যাডিং মাস্ক সংজ্ঞা পরিবর্তিত হয়েছে যাতে True এখন একটি পজিশন অন্তর্ভুক্ত করার পরিবর্তে মাস্ক আউট বোঝায়, যা ফ্রেমওয়ার্ক জুড়ে মাস্ক সেমান্টিক্স একীভূত করে। কনভার্জেন্স নোটে বলা হয়েছে যে পরীক্ষিত কনফিগারেশনে FP8 এবং MXFP8 BF16 প্রশিক্ষণ লস কার্ভ থেকে উল্লেখযোগ্য পার্থক্য দেখায়নি, ডাউনস্ট্রিম LLM টাস্কে বৈধতা সহ, এবং MPT-1.3B, Llama2-7B, LLM-8B, MPT-13B, MoE-16B এবং Llama2-70B-এর মতো মডেল তালিকাভুক্ত করেছে Mosaic Composer, Alibaba Pai এবং Megatron Core সহ ফ্রেমওয়ার্ক জুড়ে। তালিকাভুক্ত ইন্টিগ্রেশনের মধ্যে রয়েছে DeepSpeed, Hugging Face Accelerate, Lightning, MosaicML Composer, NVIDIA JAX Toolbox, NVIDIA Megatron-LM, NVIDIA NeMo Megatron Bridge, Amazon SageMaker Model Parallel Library, Levanter, GPT-NeoX এবং Hugging Face Nanotron। প্রকল্পটি Apache-2.0 লাইসেন্সের অধীনে এবং এর CONTRIBUTING গাইডের মাধ্যমে অবদানকে স্বাগত জানায়।