TL;DR (خلاصة سريعة)
nanochat هو إطار عمل تدريب نماذج لغوية كبيرة (LLM) مفتوح المصدر من أندريه كارباثي، يتيح لك تدريب روبوت محادثة بمستوى GPT-2 بأقل من 50 دولارًا وفي حوالي ساعتين. يستخدم المشروع عقدة واحدة من وحدات معالجة الرسوميات 8xH100، وكودًا برمجيًا بسيطًا (حوالي 500 سطر للنموذج الأساسي)، ومؤشر ضبط واحد (--depth) لتحسين جميع المعلمات الفائقة تلقائيًا. تُظهر السجلات الحالية اكتمال التدريب في 1.65 ساعة بنتيجة CORE قدرها 0.2626، متجاوزًا GPT-2 من OpenAI لعام 2019 الذي كلف 43,000 دولار واستغرق 168 ساعة.
مقدمة
كان تدريب نموذج لغوي كبير يتطلب ملايين الدولارات وفريقًا من باحثي الدكتوراه. لقد ولت تلك الأيام.
أصدر أندريه كارباثي للتو مشروع nanochat، وهو مشروع مفتوح المصدر يقوم بتدريب ذكاء اصطناعي محادثة قادر بتكلفة أقل من تكلفة عشاء جيد. تعمل عملية التدريب بأكملها على عقدة واحدة من وحدات معالجة الرسوميات 8xH100 GPU وتكتمل في أقل من ساعتين.
لماذا هذا مهم الآن
تغير مشهد الذكاء الاصطناعي بشكل كبير في أوائل عام 2026. ما استغرق من OpenAI 168 ساعة و 43,000 دولار في عام 2019، يستغرق الآن 1.65 ساعة و 48 دولارًا. هذه سرعة تزيد بمقدار 100 ضعف مدفوعة بتحسينات الخوارزميات، والأجهزة الأفضل، وتحسينات المجتمع.
بالنسبة لمطوري واجهات برمجة التطبيقات (API) والفرق التي تبني تطبيقات مدعومة بالذكاء الاصطناعي، يغير هذا كل شيء. يمكنك الآن تجربة تدريب النماذج المخصصة، واختبار التغييرات المعمارية، وفهم آليات النماذج اللغوية الكبيرة (LLM) الداخلية دون الحاجة إلى ميزانيات ضخمة للبنية التحتية.
ماذا ستتعلم
بحلول نهاية هذه المقالة، ستفهم:
- كيف يحقق nanochat تخفيضًا في التكلفة بمقدار 100 ضعف مقارنةً بتدريب LLM التقليدي
- الهندسة المعمارية الكاملة (نموذج GPT، مُحسن Muon، تحميل البيانات)
- إرشادات خطوة بخطوة لتدريب نموذجك الخاص
- كيفية استخدام nanochat للبحث والتجريب السريع في LLM
- القيود الحقيقية وما تعنيه قدرة GPT-2 فعليًا
ما هو nanochat؟
nanochat هو أداة تدريب LLM مبسطة تغطي خط أنابيب التطوير بأكمله: الترقيم، والتدريب المسبق، والضبط الدقيق، والتقييم، والاستدلال، وواجهة مستخدم ويب تشبه ChatGPT.

