วิธีฝึก ChatGPT ส่วนตัว งบ 50 ดอลลาร์

Ashley Innocent

Ashley Innocent

19 March 2026

วิธีฝึก ChatGPT ส่วนตัว งบ 50 ดอลลาร์

Apidog สำหรับองค์กร

การติดตั้งแบบ On-Premises

SSO & RBAC

รองรับมาตรฐาน SOC 2

สำรวจ Apidog Enterprise

TL;DR (สรุปย่อ)

nanochat คือเฟรมเวิร์กการฝึก LLM แบบโอเพนซอร์สของ Andrej Karpathy ที่ช่วยให้คุณสามารถฝึกแชทบอทระดับ GPT-2 ได้ในราคาไม่ถึง 50 ดอลลาร์ โดยใช้เวลาประมาณ 2 ชั่วโมง โปรเจกต์นี้ใช้โหนด GPU 8xH100 เพียงเครื่องเดียว โค้ดน้อยที่สุด (ประมาณ 500 บรรทัดสำหรับโมเดลหลัก) และตัวควบคุมการตั้งค่าเดียว (--depth) เพื่อปรับพารามิเตอร์ทั้งหมดโดยอัตโนมัติ สถิติปัจจุบันแสดงให้เห็นว่าการฝึกเสร็จสมบูรณ์ใน 1.65 ชั่วโมง ด้วยคะแนน CORE ที่ 0.2626 ซึ่งดีกว่า GPT-2 ของ OpenAI ในปี 2019 ที่มีค่าใช้จ่าย 43,000 ดอลลาร์ และใช้เวลา 168 ชั่วโมง

บทนำ

การฝึกโมเดลภาษาขนาดใหญ่เคยต้องใช้เงินหลายล้านดอลลาร์และทีมนักวิจัยระดับปริญญาเอก แต่วันเหล่านั้นได้จบลงแล้ว

Andrej Karpathy เพิ่งเปิดตัว nanochat ซึ่งเป็นโปรเจกต์โอเพนซอร์สที่ฝึก AI สำหรับการสนทนาที่มีความสามารถด้วยต้นทุนที่น้อยกว่าราคาอาหารมื้อค่ำดีๆ หนึ่งมื้อ ทั้งหมดนี้ทำงานบนโหนด GPU 8xH100 เพียงเครื่องเดียว และใช้เวลาไม่ถึง 2 ชั่วโมง

ทำไมสิ่งนี้จึงสำคัญในตอนนี้

ภูมิทัศน์ของ AI ได้เปลี่ยนแปลงไปอย่างมากในช่วงต้นปี 2026 สิ่งที่ OpenAI ใช้เวลา 168 ชั่วโมง และ 43,000 ดอลลาร์ในปี 2019 ตอนนี้ใช้เวลาเพียง 1.65 ชั่วโมง และ 48 ดอลลาร์ นั่นคือความเร็วที่เพิ่มขึ้น 100 เท่า ซึ่งขับเคลื่อนโดยการปรับปรุงอัลกอริทึม ฮาร์ดแวร์ที่ดีขึ้น และการเพิ่มประสิทธิภาพโดยชุมชน

สำหรับนักพัฒนา API และทีมที่สร้างแอปพลิเคชันที่ขับเคลื่อนด้วย AI สิ่งนี้เปลี่ยนทุกสิ่ง คุณสามารถทดลองกับการฝึกโมเดลที่กำหนดเอง ทดสอบการเปลี่ยนแปลงสถาปัตยกรรม และทำความเข้าใจหลักการทำงานภายในของ LLM โดยไม่ต้องใช้งบประมาณโครงสร้างพื้นฐานจำนวนมาก

💡
จับคู่สิ่งนี้กับแพลตฟอร์มการพัฒนา API เช่น Apidog สำหรับการทดสอบและจัดทำเอกสารบริการ AI ของคุณ แล้วคุณก็จะมีชุดเครื่องมือที่สมบูรณ์แบบสำหรับการสร้างแอปพลิเคชัน AI สำหรับการผลิตจริง
button

สิ่งที่คุณจะได้เรียนรู้

