یادگیری عمیق (DL) یک زمینه به سرعت در حال توسعه است و پزشکان دائماً در حال ابداع مدلهای DL و ابداع راههایی برای سرعت بخشیدن به آنها هستند. اپراتورهای سفارشی یکی از مکانیسمهایی هستند که توسعهدهندگان برای پیش بردن مرزهای نوآوری DL با گسترش عملکرد چارچوبهای یادگیری ماشینی (ML) موجود مانند PyTorch استفاده میکنند. به طور کلی، یک اپراتور تابع ریاضی یک لایه را در یک مدل یادگیری عمیق توصیف می کند. آ اپراتور سفارشی به توسعه دهندگان اجازه می دهد تا توابع ریاضی خود را برای یک لایه در مدل یادگیری عمیق بسازند.
AWS Trainium و AWS Inferentia2، که برای آموزش و استنتاج DL ساخته شده اند، عملکرد و عملکرد خود را با پشتیبانی از اپراتورهای سفارشی (یا به اختصار CustomOps) گسترش می دهند. نورون AWS، SDK که از این شتاب دهنده ها پشتیبانی می کند، از رابط استاندارد PyTorch برای CustomOps استفاده می کند. هنگام استفاده از Trainium-based، توسعه دهندگان می توانند به راحتی با کدهای موجود خود شروع کنند نمونه های آمازون EC2 Trn1 یا مبتنی بر Inferentia2 نمونه های آمازون EC2 Inf2. در این پست، مزایای CustomOps، پیادهسازی کارآمد آنها در Trainium و مثالهایی را برای شروع کار با CustomOps در نمونههای Trn1 مبتنی بر Trainium پوشش میدهیم.
برای پیگیری، آشنایی با خدمات اصلی AWS مانند ابر محاسبه الاستیک آمازون (Amazon EC2) ضمنی است و آشنایی اولیه با یادگیری عمیق، PyTorch و C++ مفید خواهد بود.
عملگرهای سفارشی در PyTorch و مزایای آنها
CustomOps برای PyTorch در نسخه 1.10 به نام PyTorch C++ Frontend ایجاد شد و مکانیزمی با کاربری آسان برای ثبت CustomOps نوشته شده در C++ ارائه کرد. موارد زیر برخی از مزایایی است که CustomOps ارائه می کند:
- بهینه سازی عملکرد - CustomOps را می توان برای موارد استفاده خاص بهینه کرد که منجر به اجرای سریعتر مدل و بهبود عملکرد می شود.
- بهبود بیان مدل - با CustomOps، می توانید محاسبات پیچیده ای را که به راحتی قابل بیان نیستند با استفاده از عملگرهای داخلی ارائه شده توسط PyTorch بیان کنید.
- ماژولار بودن افزایش یافته است - می توانید از CustomOps به عنوان بلوک های ساختمانی برای ایجاد مدل های پیچیده تر با ایجاد کتابخانه های C++ از اجزای قابل استفاده مجدد استفاده کنید. این فرآیند توسعه را آسان تر و مدولارتر می کند و آزمایش سریع را تسهیل می کند.
- انعطاف پذیری افزایش یافته است - CustomOps عملیاتی فراتر از اپراتورهای داخلی را امکان پذیر می کند - یعنی روشی انعطاف پذیر برای تعریف عملیات پیچیده ای که با استفاده از موارد استاندارد اجرا نمی شوند، ارائه می دهند.
پشتیبانی Trainium برای اپراتورهای سفارشی
Trainium (و AWS Inferentia2) از CustomOps در نرم افزار از طریق Neuron SDK پشتیبانی می کند و آنها را در سخت افزار با استفاده از موتور GPSIMD (موتور داده های چندگانه تک دستور العمل عمومی با هدف کلی) سرعت می بخشد. بیایید ببینیم که چگونه این ها پیاده سازی کارآمد CustomOps را فعال می کنند و در هنگام توسعه و نوآوری مدل های DL، انعطاف پذیری و عملکرد بیشتری را ارائه می دهند.
Neuron SDK
Neuron SDK به توسعه دهندگان کمک می کند تا مدل ها را در Trainium آموزش دهند و مدل ها را بر روی شتاب دهنده های AWS Inferentia مستقر کنند. به صورت بومی با فریمورکهایی مانند PyTorch و TensorFlow ادغام میشود، بنابراین میتوانید به استفاده از گردشهای کاری و کد برنامه موجود خود برای آموزش مدلها در نمونههای Trn1 ادامه دهید.
Neuron SDK از رابط استاندارد PyTorch برای CustomOps استفاده می کند. توسعه دهندگان می توانند از رابط برنامه نویسی استاندارد در PyTorch برای نوشتن CustomOps در C++ و گسترش پشتیبانی رسمی اپراتور Neuron استفاده کنند. سپس Neuron این CustomOps را جمعآوری میکند تا به طور موثر بر روی موتور GPSIMD اجرا شود، که در بخش زیر با جزئیات بیشتر توضیح داده شده است. این امر اجرای CustomOpsهای آزمایشی جدید و تسریع آنها را بر روی سخت افزارهای هدفمند، بدون هیچ گونه دانش دقیق از این سخت افزار اساسی آسان می کند.
موتور داده چندگانه تک دستور العمل عمومی
در هسته بهینهسازیهای Trainium معماری NeuronCore قرار دارد، یک واحد محاسباتی کاملاً مستقل و ناهمگن با چهار موتور اصلی: تانسور، برداری، اسکالر و موتور GPSIMD. موتورهای اسکالر و برداری بسیار موازی شده و برای عملیات ممیز شناور بهینه شده اند. موتور تانسور مبتنی بر یک آرایه سیستولیک بهینه شده با توان است که از محاسبات دقیق ترکیبی پشتیبانی می کند.
موتور GPSIMD یک موتور همه منظوره تک دستورالعمل داده های چندگانه (SIMD) است که برای اجرا و تسریع CustomOps طراحی شده است. این موتور متشکل از هشت پردازنده همه منظوره 512 بیتی کاملاً قابل برنامه ریزی است که می توانند کد C را به صورت مستقیم اجرا کنند و به موتورهای NeuronCore-v2 مستقیم و همچنین حافظه های SRAM و HBM تعبیه شده دسترسی داشته باشند. این قابلیتها با هم به اجرای کارآمد CustomOps در Trainium کمک میکنند.
به عنوان مثال عملگرهایی مانند TopK، LayerNorm یا ZeroCompression را در نظر بگیرید که داده ها را از حافظه می خوانند و فقط از آن برای حداقل تعداد محاسبات ALU استفاده می کنند. سیستمهای CPU معمولی برای این محاسبات کاملاً محدود به حافظه هستند و عملکرد محدود به زمان مورد نیاز برای انتقال دادهها به CPU است. در Trainium، موتورهای GP-SIMD با استفاده از یک رابط جریان با پهنای باند بالا، که میتواند 2 ترابایت بر ثانیه از پهنای باند حافظه را حفظ کند، بهطور محکم با کشهای روی تراشه جفت میشوند. بنابراین، CustomOps مانند اینها را می توان بسیار سریع در Trainium اجرا کرد.
عملگرهای سفارشی Neuron SDK در عمل
برای این پست، ما DLAMI را در نظر می گیریم (به دستورالعمل های هر کدام مراجعه کنید اوبونتو or لینوکس آمازون) برای نمونه سازی یک نمونه EC2 Trn1 (یا 2x.large یا 32x.large) استفاده می شود. توجه داشته باشید که تمامی نرم افزارها، درایورها و ابزارهای لازم قبلاً روی DLAMI ها نصب شده اند و برای شروع کار با آموزش فقط به فعال سازی محیط پایتون نیاز است. ما به عملکرد CustomOps موجود در Neuron به عنوان "Neuron CustomOps" اشاره می کنیم.
مشابه فرآیند ادغام PyTorch با کد C++، Neuron CustomOps به پیادهسازی C++ یک اپراتور از طریق زیرمجموعه پورتشده توسط NeuronCore از Torch C++ API نیاز دارد. پیاده سازی C++ از اپراتور نامیده می شود تابع هستهو پورت C++ API شامل همه چیزهایی است که برای توسعه CustomOps و یکپارچه سازی مدل، به ویژه کلاس های تانسور و اسکالر در c10 (یک فضای نامی که برای کدهای سطح پایین C++ در کتابخانه های مختلف PyTorch استفاده می شود)، و زیر مجموعه ای از عملگرهای ATen (یا Automatic Tensor، کتابخانه C++ که عملیات تانسور هسته مورد استفاده در PyTorch را ارائه می دهد).
La torch.h
برای اینکه بتوانید به زیرمجموعه پورت شده توسط NeuronCore دسترسی داشته باشید، هنگام تعریف هسته باید هدر گنجانده شود. Pytorch C++ API:
Neuron CustomOps نیز به a تابع شکل. تابع شکل دارای امضای تابعی مشابه تابع هسته است، اما هیچ محاسباتی را انجام نمی دهد. فقط شکل تانسور خروجی را مشخص می کند اما مقادیر واقعی را تعریف نمی کند.
Neuron CustomOps در کتابخانه ها گروه بندی می شوند و از ماکروها برای ثبت آن ها در کتابخانه استفاده می شود NEURON_LIBRARY
دامنه از درون تابع شکل. این تابع در زمان کامپایل روی هاست اجرا می شود و به آن نیاز دارد register.h
سرصفحه از کتابخانه torchneuron:
در نهایت، کتابخانه سفارشی با فراخوانی load API ساخته می شود. در صورت تامین build_directory
پارامتر، فایل کتابخانه در دایرکتوری مشخص شده ذخیره می شود:
برای استفاده از CustomOp از یک مدل PyTorch، به سادگی کتابخانه را با فراخوانی بارگیری کنید load_library
API و Neuron CustomOp را به همان شیوه ای که CustomOps در PyTorch از طریق فضای نام torch.ops فراخوانی می شود، فراخوانی کنید. قالب معمولا torch.ops.<library_name>.<operator_name>
. کد زیر را ببینید:
توجه داشته باشید که custom_op.load
API کتابخانه C++ را می سازد، در حالی که custom_op.load_library
API یک فایل کتابخانه از قبل ساخته شده را بارگیری می کند.
مثال: Neuron CustomOps در آموزش MLP
برای شروع مراحل زیر را انجام دهید:
- نمونه EC2 Trn1 خود را ایجاد و راه اندازی کنید. مطمئن شوید که از یک تصویر DLAMI استفاده می کنید (یا اوبونتو or لینوکس آمازون، از پیش نصب شده با تمام نرم افزارهای لازم Neuron) و اینکه حجم حجم ریشه 512 گیگابایت را مشخص کرده اید.
- پس از اینکه نمونه شما راه اندازی شد، SSH را به نمونه خود وارد کنید.
- PyTorch Neuron (torch-neuronx) را روی نمونه در حال اجرا Trn1 خود نصب کنید. برای دستورالعمل، مراجعه کنید Neuron Custom C++ Operators در آموزش MLP.
- نمونه کد را از مخزن GitHub.
اکنون که محیط شما راهاندازی شده است، از طریق این پست ادامه دهید تا پیادهسازی یک CustomOp معمولی C++ در Neuron را در قالب توابع Relu رو به جلو و عقب برای استفاده در یک مدل پرسپترون چند لایه ساده (MLP) توضیح دهیم. مراحل در شرح داده شده است مستندات نورون AWS.
کد مثال از مخزن دو پوشه را نشان می دهد:
- ./customop_mlp/PyTorch - حاوی کد Relu است که برای یک CPU کامپایل خواهد شد
- ./customop_mlp/نورون – حاوی کد Relu است که برای Trainium کامپایل خواهد شد
توسعه یک Neuron CustomOp: تابع هسته
محیط میزبان یا توسعه دهنده برای توسعه تابع هسته (Neuron CustomOp) می تواند PyTorch 1.13 و یک کامپایلر سازگار با C++17 را در یک محیط لینوکس اجرا کند. این مانند توسعه هر تابع C++ برای PyTorch است، و تنها کتابخانههایی که باید در محیط توسعه وجود داشته باشند، کتابخانههای PyTorch و C++ هستند. در مثال زیر، ما یک فایل relu.cpp با توابع سفارشی Relu forward و backward ایجاد می کنیم:
هنگام توسعه Neuron CustomOp برای Neuron، مطمئن شوید که ویژگیها و APIهای پشتیبانیشده در حال حاضر را در نظر گرفتهاید. برای اطلاعات بیشتر مراجعه کنید راهنمای مرجع API اپراتورهای سفارشی [تجربی].
Neuron CustomOp: تابع شکل را بسازید و ثبت کنید
بیلد برای Neuron CustomOp و محیط زمان اجرا، نمونه Trn1 است که آموزش در آن انجام می شود، و Neuron CustomOp به عنوان یک کتابخانه neuronx-cc ثبت و ثبت می شود و توسط Neuron زمان اجرا تفسیر می شود تا بر روی GP-SIMD بسیار بهینه شده اجرا شود. موتور
برای ساختن و ثبت Neuron CustomOp، باید یک تابع شکل (shape.cpp
) که تانسورهای ورودی و خروجی را تعریف می کند و عملگرها را ثبت می کند: the relu_fwd_shape
و relu_bwd_shape
توابع. کد زیر را ببینید:
La relu_fwd_shape
و relu_bwd_shape
توابع شکل تانسور خروجی را تعریف می کنند (به اندازه تانسور ورودی). سپس توابع را در قسمت ثبت می کنیم NEURON_LIBRARY
محدوده.
در ./customop_ml/
به عنوان مثال مخزن نورون، ما یک اسکریپت build.py برای اجرای ساخت و ثبت CustomOp داریم، به سادگی با فراخوانی تابع load از torch_neuronx.xla_impl
بسته بندی:
در build_directory
, ما باید پیدا کنیم librelu.so
کتابخانه آماده بارگیری و استفاده در آموزش مدل ما است.
مدل MLP را با Neuron CustomOp بسازید
در این قسمت مراحل ساخت مدل MLP با Neuron CustomOp را طی می کنیم.
کلاس Relu را تعریف کنید
برای توضیح دقیق نحوه آموزش یک مدل MLP به ادامه مطلب مراجعه کنید آموزش چندلایه پرسپترون.
پس از ساخت CustomOp، یک بسته پایتون به نام ایجاد می کنیم my_ops.py
، جایی که ما یک کلاس Relu PyTorch تعریف می کنیم که از تابع torch autograd به ارث می رسد. تابع autograd تمایز خودکار را پیاده سازی می کند، به طوری که می توان از آن در یک حلقه آموزشی استفاده کرد.
ابتدا کتابخانه librelu.so را بارگذاری می کنیم، سپس کلاس جدید را با توابع جلو و عقب تعریف شده با دکوراتورهای متد استاتیک تعریف می کنیم. به این ترتیب، زمانی که مدل را تعریف می کنیم، می توان متدها را مستقیماً فراخوانی کرد. کد زیر را ببینید:
مدل MLP را بررسی کنید
اکنون ما آماده ایم تا با وارد کردن مدل پرسپترون چندلایه خود با Neuron CustomOp خود بنویسیم my_ops
بسته ای که در آن کلاس Relu را تعریف کرده ایم:
اسکریپت آموزشی را اجرا کنید
اکنون می توانیم مدل خود را با استفاده از آن آموزش دهیم train.py
اسکریپت ارائه شده:
با ارسال مدل به دستگاه xla، مدل و اپراتور سفارشی Relu کامپایل میشوند تا توسط Neuron runtime با استفاده از سختافزار بهینهسازی شده Trainium اجرا شوند.
در این مثال، نحوه ایجاد یک اپراتور Relu سفارشی را نشان دادیم که از موتور سخت افزاری (GP-SIMD) موجود در تراشه شتاب دهنده Trainium ML بهره می برد. نتیجه یک مدل PyTorch آموزش دیده است که اکنون می تواند برای استنتاج به کار گرفته شود.
نتیجه
معماری های مدل مدرن به تعداد فزاینده ای از منابع از کارکنان مهندسی (دانشمندان داده، مهندسان ML، مهندسان MLOps و دیگران) تا زیرساخت های واقعی از جمله ذخیره سازی، محاسبات، حافظه و شتاب دهنده ها نیاز دارند. این الزامات هزینه و پیچیدگی توسعه و به کارگیری مدل های یادگیری عمیق را افزایش می دهد. شتاب دهنده های Trainium راه حلی با کارایی بالا و کم هزینه برای آموزش DL در فضای ابری ارائه می دهند. استفاده از Trainium توسط Neuron SDK تسهیل میشود که شامل یک کامپایلر یادگیری عمیق، زمان اجرا و ابزارهایی است که به صورت بومی در چارچوبهای محبوبی مانند PyTorch و TensorFlow ادغام شدهاند. (توجه داشته باشید که در زمان نگارش، Neuron SDK 2.9 فقط از PyTorch برای توسعه عملگرهای سفارشی پشتیبانی می کند.)
همانطور که در این پست نشان داده شد، Trainium نه تنها ابزاری را برای آموزش مدلهای شما به صورت کارآمد و کارآمد فراهم میکند، بلکه توانایی شخصیسازی اپراتورهای خود را برای افزودن انعطافپذیری و بیان هم به آموزش و هم به آزمایش ارائه میدهد.
برای اطلاعات بیشتر به این بخش مراجعه کنید GitHub repo.
درباره نویسنده
لورآ آریزابالاگا یک معمار Solutions است که با بخش عمومی بریتانیا هماهنگ است، جایی که به مشتریان کمک می کند راه حل های ML را با Amazon SageMaker طراحی کنند. او همچنین بخشی از انجمن حوزه فنی است که به شتاب سختافزار اختصاص دارد و به آزمایش و محک زدن بارهای کاری AWS Inferentia و AWS Trainium کمک میکند.
شروتی کپرکار مدیر ارشد بازاریابی محصول در AWS است. او به مشتریان کمک میکند تا زیرساختهای محاسباتی شتابدهی آمازون EC2 را برای نیازهای یادگیری ماشین خود کاوش، ارزیابی و استفاده کنند.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoAiStream. Web3 Data Intelligence دانش تقویت شده دسترسی به اینجا.
- ضرب کردن آینده با آدرین اشلی. دسترسی به اینجا.
- منبع: https://aws.amazon.com/blogs/machine-learning/how-to-extend-the-functionality-of-aws-trainium-with-custom-operators/
- : دارد
- :است
- :نه
- :جایی که
- $UP
- 1
- 10
- 100
- 102
- 11
- 13
- 20
- 28
- 7
- 8
- 84
- 9
- a
- توانایی
- شتاب دادن
- تسریع شد
- تسریع می شود
- تسریع
- شتاب
- شتاب دهنده
- شتاب دهنده ها
- دسترسی
- حساب
- در میان
- فعال سازی
- اضافه کردن
- اتخاذ
- مزیت - فایده - سود - منفعت
- هم راستا
- معرفی
- اجازه می دهد تا
- در امتداد
- قبلا
- همچنین
- آمازون
- آمازون EC2
- آمازون SageMaker
- an
- و
- هر
- API
- رابط های برنامه کاربردی
- کاربرد
- معماری
- هستند
- AS
- At
- خودکار
- اتوماتیک
- در دسترس
- AWS
- استنتاج AWS
- به عقب
- پهنای باند
- مستقر
- اساسی
- BE
- بوده
- بودن
- مزایای
- خارج از
- بلاک ها
- هر دو
- بسته
- مرز
- ساختن
- بنا
- می سازد
- ساخته
- ساخته شده در
- اما
- by
- ++C
- صدا
- نام
- فراخوانی
- CAN
- قابلیت های
- موارد
- تراشه
- کلاس
- کلاس ها
- ابر
- رمز
- جمع آوری
- انجمن
- سازگار
- به طور کامل
- پیچیده
- پیچیدگی
- اجزاء
- محاسبه
- محاسبات
- محاسبه
- محاسبه
- به طور مداوم
- شامل
- ادامه دادن
- هسته
- هزینه
- همراه
- پوشش
- پردازنده
- ایجاد
- ایجاد
- در حال حاضر
- سفارشی
- مشتریان
- سفارشی
- داده ها
- مجموعه داده ها
- اختصاصی
- عمیق
- یادگیری عمیق
- پیش فرض
- مشخص
- تعریف می کند
- تعریف کردن
- ارائه
- نشان
- گسترش
- مستقر
- استقرار
- توصیف
- شرح داده شده
- طرح
- طراحی
- جزئیات
- دقیق
- برنامه نویس
- توسعه دهندگان
- در حال توسعه
- پروژه
- دستگاه
- مختلف
- مستقیم
- مستقیما
- نمی کند
- درایور
- e
- آسان تر
- به آسانی
- ساده
- آسان برای استفاده
- موثر
- موثر
- هر دو
- جاسازی شده
- قادر ساختن
- را قادر می سازد
- پایان
- موتور
- مهندسی
- مورد تأیید
- موتورهای حرفه ای
- اطمینان حاصل شود
- محیط
- دوره
- دوره ها
- اتر (ETH)
- ارزیابی
- ارزیابی
- همه چیز
- مثال
- مثال ها
- اعدام
- موجود
- توضیح
- اکتشاف
- صریح
- گسترش
- گسترش
- f1
- تسهیل
- تسهیل می کند
- آشنایی
- FAST
- سریعتر
- امکانات
- رشته
- پرونده
- نهایی
- پیدا کردن
- رفع
- انعطاف پذیری
- قابل انعطاف
- شناور
- به دنبال
- پیروی
- برای
- فرم
- قالب
- به جلو
- یافت
- چهار
- چارچوب
- از جانب
- ظاهر
- کاملا
- تابع
- تابعی
- قابلیت
- توابع
- سوالات عمومی
- همه منظوره
- ژنراتور
- دریافت کنید
- جهانی
- Go
- راهنمایی
- دسته
- سخت افزار
- آیا
- کمک
- مفید
- کمک می کند
- زیاد
- عملکرد بالا
- خیلی
- میزبان
- چگونه
- چگونه
- HTML
- HTTP
- HTTPS
- i
- IDX
- if
- تصویر
- انجام
- پیاده سازی
- اجرا
- پیاده سازی می کند
- ضمنی
- واردات
- واردات
- واردات
- بهبود یافته
- in
- مشمول
- شامل
- از جمله
- افزایش
- افزایش
- افزایش
- مستقل
- نشان داد
- اطلاعات
- شالوده
- نوآوری
- ابداع
- ورودی
- نصب شده
- نمونه
- در عوض
- دستورالعمل
- یکپارچه
- ادغام
- ادغام
- رابط
- صمیمی
- به
- IT
- تکرار
- JPG
- دانش
- بزرگ
- نام
- راه اندازی
- لایه
- لایه
- برجسته
- یادگیری
- کتابخانه ها
- کتابخانه
- پسندیدن
- محدود شده
- لینوکس
- بار
- بارکننده
- بارهای
- نگاه کنيد
- خاموش
- کم هزینه
- دستگاه
- فراگیری ماشین
- ماکرو
- اصلی
- ساخت
- باعث می شود
- مدیر
- روش
- بازار یابی (Marketing)
- ریاضی
- به معنی
- مکانیزم
- مکانیسم
- خاطرات
- حافظه
- روش
- روش
- حداقل
- مخلوط
- ML
- MLO ها
- مدل
- مدل
- پیمانهای
- واحد
- بیش
- حرکت
- چندگانه
- نام
- لازم
- نیاز
- ضروری
- نیازهای
- جدید
- توجه داشته باشید
- اکنون
- عدد
- of
- پیشنهادات
- رسمی
- on
- ONE
- فقط
- عملیات
- اپراتور
- اپراتور
- بهینه
- or
- نشات گرفته
- OS
- دیگر
- دیگران
- ما
- تولید
- خود
- بسته
- پارامتر
- بخش
- انجام دادن
- کارایی
- محل
- افلاطون
- هوش داده افلاطون
- PlatoData
- محبوب
- پست
- دقت
- آماده
- در حال حاضر
- جلوگیری از
- روند
- پردازنده ها
- محصول
- برنامه نويسي
- ارائه
- ارائه
- فراهم می کند
- عمومی
- هدف
- فشار
- پــایتــون
- مارماهی
- r2
- تصادفی
- سریع
- خواندن
- اماده
- واقعا
- ثبت نام
- ثبت نام
- ثبت
- منظم
- مخزن
- نیاز
- ضروری
- مورد نیاز
- نیاز
- منابع
- نتیجه
- برگشت
- قابل استفاده مجدد
- ریشه
- دویدن
- در حال اجرا
- اجرا می شود
- حکیم ساز
- همان
- ذخیره
- دانشمندان
- حوزه
- sdk
- بخش
- بخش
- دیدن
- دانه
- خود
- در حال ارسال
- ارشد
- خدمات
- تنظیم
- شکل
- او
- کوتاه
- باید
- نشان می دهد
- امضا
- ساده
- به سادگی
- تنها
- اندازه
- So
- نرم افزار
- راه حل
- مزایا
- برخی از
- خاص
- به طور خاص
- مشخص شده
- سرعت
- کارکنان
- استاندارد
- شروع
- آغاز شده
- وضعیت هنر
- ایالات
- ارقام
- مراحل
- ذخیره سازی
- ذخیره شده
- جریان
- چنین
- تهیه
- پشتیبانی
- پشتیبانی
- حمایت از
- پشتیبانی از
- مطمئن
- سیستم های
- گرفتن
- طول می کشد
- فنی
- جریان تنسور
- آزمون
- تست
- که
- La
- انگلستان
- شان
- آنها
- سپس
- از این رو
- اینها
- آنها
- این
- کسانی که
- از طریق
- توان
- محکم
- زمان
- به
- با هم
- ابزار
- مشعل
- چشم انداز مشعل
- قطار
- آموزش دیده
- آموزش
- آموزش
- دو
- نوعی
- Uk
- اساسی
- استفاده کنید
- استفاده
- با استفاده از
- معمولا
- ارزشها
- نسخه
- از طريق
- حجم
- مسیر..
- راه
- we
- خوب
- چه زمانی
- که
- وسیع
- اراده
- با
- در داخل
- بدون
- گردش کار
- کارگر
- خواهد بود
- نوشتن
- نوشته
- کتبی
- X
- XM
- شما
- شما
- زفیرنت