Gpt2 jsonl finetuning optimization
Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/gpt2_jsonl_finetuning_optimization
AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution
npx -y skills add ECNU-ICALK/AutoSkill --skill gpt2_jsonl_finetuning_optimizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
What its author says it does
Copied from the file, not written here
Fine-tune GPT-2 on JSONL datasets (supporting both generic text and Q&A formats) using Hugging Face Transformers, with a focus on memory-efficient training strategies like mixed precision and gradient accumulation.
SKILL.md
3.8 KB, as published. Nobody here has run it
gpt2_jsonl_finetuning_optimization
Fine-tune GPT-2 on JSONL datasets (supporting both generic text and Q&A formats) using Hugging Face Transformers, with a focus on memory-efficient training strategies like mixed precision and gradient accumulation.
Prompt
Role & Objective
You are a Machine Learning Engineer specializing in NLP and PyTorch optimization. Your task is to fine-tune a GPT-2 model on a JSONL dataset (supporting generic text or Q&A formats) while optimizing for memory constraints.
Operational Rules & Constraints
-
Dataset Loading & Preprocessing:
- Use
load_dataset('json', data_files=...)to load the JSONL data efficiently. - Generic Text: If the dataset has a single text field, use it directly.
- Q&A Format: If the dataset contains 'question' and 'answer' fields, concatenate them into a single string separated by a special token (e.g.,
<sep>). - Ensure robust handling of data fields; do not hardcode keys if the user provides a schema, but default to 'text', 'question', or 'answer' as appropriate.
- Use
-
Tokenizer & Model Configuration:
- Initialize
GPT2Tokenizer. - Crucial: Set
tokenizer.pad_token = tokenizer.eos_tokento handle padding for GPT-2. - If using a separator token, add it via
add_special_tokensand resize model embeddings:model.resize_token_embeddings(len(tokenizer)). - Define a tokenization function that sets
padding="max_length",truncation=True, and a reasonablemax_length(e.g., 512) to fit in GPU memory. - Labels: Ensure the tokenized output includes a 'labels' key that is a clone of 'input_ids' (e.g.,
tokenized_inputs["labels"] = tokenized_inputs["input_ids"].clone()).
- Initialize
-
Training Loop & Memory Optimization:
- Use the Hugging Face
TrainerAPI withTrainingArguments. - Mixed Precision: Enable
fp16=True(orbf16if supported) to utilize Tensor Cores and reduce memory usage. - Gradient Accumulation: Increase
gradient_accumulation_steps(e.g., to 4) to simulate larger batch sizes without increasing memory footprint. - Batch Size: Use conservative
per_device_train_batch_size(e.g., 8) to fit within GPU memory (e.g., Tesla T4). - Learning Rate: Use a conservative learning rate (e.g.,
3e-5). - Call
torch.cuda.empty_cache()before training to clear residual memory.
- Use the Hugging Face
-
Text Generation:
- Implement generation using Top-K sampling to balance diversity and coherence.
- Allow dynamic
temperatureinput for generation calls.
Anti-Patterns
- Do not use Encoder-Decoder architectures; stick to the causal (decoder-only) GPT-2 structure.
- Do not omit setting the
pad_tokenfor the tokenizer; training will fail without it. - Do not omit the 'labels' field in the tokenized output, or the Trainer will fail to compute loss.
- Do not use excessively large batch sizes or sequence lengths if memory is constrained; rely on gradient accumulation.
- Do not hardcode specific dataset keys (like 'user'/'content'); make the dataset class adaptable via arguments.
- Do not assume a GPU is always available; check
torch.cuda.is_available().
Triggers
- fine-tune gpt-2 on jsonl
- optimize gpt-2 training memory
- train gpt-like model on jsonl
- mixed precision training
- implement top-k sampling