เมื่ออ่านบทความนี้จบ คุณจะเข้าใจสิ่งต่อไปนี้:

nanochat คืออะไร?

nanochat คือชุดเครื่องมือการฝึก LLM ที่ครอบคลุมไปป์ไลน์การพัฒนาทั้งหมด: การสร้างโทเค็น, การฝึกก่อน (pretraining), การปรับแต่ง (finetuning), การประเมินผล, การอนุมาน (inference) และ Web UI ที่เหมือน ChatGPT

แผนภาพผังงานแสดงไปป์ไลน์ nanochat ตั้งแต่ข้อมูลไปจนถึงการใช้งานจริง

โค้ดเบสทั้งหมดอยู่ใน repository เดียวกัน โดยไม่มีไฟล์การตั้งค่าที่ซับซ้อนหรือความซับซ้อนของเฟรมเวิร์ก Karpathy ออกแบบให้เป็น “พื้นฐานที่แข็งแกร่ง” ที่อ่านง่าย แฮ็กได้ และสามารถนำไปแตกกิ่งต่อยอดได้

ข้อกล่าวอ้างหลัก

ฝึกโมเดลที่มีความสามารถระดับ GPT-2 (พารามิเตอร์ 1.6 พันล้านตัว) ด้วย:

สำหรับบริบท การฝึก GPT-2 ดั้งเดิมของ OpenAI ในปี 2019 มีค่าใช้จ่ายประมาณ 43,000 ดอลลาร์ และใช้เวลา 7 วัน บนชิป TPU v3 จำนวน 32 ชิ้น

nanochat ครอบคลุมอะไรบ้าง

ขั้นตอน สคริปต์ คำอธิบาย
การสร้างโทเค็น scripts.tok_train ฝึก BPE tokenizer (คำศัพท์ 32,768 คำ)
การฝึกก่อน scripts.base_train ฝึกโมเดล GPT พื้นฐาน
การปรับแต่ง scripts.chat_sft การปรับแต่งด้วยการควบคุมสำหรับการสนทนา
การประเมินผล scripts.base_eval เมตริก CORE, บิตต่อไบต์
การอนุมาน scripts.chat_cli อินเทอร์เฟซแชทแบบ CLI
Web UI 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 จะคำนวณทุกสิ่งโดยอัตโนมัติ:

ปรัชญา “ตัวควบคุมเดียว” นี้ทำให้เกิดสิ่งที่ Karpathy เรียกว่า nanochat miniseries: กลุ่มโมเดลที่เหมาะสมที่สุดในการคำนวณที่ขนาดต่างๆ กัน ซึ่งทั้งหมดถูกฝึกด้วยแนวทางที่เป็นหลักการเดียวกัน

เหตุผลที่ได้ผล

ทีมได้วัดกฎการขยายขนาดจากการฝึกนับสิบครั้ง พวกเขาพบความสัมพันธ์ที่คาดการณ์ได้ระหว่างความลึก ความกว้าง ขนาดแบทช์ และระยะเวลาการฝึก แทนที่จะเปิดเผยตัวแปรทั้งหมดเหล่านี้ nanochat ได้เข้ารหัสความสัมพันธ์เหล่านี้ลงในสคริปต์การฝึกโดยตรง

แผนภูมิแสดงพารามิเตอร์โมเดลที่เหมาะสมเทียบกับค่า --depth

คุณได้รับการฝึกที่เหมาะสมที่สุดในการคำนวณโดยไม่จำเป็นต้องมีปริญญาเอกด้าน Deep Learning

กระดานผู้นำ: แข่งขันเพื่อเอาชนะ GPT-2

nanochat รักษากระดานผู้นำสาธารณะที่ติดตามความสามารถ “เวลาสู่ GPT-2” เป้าหมายคือการเอาชนะคะแนน CORE ดั้งเดิมของ OpenAI ที่ 0.256525 ใน 22 งานประเมินผล (ARC, MMLU และอื่นๆ จากชุดมาตรฐาน DCLM)

สถิติปัจจุบัน

