PyImageSearch publikuje ostatnią część serii poświęconej budowaniu DeepSeek-V3 « from scratch », tym razem skupiając się na trenowaniu modelu i generowaniu tekstu. Napisany przez Puneeta Manglę tutorial szczegółowo opisuje pętlę treningową, hiperparametry i dane użyte dla modelu o małej skali.
Ta szósta część kończy serię, która krok po kroku omawiała konfigurację i Rotary Position Embeddings (RoPE), Multi-head Latent Attention (MLA), Mixture of Experts (MoE), Multi-Token Prediction (MTP), a następnie składanie architektury w PyTorchu. Tutorial przedstawia « trainer », komponent, który uruchamia architekturę, konfrontując ją z danymi.
Trening oparty na Hugging Face
Trenowanie modelu typu transformer wymaga koordynacji ładowania danych, optymalizacji, zarządzania punktami zapisu i ewaluacji. Autor opiera się na tym na API Trainer Hugging Face, z wersjami transformers==4.57.3, datasets==4.8.5 i accelerate==1.15.0. Ponieważ model zwraca parę (logits, loss), niestandardowa metoda compute_loss dostosowuje jego wyjście do formatu oczekiwanego przez Trainer.
Wdrożonych jest kilka technik. Akumulacja gradientów symuluje duże partie, gdy pamięć GPU jest ograniczona: z partią 4 przykładów i 4 krokami akumulacji, efektywny rozmiar osiąga 16 na pojedynczym urządzeniu. Współczynnik uczenia podlega fazie stopniowego wzrostu (warmup), po której następuje liniowy spadek. Wreszcie, trening w mieszanej precyzji (FP16) może przyspieszyć obliczenia, choć zysk zależy od sprzętu i obciążenia.
Dane i konfiguracja
Model jest trenowany na TinyStories, zbiorze danych z prostymi opowiadaniami dla dzieci, zaprojektowanym pod słownictwo i gramatykę odpowiednie dla małych modeli językowych. Autor wykorzystuje tylko pierwsze 10 000 przykładów, podzielonych bez mieszania na 9 000 do treningu i 1 000 do ewaluacji. Ten drugi zbiór pochodzi więc z wybranego podzbioru, a nie z oficjalnego zestawu walidacyjnego zbioru danych.
Tekst jest tokenizowany tokenizerem GPT-2, który wykorzystuje kodowanie parami bajtów (BPE). Pozycje dopełnienia są wykluczane z obliczania straty dzięki wartości -100. Konfiguracja ustala współczynnik uczenia na 5e-4, 10 kroków warmup, regularyzację 0,01 i 2 epoki treningu. Punkty zapisu są tworzone co 50 kroków, trzy są przechowywane, a ostateczny wybrany model to ten z najniższą stratą walidacyjną.
Aby przetestować generowanie, autor używa temperatury 0,8 i próbkowania top-k równego 50, z 150 nowymi tokenami. Historia przedstawiona jako przykład jest wyraźnie ilustracyjna i nie pochodzi z zapisanego przebiegu. Tutorial podkreśla, że ten mały model nie będzie konkurował z dużymi modelami wstępnie wytrenowanymi, a jego wyniki mogą się powtarzać, odbiegać lub tracić spójność. Pełny tutorial i jego kod źródłowy są dostępne na stronie PyImageSearch.