يتناسب الكود البرمجي في مستودع واحد دون تعقيدات في الإعدادات أو إطار العمل. صممه كارباثي كـ "أساس قوي" قابل للقراءة والتعديل والتشعيب.
الادعاء الأساسي
تدريب نموذج بقدرة GPT-2 (1.6 مليار معلمة) مقابل:
- 48 دولارًا حسب الطلب (ساعتان بسعر حوالي 24 دولارًا/ساعة لـ 8xH100)
- حوالي 15 دولارًا على مثيلات Spot
للمقارنة، كلف تدريب GPT-2 الأصلي من OpenAI في عام 2019 حوالي 43,000 دولار واستغرق 7 أيام على 32 شريحة TPU v3.
ما يغطيه nanochat
| المرحلة | السكربت | الوصف |
|---|---|---|
| الترقيم | scripts.tok_train |
تدريب مُرقّم BPE (مفردات 32,768) |
| التدريب المسبق | scripts.base_train |
تدريب نموذج GPT الأساسي |
| الضبط الدقيق | scripts.chat_sft |
الضبط الدقيق الخاضع للإشراف للمحادثة |
| التقييم | scripts.base_eval |
مقياس CORE، بتات لكل بايت |
| الاستدلال | scripts.chat_cli |
واجهة محادثة سطر الأوامر (CLI) |
| واجهة الويب | scripts.chat_web |
واجهة ويب تشبه ChatGPT |
الفلسفة: مؤشر واحد للتحكم بكل شيء
تغرقك معظم أطر عمل LLM بملفات الإعدادات. يتخذ nanochat منهجًا معاكسًا.
يدور النظام بأكمله حول معلمة واحدة: --depth (عدد طبقات المحول).
# نموذج بحجم GPT-1
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=12
# نموذج بقدرة GPT-2
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=24
# تجاوز الحدود
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- --depth=26
قم بتعيين العمق، وسيقوم nanochat بحساب كل شيء آخر تلقائيًا:
- عرض المحول (بعد التضمين)
- عدد رؤوس الانتباه
- معدلات التعلم لكل مجموعة معلمات
- أفق التدريب (الخطوات الإجمالية)
- جداول اضمحلال الأوزان
- أحجام الدفعات
تتيح فلسفة "المؤشر الواحد" هذه ما يسميه كارباثي **سلسلة nanochat المصغرة**: مجموعة من النماذج المثلى من حيث الحساب بأحجام مختلفة، وكلها مدربة بنفس النهج المبدئي.
لماذا ينجح هذا
قام الفريق بقياس قوانين التوسع عبر عشرات من عمليات التدريب. ووجدوا علاقات يمكن التنبؤ بها بين العمق والعرض وحجم الدفعة ومدة التدريب. وبدلاً من عرض كل هذه الإعدادات، يقوم nanochat بترميز هذه العلاقات مباشرة في سكربت التدريب.

