مدل nanoGPT
در سال ۲۰۱۹، OpenAI مدل GPT-2 را معرفی کرد. OpenAI، برخلاف مدلهای بعدی (GPT-3 و GPT-4)، سورس کد و وزنهای نسخههای مختلف مدل GPT-2 را منتشر کرد. با رشد LLM در سالهای بعد، این علاقه برای بسیاری از افراد شکل گرفت که با اهداف آموزشی، خودشان مدل GPT-2 را از ابتدا بسازند و آموزش دهند. یکی از این افراد، آقای Andrej Karpathy بود. حتی ویدئوی آموزشی آن را هم ساخت که بسیار آموزنده بود. یکی دیگر از کارهایی که ایشان انجام داد، ساخت llm.c بود. ساخت مدل GPT-2 بر پایه C و CUDA که بازهم کار اثرگذاری بود. در این پست میخواهم یکی از آثار جالب کارهای آقای Karpathy در راستای ساخت مدل GPT-2 برای شما بگویم. با من همراه باشید…
مدل nanoGPT
حدود چهار ماه پیش، آقای Karpathy پستی در X منتشر کرد که ترجمه خلاصه آن را به کمک ChatGPT در زیر آوردم:
در سال ۲۰۱۹، OpenAI مدل GPT-2 رو معرفی کرد. امروز، بعد حدودا ۵ سال، میتونید مدل مشابهی رو تنها با حدود ۶۷۲ دلار و یک نود 8XH100 GPU طی ۲۴ ساعت آموزش بدید. پروژه llm.c که روی اون کار کردم، راهنمای کاملی برای این فرآیند ارائه میده. پیشرفتهای سختافزاری (مثل، GPUهای H100)، نرمافزاری (CUDA، cuBLAS، FlashAttention) و دادههای باکیفیت (مثل FineWeb-Edu) هزینهها رو چشمگیر کاهش دادن. llm.c مستقیماً با C/CUDA نوشته شده و نیازی به محیطهای پیچیده Python یا ابزارهایی مانند pip نداره. فقط یک نود GPU ابری رو راهاندازی میکنید، ملزومات رو نصب میکنید و در چند دقیقه آماده اجرا میشه. این پروژه از علاقهام به بازتولید GPT-2 برای یک ویدیوی آموزشی شروع شد. اما در ادامه مسیر، یادگیری بیشتر CUDA، بازنویسی همهچیز از صفر (حدود ۵,۰۰۰ خط کد) و ساخت سیستمی سریع، کوچک و پایدار رو در پی داشت. هنوز کارهای زیادی باقی مونده، از جمله بهبود پایداری آموزش برای مدلهای بزرگتر، تست fp8 و اضافه کردن معماریهای مدرنتر.
خب، مثل خیلی از کارهای Karpathy، این کار هم با استقبال قابل توجهی مواجه شد. مثلا، یک پویشی راه افتاد که هزینه آموزش مدل GPT-2 124M رو روی دیتاست FineWeb برای رسیدن به لاس 3.28 کاهش بدن. در واقع، هدف این بود که بیایید یک کاری کنیم، هرچه سریعتر به لاس 3.28 روی ولیدیشن دیتاست FineWeb برسیم.
این مدت، من میدیدم که افرادی از کاهش زمان آموزش مدل میگفتند و مدام پیگیری میکردم. مثلا، Keller Jordan خیلی روی این پروژه کار میکرد و خیلی پست میگذاشت. حالا بعد از چهار ماه، Karpathy یک پستی درباره این ماجرا منتشر کرده:
یادتون میاد با llm.c بازتولید آموزش مدل GPT-2 124M حدود ۴۵ دقیقه روی 8XH100 زمان میبرد؟ از اون موقع، Keller Jordan (و حالا خیلیهای دیگه) روی نسخه جدید و اصلاحشده NanoGPT کار کردن و این زمان رو به فقط ۵ دقیقه کاهش دادن! عاشق این ریپو هستم؛ 👏 ۶۰۰ خط کد!
لیست کارهای Keller Jordan برای رسیدن به 5 دقیقه را میتوانید در تصویر زیر ببینید. این مسیر جذاب از 45 دقیقه شروع شد و رفته رفته با ایدههای مختلف به 5 دقیقه رسید! کنار هر ایده (آیتم) نوشته شده که میزان زمان اجرا به چه عددی رسیده است. یکی از موارد جالب، آیتم شماره 7 (آپگرید پایتورچ از 2.4 به 2.5) هست. بنابراین، اگر پروژه مهمی داریم، بهتر هست که از آخرین نسخه پایتورچ استفاده کنیم.
برای من این ساختن مدلها و روشهای با هزینه کم و قابل اجرا برای همه بسیار ارزشمند و جذاب هست. همواره این نوع کارها را پیگیری میکنم. برای من بسیار آموزنده و الهامبخش هستند.
آب دریا را اگر نتوان کشید، هم به قدر تشنگی باید چشید!
دیدگاهتان را بنویسید