Notice: file_put_contents(): Write of 15326 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 4096 of 19422 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
PyTorch Howsam@pytorch_howsam P.556
PYTORCH_HOWSAM Telegram 556
PyTorch Howsam
ویدئوی جدید Andrej Karpathy 🤩 Let's Reproduce GPT-2 (124M) 4 ساعت! 😁 بریم ببینیم چطوری GPT-2 رو پیاده‌سازی کرده! لینک ویدئو
امروز، کمی زمان خالی داشتم و رفتم ادامه ویدئوی چهارساعته Andrej Karpathy برای پیاده‌سازی و آموزش GPT-2 رو ببینم. این ویدئو شامل چند بخش هست که من قبلا بخش اول رو دیده بودم. در بخش اول، مدل GPT-2 رو کامل پیاده‌سازی کرد و کارهای اولیه برای آموزش مدل رو انجام داد.

بخش دوم این ویدئو مربوط به کاهش زمان فرآیند آموزش مدل هست. در پایان بخش اول، مدت زمان آموزش مدل برای هر ایپاک روی دیتاست شکسپیر حدود 1000 میلی ثانیه هست. در بخش دوم، تکنیک‌های مختلفی رو گام به گام اعمال میکنه و مدت زمان آموزش مدل رو کاهش میده. درادامه، به‌صورت خلاصه این تکنیک‌ها رو همراه با عدد و رقم گفتم...

در اولین گام، بجای آموزش مدل با float32 از TF32 یا تنسورفلوت 32 بیتی استفاده کرد. این باعث شد که مدت زمان اجرای هر ایپاک از 1000 به 333 میلی ثانیه کاهش پیدا کنه! البته، روی کاغذ انتظار 8 برابر بهتر شدن سرعت میرفت، ولی در عمل 3 برابر شد. این قابلیت TF32 بیتی برای هر GPU-ای فعال نیست. مثلا، A100 این قابلیت رو داره. مطالعه بیشتر

در گام دوم، بجای TF32 از bFloat16 استفاده کرد و زمان اجرای هر ایپاک از 333 به 300 میلی ثانیه رسید. بازهم این قابلیت در همه GPU-ها وجود نداره.

در گام سوم، از torch.compile پایتورچ استفاده کرد و مدت زمان اجرای هر ایپاک از 300 به 130 میلی ثانیه کاهش پیدا کرد. کاهش زمانی بسیار زیادی بود. کار ساده‌ای هم هست.

در گام چهارم، بجای attention از flash attention استفاده کرد و مدت زمان از 130 به 96 میلی ثانیه رسید! این flash attention توی پایتورچ موجود هست و نیازی به پیاده‌سازی از صفر یا کتابخونه جانبی هم نیست.

و اما گام پنجم! پیشنهاد کرد که اعداد و هایپرپارامترهای موجود در کد رو به توانی از 2 تبدیل کنیم. توانی از 2 رو اعداد نایسی میدونه و GPU باهاش بهینه‌تر کار میکنه. مثلا وکب سایزش 50257 بود که این عدد زشتی هست! عدد رو تبدیل به 50304 کرد که باعث شد مدت زمان از 96 به 93 میلی ثانیه برسه! وکب سایز بزرگتر شد، ولی زمان کل کمتر! 😁 درسته که 50304 توانی از 2 نیست، اما تقریبا نایس هست، چون بر 2 4 8 16 32 64 128 بخش‌پذیره. اعداد زشت دیگه‌ای هم توی کد بود؛ مثل تعداد لایه‌ها، تعداد head در اتنشن که دیگه اینها رو دستکاری نکرد. بقیه زشت‌ها با من و شما...

خلاصه اینکه، با یکسری تکنیک ساده ولی هوشمندانه، مدت زمان آموزش مدل به ازای هر ایپاک رو از 1000 میلی ثانیه به 93 میلی ثانیه رسوند. البته، خیلی از این روش‌ها الان در مقالات استفاده میشن و اینطور نیست که وجود نداشته باشه.

یبار نگی 1000 میلی ثانیه برای یک ایپاک چیزی نیست! گناه بزرگیه! بخش سوم رو هنوز ندیدم...

@pytorch_howsam



tgoop.com/pytorch_howsam/556
Create:
Last Update:

