عن المشروع

nanochat هو جهاز تجريبي بسيط وقابل للتعديل لتدريب النماذج اللغوية الكبيرة (LLMs) على عقدة GPU واحدة. يغطي كامل دورة تدريب النموذج: التوكنتization (tokenization)، التدريب المسبق، ضبط الأداء الدقيق (SFT وRL)، التقييم، والاستدلال. ينطلق المشروع من فلسفة البساطة: بدلًا من تقديم عشرات المقابس التكوينية، يستخدم nanochat عتلة تعقيد واحدة (`--depth`) تمثل عدد طبقات المحوّل (transformer layers)، ويستمد منها جميع المعلمات_hyper_ الأخرى (عرض النموذج، عدد الرؤوس، معدل التعلم، أفق التدريب، اضمحلال الوزن) بطريقة مُحسَّنة حوسبيًا. يساعد هذا الأمر في إنتاج سلسلة مصغّرة من النماذج بأحجام مختلفة. يستغرق تدريب نموذج بحجم GPT-2 (عمق ~24–26 طبقة) على عقدة مكونة من 8×H100 حوالي 1.5 ساعة بتكلفة تقارب 48 دولارًا (~3 دولارات/GPU/ساعة). وباستخدام وحدات spot تنخفض التكلفة إلى حوالي 15 دولارًا، مقابل تكلفة original GPT-2 التي بلغت ~43,000 دولار في 2019. الميزات الرئيسية: - مرسمة BPE مع عرض دردشة بأسلوب GPT-4 - تنفيذ لمحوّل GPT بلغة PyTorch الأساسية - تدريب موزّع عبر `torchrun` مع fallback تلقائي لـ GPU واحد وتراكم المتدرجات - إدارة صريحة للدقة المختلطة (bfloat16، float16، float32) بدون استخدام `autocast` - تقييم عبر DCLM CORE score، خسارة البت-للكلمة، ومعايير مهمة (ARC, GSM8K, MMLU, HumanEval) - سكربتات RL وSFT لتدريب نماذج الدردشة - محرك استدعاء مع دعم KV cache - لوحة متصدرين لحساب زمن الوصول لقدرات GPT-2 تم تصميم الكود لدعم البحث والتكرار السريع: تجربة سريعة لطبقتين (~5 دقائق) تتيح للمطورين اختبار التغييرات قبل التشغيل الكامل. المشروع كتبه وقام بصيانته Andrej Karpathy.