تحصل على تدريب أمثل من حيث الحساب دون الحاجة إلى درجة دكتوراه في التعلم العميق.
لوحة المتصدرين: سباق لتجاوز GPT-2
يحتفظ nanochat بلوحة متصدرين عامة تتتبع قدرة "الوصول إلى GPT-2" في وقت معين. الهدف هو تجاوز نتيجة CORE الأصلية من OpenAI البالغة 0.256525 في 22 مهمة تقييم (ARC، MMLU، وغيرها من مجموعة معايير DCLM).
السجلات الحالية
| التشغيل | النموذج | الوقت | نتيجة CORE | الابتكار الرئيسي |
|---|---|---|---|---|
| GPT-2 الأصلي | 1.6 مليار | 168 ساعة | 0.2565 | خط أساس OpenAI 2019 |
| التشغيل 1 | d24 | 3.04 ساعة | 0.2585 | خط أساس مبدئي |
| التشغيل 2 | d26 | 2.91 ساعة | 0.2578 | تدريب FP8 |
| التشغيل 3 | d26 | 2.76 ساعة | 0.2602 | حجم دفعة 1 مليون رمز |
| التشغيل 4 | d24 | 2.02 ساعة | 0.2571 | مجموعة بيانات ClimbMix |
| التشغيل 5 | d24 | 1.80 ساعة | 0.2690 | تحسينات اكتشفها الذكاء الاصطناعي |
| التشغيل 6 | d24 | 1.65 ساعة | 0.2626 | تحسين Smear/Backout |
كيف اكتشف الذكاء الاصطناعي التحسينات
تضمنت التشغيلات 5 و 6 تغييرات من نظام "البحث الآلي" الخاص بكارباثي. استكشف وكيل ذكاء اصطناعي تعديلات معمارية على نماذج d12 الصغيرة (تشغيلات تدريب مدتها 5 دقائق)، ثم طبق التغييرات الفائزة على إعداد d24 الكامل.
وجد النظام تحسينات على:
- آلية Backout: طرح أفضل للمتبقيات في الطبقات الوسطى
- تطبيق Smear: مزج أكثر كفاءة للبيجرامات من الرموز السابقة
قللت هذه التغييرات وقت التدريب من 2.02 ساعة إلى 1.65 ساعة، وهو تحسن بنسبة 19% تم اكتشافه من خلال التجريب المستقل.
كيف يعمل nanochat
يحتوي الكود البرمجي على ما يقرب من 3,000 سطر عبر الوحدات الأساسية. دعونا نفحص كل مكون.
1. نموذج GPT (nanochat/gpt.py)
يتبع المحول أفضل الممارسات الحديثة مع العديد من التحسينات:
ميزات الهندسة المعمارية:
- تضمينات دوارة (RoPE): ترميز موضعي نسبي بدون تضمينات موضعية مُتعلمة
- تسوية QK: تثبيت التدريب على نطاق واسع
- أوزان غير مرتبطة: طبقات منفصلة لتضمين الرمز وإسقاط الإخراج
- تنشيط ReLU²: دالة ReLU التربيعية في MLP بدلاً من GeLU
- انتباه الاستعلام المجمع (GQA): رؤوس KV أقل من رؤوس الاستعلام لاستدلال أسرع
- انتباه النافذة المنزلقة: نمط قابل للتكوين (على سبيل المثال، "SSSL" يبادل السياق القصير/الطويل)
- Flash Attention 3: تحسين لوحدات معالجة الرسوميات Hopper مع دعم SDPA
تضمينات القيم (ResFormer): تتضمن الطبقات المتناوبة تضمينات قيم قابلة للتعلم ممزوجة عبر بوابات تعتمد على الإدخال:
# Value residual: mix in value embedding with per-head gate
if ve is not None:
ve = ve.view(B, T, self.n_kv_head, self.head_dim)
gate = 3 * torch.sigmoid(self.ve_gate(x[..., :self.ve_gate_channels]))
v = v + gate.unsqueeze(-1) * ve
يضيف هذا سعة دون تكلفة حسابية كبيرة.
خدع الكفاءة:
يتضمن النموذج ثلاث آليات متعلمة تحسن ديناميكيات التدريب:
# 1. Per-layer residual scaling
x = self.resid_lambdas[i] * x + self.x0_lambdas[i] * x0
# 2. Smear: mix previous token embedding for bigram info
gate = self.smear_lambda * torch.sigmoid(self.smear_gate(x[:, :, :24]))
x = x + gate * x_pre_smear
# 3. Backout: subtract mid-layer residual
x = x - self.backout_lambda * x_backout
2. مُحسن Muon (nanochat/optim.py)
يستخدم nanochat استراتيجية مُحسن مختلطة:
| نوع المعلمة | المُحسن | الغرض |
|---|---|---|
| التضمينات، lm_head | AdamW | تحسين تكيفي قياسي |
| المعلمات القياسية | AdamW | عوامل قياس متعلمة |
| المصفوفات ثنائية الأبعاد | Muon | تحديثات متعامدة |
Muon (عزم متعامد بواسطة نيوتن-شولتز):
يقوم مُحسن Muon بتعميد تحديثات الأوزان باستخدام تكرار نيوتن-شولتز الخماسي المسمى "Polar Express":
# Polar Express coefficients (5 iterations)
polar_express_coeffs = [
(8.156, -22.483, 15.879),
(4.043, -2.809, 0.500),
# ... more coefficients
]
# Orthogonalization loop
for a, b, c in polar_express_coeffs[:ns_steps]:
A = X.mT @ X
B = b * A + c * (A @ A)
X = a * X + X @ B
تقليل تباين NorMuon:
بعد التعامد، يتم تطبيع التحديثات لكل عصبون لمنع انهيار المقياس:
v_mean = g.float().square().mean(dim=red_dim, keepdim=True)
v_norm = v_mean.sum(dim=(-2, -1), keepdim=True).sqrt()
final_scale = step_size * (v_norm / v_norm_new.clamp_min(1e-10))
g = g * final_scale.to(g.dtype)
التدريب الموزع:
لإعدادات وحدات معالجة الرسوميات المتعددة، ينفذ المُحسن تقسيمًا بنمط ZeRO-2 مع اتصال غير متزامن ثلاثي المراحل:
المرحلة 1: إطلاق جميع عمليات reduce_scatter غير المتزامنة
المرحلة 2: الانتظار لعمليات التخفيض، حساب التحديثات، إطلاق عمليات all_gathers
المرحلة 3: الانتظار لعمليات الجمع، نسخ المعلمات المحدثة
يتداخل هذا مع الاتصال بالحساب، مما يزيد من استخدام وحدة معالجة الرسوميات.
3. إدارة الدقة (nanochat/common.py)
يدير nanochat الدقة بشكل صريح بدلاً من استخدام torch.amp.autocast:
| الجهاز | نوع البيانات الافتراضي | السبب |
|---|---|---|
| CUDA SM 80+ (A100, H100) | bfloat16 | أنوية موتر BF16 الأصلية |
| CUDA SM < 80 (V100, T4) | float32 | لا يوجد دعم لـ BF16 |
| وحدة المعالجة المركزية (CPU) / MPS | float32 | لا توجد أنوية ذات دقة منخفضة |
تقوم طبقة Linear المخصصة بتحويل الأوزان لتتناسب مع نوع البيانات الحسابي أثناء التمرير الأمامي:
class Linear(nn.Linear):
def forward(self, x):
return F.linear(x, self.weight.to(dtype=x.dtype))
تبقى الأوزان الرئيسية في FP32 لدقة المُحسن. بالنسبة لوحدات معالجة الرسوميات H100 و Blackwell، يتوفر تدريب FP8 عبر --fp8، مما يحول معظم الطبقات إلى Float8Linear مع قياس موجه.
4. تحميل البيانات (nanochat/dataloader.py)
يستخدم محمل البيانات **التعبئة الأفضل للملاءمة والمحاذاة مع BOS**:
- يبدأ كل صف برمز BOS (بداية التسلسل)
- المستندات معبأة باستخدام خوارزمية أفضل ملاءمة لتقليل الهدر
- عندما لا يتناسب أي مستند، يتم اقتصاص مستند واحد ليمتلئ تمامًا
- استخدام 100% مع اقتصاص حوالي 35% من الرموز عند طول تسلسل 2048
يضمن هذا أن كل رمز يمكنه الانتباه مرة أخرى إلى BOS ورؤية سياق المستند بالكامل.
# Find largest document that fits entirely
best_idx = -1
best_len = 0
for i, doc in enumerate(doc_buffer):
doc_len = len(doc)
if doc_len <= remaining and doc_len > best_len:
best_idx = i
best_len = doc_len
if best_idx >= 0:
doc = doc_buffer.pop(best_idx)
# Add full document
else:
# Crop shortest doc to fill remaining space
5. توحيد Flash Attention (nanochat/flash_attention.py)
يوفر المشروع واجهة موحدة تقوم بالتبديل التلقائي بين FA3 و PyTorch SDPA:
from nanochat.flash_attention import flash_attn
# Works on any hardware - auto-selects best backend
y = flash_attn.flash_attn_func(q, k, v, causal=True, window_size=window_size)
على وحدات معالجة الرسوميات Hopper مع bfloat16، يستخدم Flash Attention 3. وفي جميع الأماكن الأخرى، يعود إلى انتباه المنتج النقطي المتدرج من PyTorch.
6. محرك الاستدلال (nanochat/engine.py)
تتعامل فئة Engine مع التوليد الفعال باستخدام:
- ذاكرة التخزين المؤقت KV: ذاكرة تخزين مؤقت للمطالبة مملوءة مسبقًا باستخدام
flash_attn_with_kvcacheمن FA3 - استخدام الأداة: الرموز الخاصة تشغل حاسبة بايثون عبر
eval() - توليد الدفعات: استنساخ ذاكرة التخزين المؤقت KV لأخذ العينات المتوازية
ينسق المحرك تدفق المحادثة، بما في ذلك فرض رموز إخراج الأداة عندما يستدعي النموذج الآلة الحاسبة.
خطوة بخطوة: تدريب نموذجك الخاص
توجد عملية التدريب بأكملها في runs/speedrun.sh. إليك كيفية تشغيلها.
المتطلبات الأساسية
- عقدة 8xH100 GPU (أو ما شابهها)
- حوالي 20 جيجابايت مساحة قرص لمجموعة البيانات
- بايثون 3.10+
- مدير الحزم uv
الخطوة 1: إعداد البيئة
# تثبيت uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# إنشاء وتفعيل بيئة افتراضية
uv venv
source .venv/bin/activate
# تثبيت التبعيات
uv sync --extra gpu
الخطوة 2: تنزيل بيانات التدريب
# تنزيل حوالي 2 مليار حرف من مجموعة بيانات ClimbMix
python -m nanochat.dataset -n 170
# يقوم هذا بتنزيل حوالي 170 جزءًا بحجم حوالي 100 ميجابايت لكل منها
# الإجمالي: حوالي 17 جيجابايت مضغوطة
يقوم السكربت بتنزيل أجزاء بيانات التدريب المسبق مع قفل الملفات للتعامل مع التنسيق متعدد الرتب.
الخطوة 3: تدريب المرقّم
# تدريب مُرقّم BPE بمفردات 32,768
python -m scripts.tok_train
# تقييم نسبة الضغط
python -m scripts.tok_eval
يستخدم المرقّم نمط تقسيم على غرار GPT-4 مع BPE احتياطي للبايت. يكتمل التدريب في حوالي 10 دقائق على 2 مليار حرف.
الخطوة 4: التدريب المسبق للنموذج الأساسي
# تدريب نموذج d24 (بقدرة GPT-2)
torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- \
--depth=24 \
--target-param-data-ratio=8 \
--device-batch-size=16 \
--fp8 \
--run=my-first-model
المعلمات الرئيسية:
--depth=24: نموذج بحجم GPT-2--target-param-data-ratio=8: تدريب أقل قليلاً من اللازم من أجل السرعة--device-batch-size=16: حجم الدفعة لكل وحدة معالجة رسوميات--fp8: تمكين تدريب FP8 (لـ H100+ فقط)
وقت التشغيل المتوقع: حوالي ساعتين.
الخطوة 5: الضبط الدقيق الخاضع للإشراف
# تنزيل محادثات الهوية
curl -L -o ~/.cache/nanochat/identity_conversations.jsonl \
https://karpathy-public.s3.us-west-2.amazonaws.com/identity_conversations.jsonl
# تشغيل SFT لقدرة الدردشة
torchrun --standalone --nproc_per_node=8 -m scripts.chat_sft -- \
--device-batch-size=16 \
--run=my-sft
يعلم هذا النموذج تنسيق المحادثة والرموز الخاصة واستخدام الأدوات.
الخطوة 6: الدردشة مع نموذجك
# دردشة سطر الأوامر (CLI)
python -m scripts.chat_cli -p "لماذا السماء زرقاء؟"
# أو تشغيل واجهة الويب
python -m scripts.chat_web
تعمل واجهة الويب على المنفذ 8000 وتوفر واجهة تشبه ChatGPT.
سير عمل البحث: التجريب السريع
لاختبار الأفكار الجديدة، استخدم نماذج أصغر لتكرار أسرع.
تجارب سريعة (حوالي 5 دقائق)
OMP_NUM_THREADS=1 torchrun --standalone --nproc_per_node=8 -m scripts.base_train -- \
--depth=12 \
--run="d12-test" \
--core-metric-every=999999 \
--sample-every=-1 \
--save-every=-1
يقوم هذا بتدريب نموذج d12 (بحجم GPT-1) مع الحد الأدنى من التسجيل. مثالي لاختبار التغييرات المعمارية.
مقاييس للمراقبة
تتبع هذه في Weights & Biases:
- val_bpb: بتات التحقق لكل بايت (خسارة مستقلة عن حجم المفردات)
- core_metric: نتيجة تقييم DCLM CORE
- train/mfu: استخدام FLOPS للنموذج (كفاءة الأجهزة)
- train/tok_per_sec: إنتاجية التدريب
متطلبات الاختبار
يجب أن يعمل أي تحسين عبر جميع الأعماق (من d12 إلى d26). يمنع هذا التجهيز الزائد لحجم نموذج واحد ويضمن تقدمًا مبدئيًا.
لماذا nanochat مهم
إمكانية الوصول إلى التكلفة
| النهج | التكلفة | الوقت | الجهاز |
|---|---|---|---|
| GPT-2 من OpenAI (2019) | 43,000 دولار | 168 ساعة | 32 TPU v3 |
| nanochat (2026) | 48 دولارًا | ساعتان | 8xH100 |
| nanochat الفوري (Spot) | حوالي 15 دولارًا | ساعتان | 8xH100 الفوري (Spot) |
هذا يجعل تدريب LLM في متناول:
- الباحثين الأفراد
- الشركات الناشئة الصغيرة
- الدورات الجامعية
- الهواة
القيمة التعليمية
يعمل الكود البرمجي كمصدر تعليمي:
- حوالي 500 سطر لنموذج GPT
- حوالي 530 سطرًا للمُحسن
- تعليقات واضحة على كل قرار تصميم
- لا توجد إعدادات مخفية
يمكن للطلاب قراءة وتعديل وتجربة عملية LLM كاملة.
سرعة البحث
يتيح تقليل وقت التدريب من أيام إلى ساعات:
- اختبار الفرضيات بشكل أسرع
- المزيد من التجارب في الأسبوع
- تكلفة فشل أقل
- تعاون المجتمع عبر لوحة المتصدرين
الشفافية
كل خيار تصميم موثق:
- قوانين التوسع في
dev/LOG.md - دراسات الحذف في مناقشات GitHub
- تفاصيل الاستنساخ الكاملة لإدخالات لوحة المتصدرين
- إفصاح واضح عن مساهمة الذكاء الاصطناعي
القيود وفحص الواقع
nanochat مثير للإعجاب ولكنه يمتلك حدودًا واضحة.
متطلبات الأجهزة
يفترض رقم 48 دولارًا الوصول إلى عقدة 8xH100. تختلف تكاليف الإيجار السحابي:
- مختبرات لامبدا: حوالي 25 دولارًا/ساعة لـ 8xH100
- RunPod: حوالي 15 دولارًا/ساعة لأسعار Spot
- إجمالي وقت التشغيل: حوالي ساعتين للتدريب المسبق + SFT
ستحتاج إلى حوالي 50-100 دولار لتشغيل كامل حسب المزود.
سقف القدرة
يحقق nanochat أداءً بمستوى GPT-2 (تقنية 2019). هذا يعني:
ما يمكنه فعله:
- محادثة أساسية
- استدلال بسيط
- رياضيات ابتدائية
- استدعاء الحقائق (محدود)
ما لا يمكنه فعله:
- استدلال معقد متعدد الخطوات
- توليد الأكواد بما يتجاوز الوظائف البسيطة
- اتباع التعليمات الدقيقة
- منافسة GPT-4، كلود، أو جيميني
فكر في الأمر كطفل في الروضة: قادر على المحادثة الأساسية ولكن ليس على العمل بمستوى الخبراء.
متطلبات البيانات
يقوم التشغيل السريع الكامل بتنزيل:
- حوالي 170 جزء بيانات
- حوالي 17 جيجابايت مضغوطة
- حوالي 2 مليار حرف إجمالاً
ستحتاج إلى مساحة تخزين ونطاق ترددي كافيين.
قيود المقياس
يقيس مقياس CORE 22 مهمة ولكنه لا يلتقط:
- جودة المحادثة في العالم الحقيقي
- المعرفة الخاصة بالمجال
- دقة اتباع التعليمات
- السلامة والمحاذاة
تنتج البذور العشوائية المختلفة تباينًا في CORE يبلغ حوالي 0.016. قد تختلف نتائجك.
الأسئلة الشائعة
كم يكلف تدريب نموذج باستخدام nanochat؟
حوالي 48 دولارًا حسب الطلب (24 دولارًا/ساعة × ساعتين) أو حوالي 15 دولارًا على مثيلات Spot. يغطي هذا التدريب المسبق فقط. أضف حوالي 30 دقيقة لـ SFT.
ما هي وحدة معالجة الرسوميات (GPU) التي أحتاجها؟
الحد الأدنى: وحدة معالجة رسوميات واحدة (أي وحدة معالجة رسوميات حديثة لمراكز البيانات). الأمثل: 8xH100 أو 8xA100 للتدريب الأسرع. يتوسع الكود من وحدة معالجة رسوميات واحدة إلى 8 وحدات مع تراكم التدرجات التلقائي.
كم يستغرق التدريب؟
من 1.65 إلى 3 ساعات حسب التكوين والجهاز. الرقم القياسي الحالي في لوحة المتصدرين هو 1.65 ساعة لنموذج d24.
ما هو مقياس CORE؟
يقيم مقياس DCLM CORE النماذج على 22 مهمة بما في ذلك ARC (أسئلة علمية)، MMLU (فهم اللغة متعدد المهام)، ومعايير أخرى. سجل GPT-2 0.256525. يتجاوز nanochat بانتظام 0.26.
هل يمكنني التدريب على وحدة معالجة رسوميات واحدة؟
نعم. احذف torchrun وسيستخدم الكود تراكم التدرجات تلقائيًا. سيستغرق التدريب 8 أضعاف الوقت ولكنه ينتج نتائج متطابقة تقريبًا.
ما هي مجموعة البيانات التي يستخدمها nanochat؟
يستخدم الأفضل حاليًا ClimbMix (مجموعة بيانات الويب المنسقة من NVIDIA). استخدمت الإصدارات السابقة FineWeb-EDU. يتم تدريب المرقّم على حوالي 2 مليار حرف من أول 8 أجزاء.
هل يعمل nanochat على Apple Silicon؟
نعم. يعمل الكود على MPS (Metal Performance Shaders) بدقة float32. التدريب أبطأ من CUDA ولكنه وظيفي للتجريب.
هل يمكنني استئناف التدريب من نقطة حفظ؟
نعم. استخدم --resume-from-step=<step> للاستمرار من نقطة حفظ. يتم حفظ حالة محمل البيانات أيضًا للاستئناف الدقيق.
ما الفرق بين nanochat و nanoGPT؟
غطى nanoGPT التدريب المسبق فقط. يمتد nanochat إلى عملية التدريب الكاملة: الترقيم، والتدريب المسبق، و SFT، و RLHF، والتقييم، والاستدلال، وواجهة الويب.
الخلاصة
يثبت nanochat أن تدريب LLM لم يعد يتطلب ميزانيات ضخمة أو بنية تحتية متخصصة. ما كلف 43,000 دولار في عام 2019 يكلف الآن أقل من 50 دولارًا.
يمتد تأثير المشروع إلى ما هو أبعد من مجرد تخفيض التكلفة الخام. من خلال توفير قاعدة كود بسيطة وقابلة للقراءة مع واجهة "مؤشر واحد"، أنشأ كارباثي أداة بحث وموردًا تعليميًا.
النقاط الرئيسية
- تخفيض التكلفة بمقدار 100 ضعف: من 43,000 دولار إلى 48 دولارًا لقدرة GPT-2
- تسريع بمقدار 100 ضعف: من 168 ساعة إلى 1.65 ساعة
- مؤشر ضبط واحد:
--depthيتحكم بكل شيء - عملية تدريب كاملة: من الترقيم إلى واجهة الويب
- مدفوع بالمجتمع: لوحة متصدرين عامة مع تحسينات مستمرة
الخطوات التالية
هل أنت مستعد لتدريب نموذجك الخاص؟ ابدأ بمستودع nanochat وسكربت runs/speedrun.sh.
بالنسبة لمطوري واجهات برمجة التطبيقات الذين يبنون تطبيقات مدعومة بالذكاء الاصطناعي، لم يكن فهم آليات تدريب LLM الداخلية متاحًا بهذا القدر من قبل. لقد انخفض حاجز الدخول من "شركة ناشئة ممولة برأس مال مخاطر" إلى "مشروع عطلة نهاية الأسبوع".
