PyImageSearch publiceert het laatste deel van een serie gewijd aan het bouwen van DeepSeek-V3 « from scratch », deze keer gericht op het trainen van het model en tekstgeneratie. Geschreven door Puneet Mangla, gaat de tutorial in detail in op de trainingsloop, de hyperparameters en de gebruikte data voor een model van klein formaat.
Dit zesde deel sluit een serie af die stap voor stap de configuratie en de Rotary Position Embeddings (RoPE), de Multi-head Latent Attention (MLA), het Mixture of Experts (MoE), de Multi-Token Prediction (MTP) en vervolgens het assembleren van de architectuur in PyTorch heeft behandeld. De tutorial presenteert de « trainer », de component die de architectuur laat werken door deze te confronteren met data.
Een training gebaseerd op Hugging Face
Een transformer-model trainen houdt in dat je het laden van data, optimalisatie, het beheer van checkpoint-bestanden en evaluatie moet coördineren. De auteur maakt hiervoor gebruik van de Trainer-API van Hugging Face, met de versies transformers==4.57.3, datasets==4.8.5 en accelerate==1.15.0. Omdat het model een koppel (logits, loss) teruggeeft, past een aangepaste compute_loss-methode de uitvoer aan aan het formaat dat de Trainer verwacht.
Er worden verschillende technieken toegepast. De gradiëntaccumulatie simuleert grote batches wanneer het GPU-geheugen beperkt is: met een batch van 4 voorbeelden en 4 accumulatiestappen bereikt de effectieve grootte 16 op een enkel apparaat. De leersnelheid volgt een fase van geleidelijke opwarming (warmup), gevolgd door een lineaire afname. Ten slotte kan training in gemengde precisie (FP16) de berekening versnellen, hoewel de winst afhangt van de hardware en de werklast.
Data en configuratie
Het model wordt getraind op TinyStories, een dataset met eenvoudige kinderverhalen, ontworpen voor een vocabulaire en grammatica geschikt voor kleine taalmodellen. De auteur gebruikt alleen de eerste 10.000 voorbeelden, verdeeld zonder shuffling in 9.000 voor training en 1.000 voor evaluatie. Deze tweede set komt dus uit de gekozen subset, en niet uit de officiële validatieset van de dataset.
De tekst wordt getokeniseerd met de GPT-2-tokenizer, die Byte Pair Encoding (BPE) gebruikt. De posities van opvulling worden uitgesloten van de verliesberekening dankzij de waarde -100. De configuratie stelt een leersnelheid van 5e-4, 10 warmup-stappen, een regularisatie van 0,01 en 2 trainingsepochs vast. Er worden elke 50 stappen checkpoint-bestanden aangemaakt, er worden er drie bewaard, en het uiteindelijk gekozen model is het model met het laagste validatieverlies.
Om de generatie te testen, gebruikt de auteur een temperatuur van 0,8 en een top-k sampling van 50, met 150 nieuwe tokens. Het verhaal dat als voorbeeld wordt gepresenteerd, is expliciet illustratief en niet afkomstig van een vastgelegde uitvoering. De tutorial benadrukt dat dit kleine model niet kan concurreren met grote voorgetrainde modellen en dat de output kan herhalen, afdwalen of samenhang verliezen. De volledige tutorial en de broncode zijn beschikbaar op de website van PyImageSearch.