การรัน โมเดล เวลา คะแนน CORE นวัตกรรมหลัก
GPT-2 ดั้งเดิม 1.6B 168 ชั่วโมง 0.2565 มาตรฐาน OpenAI ปี 2019
การรัน 1 d24 3.04 ชั่วโมง 0.2585 มาตรฐานเริ่มต้น
การรัน 2 d26 2.91 ชั่วโมง 0.2578 การฝึก FP8
การรัน 3 d26 2.76 ชั่วโมง 0.2602 ขนาดแบทช์ 1M โทเค็น
การรัน 4 d24 2.02 ชั่วโมง 0.2571 ชุดข้อมูล ClimbMix
การรัน 5 d24 1.80 ชั่วโมง 0.2690 การปรับปรุงประสิทธิภาพที่ AI ค้นพบ
การรัน 6 d24 1.65 ชั่วโมง 0.2626 Smear/backout ที่ปรับปรุงแล้ว

การปรับปรุงที่ AI ค้นพบ

การรันครั้งที่ 5 และ 6 ได้รวมการเปลี่ยนแปลงจากระบบ “autoresearch” ของ Karpathy เอเจนต์ AI ได้สำรวจการปรับเปลี่ยนสถาปัตยกรรมในโมเดล d12 ขนาดเล็ก (ใช้เวลาฝึก 5 นาที) จากนั้นจึงนำการเปลี่ยนแปลงที่ชนะไปใช้กับการตั้งค่า d24 แบบเต็ม

ระบบพบการปรับปรุงในด้าน:

การเปลี่ยนแปลงเหล่านี้ลดเวลาการฝึกจาก 2.02 ชั่วโมงเหลือ 1.65 ชั่วโมง ซึ่งเป็นการปรับปรุง 19% ที่ถูกค้นพบผ่านการทดลองแบบอัตโนมัติ

nanochat ทำงานอย่างไร

โค้ดเบสประกอบด้วยโค้ดประมาณ 3,000 บรรทัดในโมดูลหลักต่างๆ มาดูกันที่แต่ละส่วนประกอบ

1. โมเดล GPT (nanochat/gpt.py)

ทรานส์ฟอร์เมอร์นี้เป็นไปตามหลักปฏิบัติที่ดีที่สุดสมัยใหม่ พร้อมการเพิ่มประสิทธิภาพหลายประการ:

คุณสมบัติสถาปัตยกรรม:

Value Embeddings (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 ใช้กลยุทธ์ตัวปรับปรุงแบบผสม:

ประเภทพารามิเตอร์ ตัวปรับปรุง วัตถุประสงค์
Embeddings, lm_head AdamW การปรับปรุงแบบปรับตัวมาตรฐาน
พารามิเตอร์สเกลาร์ AdamW ปัจจัยการปรับขนาดที่เรียนรู้ได้
เมทริกซ์ 2 มิติ Muon การปรับปรุงแบบ Orthogonalized

Muon (MomentUm Orthogonalized by Newton-Schulz):

ตัวปรับปรุง Muon ทำให้การอัปเดตน้ำหนักเป็น Orthogonal โดยใช้วิธี Newton-Schulz แบบ quintic ที่เรียกว่า “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:

หลังจากการทำ Orthogonalization การอัปเดตจะถูกทำให้เป็นปกติสำหรับแต่ละนิวรอนเพื่อป้องกันการยุบตัวของขนาด:

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)

การฝึกแบบกระจาย:

สำหรับการตั้งค่าหลาย GPU ตัวปรับปรุงใช้การแบ่งส่วนแบบ ZeRO-2 ด้วยการสื่อสารแบบอะซิงโครนัสสามเฟส:

Phase 1: Launch all async reduce_scatter operations
Phase 2: Wait for reduces, compute updates, launch all_gathers
Phase 3: Wait for gathers, copy back updated params

สิ่งนี้ช่วยให้การสื่อสารทับซ้อนกับการคำนวณ ทำให้ใช้ประโยชน์จาก GPU ได้สูงสุด

3. การจัดการความแม่นยำ (nanochat/common.py)

