From 090e4f7fdfde7bddddfbb3b68774eaeac3df64ff Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 4 Aug 2025 12:31:41 +0000 Subject: [PATCH] Translated ['src/AI/AI-llm-architecture/2.-data-sampling.md'] to pt --- .../AI-llm-architecture/2.-data-sampling.md | 71 +++++++++++++++++-- 1 file changed, 66 insertions(+), 5 deletions(-) diff --git a/src/AI/AI-llm-architecture/2.-data-sampling.md b/src/AI/AI-llm-architecture/2.-data-sampling.md index f3eee28c0..912f101df 100644 --- a/src/AI/AI-llm-architecture/2.-data-sampling.md +++ b/src/AI/AI-llm-architecture/2.-data-sampling.md @@ -85,9 +85,9 @@ Tokens: ["Lorem", "ipsum", "dolor", "sit", "amet,", "consectetur", "adipiscing", **Entendendo o Passo** -- **Passo de 1:** A janela se move para frente um token a cada vez, resultando em sequências altamente sobrepostas. Isso pode levar a uma melhor aprendizagem das relações contextuais, mas pode aumentar o risco de overfitting, uma vez que pontos de dados semelhantes são repetidos. -- **Passo de 2:** A janela se move para frente dois tokens a cada vez, reduzindo a sobreposição. Isso diminui a redundância e a carga computacional, mas pode perder algumas nuances contextuais. -- **Passo Igual a max_length:** A janela se move para frente pelo tamanho total da janela, resultando em sequências não sobrepostas. Isso minimiza a redundância de dados, mas pode limitar a capacidade do modelo de aprender dependências entre sequências. +- **Passo de 1:** A janela avança um token a cada vez, resultando em sequências altamente sobrepostas. Isso pode levar a um melhor aprendizado das relações contextuais, mas pode aumentar o risco de overfitting, uma vez que pontos de dados semelhantes são repetidos. +- **Passo de 2:** A janela avança dois tokens a cada vez, reduzindo a sobreposição. Isso diminui a redundância e a carga computacional, mas pode perder algumas nuances contextuais. +- **Passo Igual a max_length:** A janela avança pelo tamanho total da janela, resultando em sequências não sobrepostas. Isso minimiza a redundância de dados, mas pode limitar a capacidade do modelo de aprender dependências entre sequências. **Exemplo com Passo de 2:** @@ -230,9 +230,70 @@ tensor([[ 367, 2885, 1464, 1807], [ 3285, 326, 11, 287]]) ] ``` -## Referências +## Estratégias Avançadas de Amostragem (2023-2025) -- [https://www.manning.com/books/build-a-large-language-model-from-scratch](https://www.manning.com/books/build-a-large-language-model-from-scratch) +### 1. Pesagem de Mistura Baseada em Temperatura +LLMs de última geração raramente são treinados em um único corpus. Em vez disso, eles amostram de várias fontes de dados heterogêneas (código, web, artigos acadêmicos, fóruns…). A proporção relativa de cada fonte pode afetar fortemente o desempenho subsequente. Modelos de código aberto recentes, como o Llama 2, introduziram um **esquema de amostragem baseado em temperatura** onde a probabilidade de selecionar um documento do corpus *i* se torna +``` +p(i) = \frac{w_i^{\alpha}}{\sum_j w_j^{\alpha}} +``` +• *wi* – porcentagem de token bruto do corpus *i* +• *α* ("temperatura") – um valor em (0,1]. α < 1 achata a distribuição, dando mais peso a corpora menores e de alta qualidade. +Llama 2 usou α = 0.7 e mostrou que diminuir α aumentou as pontuações de avaliação em tarefas com alto conteúdo de conhecimento, mantendo a mistura de treinamento estável. O mesmo truque é adotado pelo Mistral (2023) e Claude 3. +```python +from collections import Counter + +def temperature_sample(corpus_ids, alpha=0.7): +counts = Counter(corpus_ids) # number of tokens seen per corpus +probs = {c: c_count**alpha for c, c_count in counts.items()} +Z = sum(probs.values()) +probs = {c: p/Z for c, p in probs.items()} +# Now draw according to probs to fill every batch +``` + +``` + +### 2. Sequence Packing / Dynamic Batching +GPU memory is wasted when every sequence in a batch is padded to the longest example. "Packing" concatenates multiple shorter sequences until the **exact** `max_length` is reached and builds a parallel `attention_mask` so that tokens do not attend across segment boundaries. Packing can improve throughput by 20–40 % with no gradient change and is supported out-of-the-box in + +* PyTorch `torchtext.experimental.agents.PackedBatch` +* HuggingFace `DataCollatorForLanguageModeling(pad_to_multiple_of=…)` + +Dynamic batching frameworks (e.g. FlashAttention 2, vLLM 2024) combine sequence packing with just-in-time kernel selection, enabling thousand-token context training at 400+ K tokens/s on A100-80G. + +### 3. Deduplication & Quality Filtering +Repeated passages cause memorization and provide an easy channel for data-poisoning. Modern pipelines therefore: + +1. MinHash/FAISS near-duplicate detection at **document** and **128-gram** level. +2. Filter documents whose perplexity under a small reference model is > µ + 3σ (noisy OCR, garbled HTML). +3. Block-list documents that contain PII or CWE keywords using regex & spaCy NER. + +The Llama 2 team deduplicated with 8-gram MinHash and removed ~15 % of CommonCrawl before sampling. OpenAI’s 2024 "Deduplicate Everything" paper demonstrates ≤0.04 duplicate ratio reduces over-fitting and speeds convergence. + +## Security & Privacy Considerations During Sampling + +### Data-Poisoning / Backdoor Attacks +Researchers showed that inserting <1 % backdoored sentences can make a model obey a hidden trigger ("PoisonGPT", 2023). Recommended mitigations: + +* **Shuffled mixing** – make sure adjacent training examples originate from different sources; this dilutes gradient alignment of malicious spans. +* **Gradient similarity scoring** – compute cosine similarity of example gradient to batch average; outliers are candidates for removal. +* **Dataset versioning & hashes** – freeze immutable tarballs and verify SHA-256 before each training run. + +### Membership-Inference & Memorization +Long overlap between sliding-window samples increases the chance that rare strings (telephone numbers, secret keys) are memorized. OpenAI’s 2024 study on ChatGPT memorization reports that raising stride from 1 × `max_length` to 4 × reduces verbatim leakage by ≈50 % with negligible loss in perplexity. + +Practical recommendations: + +* Use **stride ≥ max_length** except for <1B parameter models where data volume is scarce. +* Add random masking of 1-3 tokens per window during training; this lowers memorization while preserving utility. + +--- + +## References + +- [Build a Large Language Model from Scratch (Manning, 2024)](https://www.manning.com/books/build-a-large-language-model-from-scratch) +- [Llama 2: Open Foundation and Fine-Tuned Chat Models (2023)](https://arxiv.org/abs/2307.09288) +- [PoisonGPT: Assessing Backdoor Vulnerabilities in Large Language Models (BlackHat EU 2023)](https://arxiv.org/abs/2308.12364) {{#include ../../banners/hacktricks-training.md}}