منصوبے کے بارے میں

einops ایک اوپن سورس Python لائبریری ہے جو آئن سٹائن سے متاثر علامت نگاری کے ذریعے لچکدار اور طاقتور ٹینسر آپریشنز فراہم کرتی ہے، جس کا مقصد ٹینسر ہیرا پھیری کوڈ کو زیادہ پڑھنے کے قابل اور قابل اعتماد بنانا ہے۔ یہ نام آپریشنز کے لیے آئن سٹائن سے متاثر علامت نگاری کا مخفف ہے، جو numpy.einsum سے ڈھیلے انداز میں متاثر ہے۔ بنیادی API کم سے کم لیکن طاقتور ہے، جو تین اہم افعال پر مبنی ہے: rearrange (پیٹرن کے مطابق عناصر کو دوبارہ ترتیب دینا)، reduce (rearrangement کو کمی جیسے mean یا max کے ساتھ جوڑنا)، اور repeat (نئے محور کے ساتھ نقل کرنا)۔ بعد میں شامل کیے گئے pack اور unpack مختلف جہتوں کے متعدد ٹینسرز کو الٹنے کے قابل طریقے سے جوڑنے کے لیے ہیں، اور einsum جو کئی حروف والے محور ناموں کی حمایت کرتا ہے۔ einops میں ایک EinMix پرت بھی شامل ہے، جو ایک عام لکیری پرت ہے جو MLP Mixers اور اسی طرح کے فن تعمیرات کے لیے موزوں ہے، نیز PyTorch، TensorFlow، Flax، اور Paddle کے لیے فریم ورک مخصوص پرت ریپرز (Rearrange، Reduce وغیرہ) بھی شامل ہیں۔ یہ علامت نگاری معنوی معلومات پر زور دیتی ہے: x.view(x.shape[0], -1) لکھنے کے بجائے، صارفین rearrange(x, 'b c h w -> b (c h w)') لکھتے ہیں، جو ان پٹ اور آؤٹ پٹ دونوں شکلوں کو دستاویز کرتا ہے۔ نامزد محور جیسے 'time c h w -> time (c h w)' اس بات کا اشارہ دیتے ہیں کہ ڈیٹا ایک ویڈیو سیکوئنس ہے نہ کہ ایک آزاد بیچ۔ صارفین مخصوص جہتوں کو بھی مقرر کر سکتے ہیں (مثلاً c=256, h=19, w=19) تاکہ آپریشن رن ٹائم پر شکلوں کی تصدیق کرے بجائے تبصروں پر انحصار کرنے کے۔ نتائج سختی سے متعین ہوتے ہیں، اس لیے مبہم آپریشنز جیسے depth-to-space کو بلا ابہام لکھا جا سکتا ہے۔ وہی نحو 1D، 2D، اور 3D پولنگ پر یکساں طور پر کام کرتا ہے، اور رویہ تمام فریم ورکس میں مستقل ہے چاہے مقامی APIs مختلف ہوں (مثال کے طور پر، flatten کی معنویت NumPy/PyTorch اور TensorFlow/Keras کے درمیان مختلف ہوتی ہے)۔ einops NumPy، PyTorch، TensorFlow، JAX، CuPy، Flax، Paddle، OneFlow، tinygrad، اور PyTensor کو سپورٹ کرتا ہے، اور کسی بھی فریم ورک کے ساتھ کام کرتا ہے جو Python array API معیار کو نافذ کرتا ہے، بشمول NumPy >= 2.0، MLX، pydata/sparse، cubed، اور nndonnx۔ یہ PyTorch پرتوں کے لیے torch.compile اور torch.jit.script کو سپورٹ کرتا ہے۔ لائبریری کو Python 3.10 یا اس سے نئے ورژن کی ضرورت ہے اور pip install einops کے ذریعے انسٹال کیا جاتا ہے۔ یہ پروجیکٹ ICLR 2022 میں زبانی پیشکش کے طور پر پیش کیا گیا تھا اور 10,000 سے زیادہ GitHub پروجیکٹس استعمال کرتے ہیں۔