# 2. Data Sampling {{#include ../../banners/hacktricks-training.md}} ## **Data Sampling** **Data Sampling** is 'n belangrike proses om data voor te berei vir die opleiding van groot taalmodelle (LLMs) soos GPT. Dit behels die organisering van teksdata in invoer- en teikensekwensies wat die model gebruik om te leer hoe om die volgende woord (of token) te voorspel op grond van die voorafgaande woorde. Korrek data sampling verseker dat die model effektief taalpatrone en afhanklikhede vasvang. > [!TIP] > Die doel van hierdie tweede fase is baie eenvoudig: **Steek die invoerdata en berei dit voor vir die opleidingsfase deur gewoonlik die dataset in sinne van 'n spesifieke lengte te skei en ook die verwagte reaksie te genereer.** ### **Why Data Sampling Matters** LLMs soos GPT word opgelei om teks te genereer of te voorspel deur die konteks wat deur vorige woorde verskaf word, te verstaan. Om dit te bereik, moet die opleidingsdata op 'n manier gestruktureer wees sodat die model die verhouding tussen sekwensies van woorde en hul daaropvolgende woorde kan leer. Hierdie gestruktureerde benadering stel die model in staat om te generaliseer en samehangende en konteksueel relevante teks te genereer. ### **Key Concepts in Data Sampling** 1. **Tokenization:** Om teks in kleiner eenhede genaamd tokens (bv. woorde, subwoorde of karakters) te verdeel. 2. **Sequence Length (max_length):** Die aantal tokens in elke invoersekwensie. 3. **Sliding Window:** 'n Metode om oorvleuelende invoersekwensies te skep deur 'n venster oor die getokeniseerde teks te beweeg. 4. **Stride:** Die aantal tokens wat die glijdende venster vorentoe beweeg om die volgende sekwensie te skep. ### **Step-by-Step Example** Laat ons deur 'n voorbeeld stap om data sampling te illustreer. **Example Text** ```arduino "Lorem ipsum dolor sit amet, consectetur adipiscing elit." ``` **Tokenisering** Neem aan ons gebruik 'n **basiese tokenizer** wat die teks in woorde en leestekens verdeel: ```vbnet Tokens: ["Lorem", "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing", "elit."] ``` **Parameters** - **Max Sequence Length (max_length):** 4 tokens - **Sliding Window Stride:** 1 token **Creating Input and Target Sequences** 1. **Sliding Window Approach:** - **Input Sequences:** Elke invoerreeks bestaan uit `max_length` tokens. - **Target Sequences:** Elke teikenreeks bestaan uit die tokens wat onmiddellik volg op die ooreenstemmende invoerreeks. 2. **Generating Sequences:**
| Window Position | Input Sequence | Target Sequence |
|---|---|---|
| 1 | ["Lorem", "ipsum", "dolor", "sit"] | ["ipsum", "dolor", "sit", "amet,"] |
| 2 | ["ipsum", "dolor", "sit", "amet,"] | ["dolor", "sit", "amet,", "consectetur"] |
| 3 | ["dolor", "sit", "amet,", "consectetur"] | ["sit", "amet,", "consectetur", "adipiscing"] |
| 4 | ["sit", "amet,", "consectetur", "adipiscing"] | ["amet,", "consectetur", "adipiscing", "elit."] |
| Token Position | Token |
|---|---|
| 1 | Lorem |
| 2 | ipsum |
| 3 | dolor |
| 4 | sit |
| 5 | amet, |
| 6 | consectetur |
| 7 | adipiscing |
| 8 | elit. |