nanochat จัดการความแม่นยำอย่างชัดเจน แทนที่จะใช้ torch.amp.autocast:

ฮาร์ดแวร์ dtype เริ่มต้น เหตุผล
CUDA SM 80+ (A100, H100) bfloat16 Native BF16 tensor cores
CUDA SM < 80 (V100, T4) float32 ไม่มีการรองรับ BF16
CPU / MPS float32 ไม่มี Reduced-precision cores

เลเยอร์ Linear ที่กำหนดเองจะทำการส่งค่า Weight ให้ตรงกับ Compute Dtype ระหว่าง Forward Pass:

class Linear(nn.Linear):
    def forward(self, x):
        return F.linear(x, self.weight.to(dtype=x.dtype))

น้ำหนักหลักจะคงอยู่ใน FP32 เพื่อความแม่นยำของตัวปรับปรุง สำหรับ H100 และ Blackwell GPUs การฝึก FP8 สามารถทำได้ผ่าน --fp8 ซึ่งจะแปลงเลเยอร์ส่วนใหญ่เป็น Float8Linear ด้วย Tensorwise Scaling

4. การโหลดข้อมูล (nanochat/dataloader.py)

ตัวโหลดข้อมูลใช้ BOS-aligned best-fit packing:

สิ่งนี้ทำให้มั่นใจได้ว่าทุกโทเค็นสามารถย้อนกลับไปที่ 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 GPUs ที่ใช้ bfloat16 จะใช้ Flash Attention 3 ส่วนที่เหลือจะกลับไปใช้ Scaled Dot-Product Attention ของ PyTorch

6. เอ็นจินการอนุมาน (nanochat/engine.py)

คลาส Engine จัดการการสร้างอย่างมีประสิทธิภาพด้วย:

เอนจินจะประสานงานการไหลของการสนทนา รวมถึงการบังคับโทเค็นเอาต์พุตของเครื่องมือเมื่อโมเดลเรียกใช้เครื่องคิดเลข

ทีละขั้นตอน: ฝึกโมเดลของคุณเอง

ไปป์ไลน์ทั้งหมดอยู่ใน runs/speedrun.sh นี่คือวิธีการรัน

ข้อกำหนดเบื้องต้น

ขั้นตอนที่ 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

# สิ่งนี้จะดาวน์โหลด shard ประมาณ 170 ชิ้น ชิ้นละประมาณ 100MB
# ทั้งหมด: ประมาณ 17 GB (แบบบีบอัด)

สคริปต์จะดาวน์โหลด shard ของข้อมูลการฝึกก่อน พร้อมการล็อกไฟล์เพื่อจัดการการประสานงานแบบหลายลำดับ

ขั้นตอนที่ 3: ฝึก Tokenizer

# ฝึก BPE tokenizer ด้วยคำศัพท์ 32,768 คำ
python -m scripts.tok_train

# ประเมินอัตราการบีบอัด
python -m scripts.tok_eval

Tokenizer ใช้รูปแบบการแบ่งแบบ GPT-4 พร้อม Byte-fallback 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

พารามิเตอร์สำคัญ:

ระยะเวลาที่คาดไว้: ประมาณ 2 ชั่วโมง

ขั้นตอนที่ 5: การปรับแต่งด้วยการควบคุม (Supervised Finetuning)

# ดาวน์โหลดบทสนทนาตัวตน
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 "Why is the sky blue?"

# หรือเปิด Web UI
python -m scripts.chat_web

Web UI จะทำงานบนพอร์ต 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:

  1. val_bpb: บิตต่อไบต์ในการตรวจสอบความถูกต้อง (ค่า Loss ที่ไม่ขึ้นกับขนาดของคำศัพท์)
  2. core_metric: คะแนนการประเมิน DCLM CORE
  3. train/mfu: การใช้ Model FLOPS (ประสิทธิภาพฮาร์ดแวร์)
  4. train/tok_per_sec: อัตราการประมวลผลในการฝึก

ข้อกำหนดในการทดสอบ