امروز، کمی زمان خالی داشتم و رفتم ادامه ویدئوی چهارساعته Andrej Karpathy برای پیاده‌سازی و آموزش GPT-2 رو ببینم. این ویدئو شامل چند بخش هست که من قبلا بخش اول رو دیده بودم. در بخش اول، مدل GPT-2 رو کامل پیاده‌سازی کرد و کارهای اولیه برای آموزش مدل رو انجام داد.

بخش دوم این ویدئو مربوط به کاهش زمان فرآیند آموزش مدل هست. در پایان بخش اول، مدت زمان آموزش مدل برای هر ایپاک روی دیتاست شکسپیر حدود 1000 میلی ثانیه هست. در بخش دوم، تکنیک‌های مختلفی رو گام به گام اعمال میکنه و مدت زمان آموزش مدل رو کاهش میده. درادامه، به‌صورت خلاصه این تکنیک‌ها رو همراه با عدد و رقم گفتم...

در اولین گام، بجای آموزش مدل با float32 از TF32 یا تنسورفلوت 32 بیتی استفاده کرد. این باعث شد که مدت زمان اجرای هر ایپاک از 1000 به 333 میلی ثانیه کاهش پیدا کنه! البته، روی کاغذ انتظار 8 برابر بهتر شدن سرعت میرفت، ولی در عمل 3 برابر شد. این قابلیت TF32 بیتی برای هر GPU-ای فعال نیست. مثلا، A100 این قابلیت رو داره. مطالعه بیشتر

در گام دوم، بجای TF32 از bFloat16 استفاده کرد و زمان اجرای هر ایپاک از 333 به 300 میلی ثانیه رسید. بازهم این قابلیت در همه GPU-ها وجود نداره.

در گام سوم، از torch.compile پایتورچ استفاده کرد و مدت زمان اجرای هر ایپاک از 300 به 130 میلی ثانیه کاهش پیدا کرد. کاهش زمانی بسیار زیادی بود. کار ساده‌ای هم هست.

در گام چهارم، بجای attention از flash attention استفاده کرد و مدت زمان از 130 به 96 میلی ثانیه رسید! این flash attention توی پایتورچ موجود هست و نیازی به پیاده‌سازی از صفر یا کتابخونه جانبی هم نیست.

و اما گام پنجم! پیشنهاد کرد که اعداد و هایپرپارامترهای موجود در کد رو به توانی از 2 تبدیل کنیم. توانی از 2 رو اعداد نایسی میدونه و GPU باهاش بهینه‌تر کار میکنه. مثلا وکب سایزش 50257 بود که این عدد زشتی هست! عدد رو تبدیل به 50304 کرد که باعث شد مدت زمان از 96 به 93 میلی ثانیه برسه! وکب سایز بزرگتر شد، ولی زمان کل کمتر! 😁 درسته که 50304 توانی از 2 نیست، اما تقریبا نایس هست، چون بر 2 4 8 16 32 64 128 بخش‌پذیره. اعداد زشت دیگه‌ای هم توی کد بود؛ مثل تعداد لایه‌ها، تعداد head در اتنشن که دیگه اینها رو دستکاری نکرد. بقیه زشت‌ها با من و شما...

خلاصه اینکه، با یکسری تکنیک ساده ولی هوشمندانه، مدت زمان آموزش مدل به ازای هر ایپاک رو از 1000 میلی ثانیه به 93 میلی ثانیه رسوند. البته، خیلی از این روش‌ها الان در مقالات استفاده میشن و اینطور نیست که وجود نداشته باشه.

یبار نگی 1000 میلی ثانیه برای یک ایپاک چیزی نیست! گناه بزرگیه! بخش سوم رو هنوز ندیدم...

@pytorch_howsam

BY PyTorch Howsam


Share with your friend now:
tgoop.com/pytorch_howsam/556

View MORE
Open in Telegram


Telegram News

Date: |

It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. Concise Click “Save” ; Telegram is a leading cloud-based instant messages platform. It became popular in recent years for its privacy, speed, voice and video quality, and other unmatched features over its main competitor Whatsapp. Telegram has announced a number of measures aiming to tackle the spread of disinformation through its platform in Brazil. These features are part of an agreement between the platform and the country's authorities ahead of the elections in October.
from us


Telegram PyTorch Howsam
FROM American