Salesforce تتعهد باستثمار 15 مليار دولار على مدى خمس سنوات لمساعدة سان فرانسيسكو على أن تصبح مركزًا عالميًا للابتكار في مجال الذكاء الاصطناعي
تفاصيل مشروع nanochat
نظرة عامة على المشروع
nanochat هو مشروع لتطبيق نموذج لغوي كبير (LLM) كامل المكدس، تم تطويره بواسطة باحث الذكاء الاصطناعي المعروف Andrej Karpathy. يهدف المشروع إلى إظهار كيفية بناء روبوت محادثة مشابه لـ ChatGPT من الصفر، بأقل قدر من التعليمات البرمجية وأدنى تكلفة.
شعار المشروع: "أفضل ChatGPT يمكن شراؤه بمبلغ 100 دولار."
الميزات الأساسية
1. فلسفة التصميم البسيطة للغاية
- قاعدة تعليمات برمجية واحدة، واضحة، مصغرة، وقابلة للتعديل.
- تصميم يعتمد على الحد الأدنى من التبعيات.
- حوالي 8,300 سطر من التعليمات البرمجية، 44 ملفًا.
- إجمالي حوالي 83,497 رمزًا (حوالي 334 كيلوبايت).
2. عملية كاملة من البداية إلى النهاية
يغطي nanochat جميع جوانب بناء LLM:
- Tokenization (تقسيم الكلمات إلى رموز)
- Pretraining (التدريب المسبق)
- Finetuning (الضبط الدقيق)
- Evaluation (التقييم)
- Inference (الاستدلال)
- Web Serving (خدمة الويب)
3. تدريب منخفض التكلفة
- الإصدار الأساسي (مستوى 100 دولار): يكتمل في حوالي 4 ساعات على عقدة 8×H100.
- الإصدار المتوسط (مستوى 300 دولار): حوالي 12 ساعة، أداء يتجاوز GPT-2 قليلاً.
- الإصدار المتقدم (مستوى 1000 دولار): حوالي 41.6 ساعة.
4. التوجه التعليمي
- مصمم كمشروع تخرج لدورة LLM101n في Eureka Labs.
- التعليمات البرمجية سهلة القراءة للغاية، مما يسهل التعلم والفهم.
- مناسب للمطورين الذين يرغبون في فهم عملية تدريب LLM بالكامل بعمق.
البدء السريع
تشغيل سكريبت التدريب السريع
على عقدة GPU من نوع 8×H100:
bash speedrun.sh
أو قم بالتشغيل في جلسة screen (موصى به):
screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
بعد حوالي 4 ساعات، ستحصل على نموذج LLM جاهز للاستخدام.
تشغيل واجهة الويب
بعد اكتمال التدريب، قم بتنشيط البيئة الافتراضية وتشغيل الخدمة:
source .venv/bin/activate
python -m scripts.chat_web
ثم قم بزيارة عنوان URL المعروض (على سبيل المثال http://209.20.xxx.xxx:8000/)، ويمكنك التحدث مع LLM الخاص بك تمامًا كما تفعل مع ChatGPT.
أمثلة على نتائج التدريب
بعد اكتمال التدريب، سيتم إنشاء ملف report.md، يحتوي على مقاييس تقييم النموذج:
Metric | BASE | MID | SFT | RL
---------------|--------|--------|--------|-------
CORE | 0.2219 | - | - | -
ARC-Challenge | - | 0.2875 | 0.2807 | -
ARC-Easy | - | 0.3561 | 0.3876 | -
GSM8K | - | 0.0250 | 0.0455 | 0.0758
HumanEval | - | 0.0671 | 0.0854 | -
MMLU | - | 0.3111 | 0.3151 | -
ChatCORE | - | 0.0730 | 0.0884 | -
Total wall clock time: 3h51m
ملاحظة: أداء النموذج المدرب بمبلغ 100 دولار محدود (حوالي 4e19 FLOPs)، وهو ما يعادل قدرة لغوية "على مستوى رياض الأطفال"، ولكنه كافٍ لعرض عملية التدريب الكاملة.
التوسع إلى نماذج أكبر
لتدريب نماذج أكبر (مثل نموذج d26 بمستوى GPT-2)، ما عليك سوى إجراء تعديلات طفيفة على speedrun.sh:
# 1. تنزيل المزيد من أجزاء البيانات
python -m nanochat.dataset -n 450 &
# 2. زيادة عمق النموذج، وتقليل حجم الدفعة لاستيعاب الذاكرة
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26 --device_batch_size=16
# 3. أثناء التدريب المتوسط، حافظ على نفس التكوين
torchrun --standalone --nproc_per_node=8 -m scripts.mid_train -- --device_batch_size=16
متطلبات بيئة التشغيل
التكوين الموصى به
- عقدة GPU من نوع 8×H100 80GB (حوالي 24 دولارًا/ساعة)
- مزود موصى به: Lambda GPU Cloud
التوافق
- 8×A100 GPU: يمكن تشغيله، ولكن بسرعة أبطأ.
- GPU واحد: يمكن تشغيله، ولكن وقت التدريب يزداد 8 أضعاف.
- GPU بذاكرة صغيرة (<80GB): يتطلب تعديل معلمة
--device_batch_size(من 32 إلى 16، 8، 4، 2، أو 1). - منصات أخرى: يعتمد على PyTorch، ويدعم نظريًا xpu، mps، وما إلى ذلك، ولكنه يتطلب تكوينًا إضافيًا.
المكدس التقني
- إطار التعلم العميق: PyTorch
- التدريب الموزع: torchrun
- إدارة الحزم: uv
- مجموعات البيانات: HuggingFace Fineweb, Smoltalk
- مقسم الكلمات (Tokenizer): تطبيق Rust مخصص (rustbpe)
استكشاف التعليمات البرمجية من خلال محادثة الذكاء الاصطناعي
نظرًا لبساطة قاعدة التعليمات البرمجية (~330 كيلوبايت)، يمكن تجميع المشروع بأكمله وتقديمه لـ LLM لتحليله:
files-to-prompt . -e py -e md -e rs -e html -e toml -e sh --ignore "*target*" --cxml > packaged.txt
أو استخدم DeepWiki لاستكشاف قاعدة التعليمات البرمجية عبر الإنترنت مباشرةً.
الاختبار
يحتوي المشروع على اختبارات وحدات، خاصة لمقسم الكلمات:
python -m pytest tests/test_rustbpe.py -v -s
موقع المشروع وأهدافه
nanochat ليس:
- إطار عمل LLM كامل الميزات.
- مصنع نماذج عالي التكوين.
- حلًا على مستوى الإنتاج.
nanochat هو:
- تطبيق مرجعي ذو طبيعة تعليمية.
- أساس قوي قابل للتعديل والتفرع.
- بحث في النماذج المصغرة بميزانية أقل من 1000 دولار.
- تقليل التعقيد المعرفي لتطوير LLM.
تاريخ المشروع وشكر وتقدير
مصدر الإلهام:
- nanoGPT - مشروع التدريب المسبق المبكر لـ Karpathy.
- modded-nanoGPT - نسخة معدلة من nanoGPT.
شكر وتقدير:
- HuggingFace - لتوفير مجموعات بيانات fineweb و smoltalk.
- Lambda - لتوفير قوة الحوسبة اللازمة للتطوير.
- Alec Radford - المستشار الرئيسي لـ LLM.
رخصة المصدر المفتوح
رخصة MIT
تنسيق الاقتباس
@misc{nanochat,
author = {Andrej Karpathy},
title = {nanochat: The best ChatGPT that $100 can buy},
year = {2025},
publisher = {GitHub},
url = {https://github.com/karpathy/nanochat}
}
حالة المشروع
المشروع لا يزال قيد التطوير النشط، والهدف هو التحسين المستمر لأحدث مستويات النماذج المصغرة، مما يتيح للمزيد من الأشخاص تجربة عملية تدريب LLM بالكامل بتكلفة معقولة.
عنوان GitHub: https://github.com/karpathy/nanochat