การปรับปรุงใดๆ ต้องทำงานได้ในทุกระดับความลึก (d12 ถึง d26) สิ่งนี้ช่วยป้องกันการ Overfitting กับขนาดโมเดลเดียว และรับประกันความก้าวหน้าตามหลักการ

ทำไม nanochat ถึงสำคัญ

ความสามารถในการเข้าถึงด้านต้นทุน

แนวทาง ต้นทุน เวลา ฮาร์ดแวร์
OpenAI GPT-2 (2019) $43,000 168 ชั่วโมง 32 TPU v3
nanochat (2026) $48 2 ชั่วโมง 8xH100
nanochat spot ~$15 2 ชั่วโมง 8xH100 spot

สิ่งนี้ทำให้การฝึก LLM อยู่ในขอบเขตของ:

คุณค่าทางการศึกษา

โค้ดเบสนี้ทำหน้าที่เป็นแหล่งเรียนรู้:

นักเรียนสามารถอ่าน แก้ไข และทดลองกับไปป์ไลน์ LLM ที่สมบูรณ์ได้

ความเร็วในการวิจัย

การลดระยะเวลาการฝึกจากหลายวันเหลือเพียงไม่กี่ชั่วโมงช่วยให้:

ความโปร่งใส

ทุกทางเลือกในการออกแบบมีการจัดทำเป็นเอกสาร:

ข้อจำกัดและการตรวจสอบความเป็นจริง

nanochat น่าประทับใจ แต่ก็มีขอบเขตที่ชัดเจน

ข้อกำหนดด้านฮาร์ดแวร์

ตัวเลข 48 ดอลลาร์นี้สมมติว่าคุณสามารถเข้าถึงโหนด 8xH100 ได้ ค่าเช่าคลาวด์แตกต่างกันไป:

คุณจะต้องใช้งบประมาณประมาณ $50-100 สำหรับการรันเต็มรูปแบบ ขึ้นอยู่กับผู้ให้บริการ

ขีดจำกัดความสามารถ

nanochat มีประสิทธิภาพเทียบเท่า GPT-2 (เทคโนโลยีปี 2019) ซึ่งหมายความว่า:

สิ่งที่ทำได้:

สิ่งที่ไม่สามารถทำได้:

ลองนึกภาพว่าเป็นเด็กอนุบาล: สามารถสนทนาพื้นฐานได้ แต่ไม่สามารถทำงานระดับผู้เชี่ยวชาญได้

ข้อกำหนดด้านข้อมูล

การรันแบบ Speedrun เต็มรูปแบบจะดาวน์โหลด:

คุณจะต้องมีพื้นที่จัดเก็บและแบนด์วิดท์ที่เพียงพอ

ข้อจำกัดของเมตริก

คะแนน CORE วัด 22 งาน แต่ไม่ครอบคลุมถึง:

Seed สุ่มที่แตกต่างกันทำให้เกิดความแปรปรวนของ CORE ประมาณ 0.016 ผลลัพธ์ของคุณอาจแตกต่างกันไป

คำถามที่พบบ่อย (FAQ)

การฝึกโมเดลด้วย nanochat มีค่าใช้จ่ายเท่าไหร่?

ประมาณ $48 แบบ On-demand ($24/ชั่วโมง × 2 ชั่วโมง) หรือประมาณ $15 บน Spot Instances ซึ่งครอบคลุมเฉพาะการฝึกก่อนเท่านั้น เพิ่มเวลาประมาณ 30 นาทีสำหรับการทำ SFT

ฉันต้องใช้ GPU รุ่นใด?

ขั้นต่ำ: GPU เดี่ยว (GPU ดาต้าเซ็นเตอร์สมัยใหม่ใดก็ได้) เหมาะสมที่สุด: 8xH100 หรือ 8xA100 เพื่อการฝึกที่เร็วที่สุด โค้ดสามารถปรับขนาดได้ตั้งแต่ 1 GPU ถึง 8 GPU พร้อมการสะสม Gradient โดยอัตโนมัติ

การฝึกใช้เวลานานเท่าใด?

1.65 ถึง 3 ชั่วโมง ขึ้นอยู่กับการตั้งค่าและฮาร์ดแวร์ สถิติกระดานผู้นำปัจจุบันคือ 1.65 ชั่วโมงสำหรับโมเดล d24

CORE metric คืออะไร?

คะแนน DCLM CORE ประเมินโมเดลใน 22 งาน รวมถึง ARC (คำถามวิทยาศาสตร์), MMLU (ความเข้าใจภาษาแบบหลายงาน) และมาตรฐานอื่นๆ GPT-2 ได้คะแนน 0.256525 nanochat ทำคะแนนได้เกิน 0.26 เป็นประจำ

ฉันสามารถฝึกบน GPU ตัวเดียวได้หรือไม่?

ได้ หากละเว้น torchrun โค้ดจะใช้ Gradient Accumulation โดยอัตโนมัติ การฝึกจะใช้เวลานานขึ้น 8 เท่า แต่ให้ผลลัพธ์ที่เกือบจะเหมือนกัน

nanochat ใช้ชุดข้อมูลใด?

เวอร์ชันที่ดีที่สุดในปัจจุบันใช้ ClimbMix (ชุดข้อมูลเว็บที่ได้รับการคัดสรรของ NVIDIA) เวอร์ชันก่อนหน้าใช้ FineWeb-EDU Tokenizer จะฝึกบนตัวอักษรประมาณ 2 พันล้านตัวจากประมาณ 8 Shard แรก

nanochat ใช้งานได้กับ Apple Silicon หรือไม่?

ได้ โค้ดรันบน MPS (Metal Performance Shaders) ด้วยความแม่นยำ float32 การฝึกจะช้ากว่า CUDA แต่ใช้งานได้สำหรับการทดลอง

ฉันสามารถฝึกต่อจาก Checkpoint ได้หรือไม่?

ได้ ใช้ --resume-from-step=<step> เพื่อฝึกต่อจาก Checkpoint ที่บันทึกไว้ สถานะของ Dataloader ก็ถูกบันทึกไว้เช่นกันเพื่อให้สามารถกลับมาดำเนินการต่อได้อย่างแม่นยำ

nanochat และ nanoGPT แตกต่างกันอย่างไร?

nanoGPT ครอบคลุมเฉพาะการฝึกก่อนเท่านั้น nanochat ขยายไปถึงไปป์ไลน์ทั้งหมด: การสร้างโทเค็น, การฝึกก่อน, SFT, RLHF, การประเมินผล, การอนุมาน และ Web UI

บทสรุป

nanochat พิสูจน์ให้เห็นว่าการฝึก LLM ไม่จำเป็นต้องใช้งบประมาณมหาศาลหรือโครงสร้างพื้นฐานเฉพาะทางอีกต่อไป สิ่งที่เคยมีค่าใช้จ่าย 43,000 ดอลลาร์ในปี 2019 ตอนนี้มีค่าใช้จ่ายไม่ถึง 50 ดอลลาร์

ผลกระทบของโปรเจกต์นี้ขยายไปไกลกว่าการลดต้นทุนดิบ ด้วยการจัดหาโค้ดเบสที่เรียบง่าย อ่านง่าย และมีอินเทอร์เฟซแบบ “ตัวควบคุมเดียว” Karpathy ได้สร้างทั้งเครื่องมือวิจัยและแหล่งการเรียนรู้

ประเด็นสำคัญ

ขั้นตอนต่อไป

พร้อมที่จะฝึกโมเดลของคุณเองแล้วหรือยัง? เริ่มต้นด้วย nanochat repository และสคริปต์ runs/speedrun.sh

สำหรับนักพัฒนา API ที่สร้างแอปพลิเคชันที่ขับเคลื่อนด้วย AI การทำความเข้าใจหลักการทำงานภายในของการฝึก LLM ไม่เคยเข้าถึงได้ง่ายเท่านี้มาก่อน อุปสรรคในการเข้าสู่ตลาดได้ลดลงจาก “สตาร์ทอัพที่ได้รับการสนับสนุนจาก Venture Capital” กลายเป็น “โปรเจกต์สำหรับวันหยุดสุดสัปดาห์”

button

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API