CoolFace
Datasetpublic

ysn-rfd/text-dataset-tiny-code-script-py-format

USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes1.6kdownloads
1#!/usr/bin/env python
2import os
3import logging
4from transformers import (
5    AutoTokenizer,
6    AutoModelForCausalLM,
7    Trainer,
8    TrainingArguments,
9    DataCollatorForLanguageModeling,
10)
11from datasets import load_dataset
12
13# Setup logging for progress messages
14logging.basicConfig(level=logging.INFO)
15logger = logging.getLogger(__name__)
16
17# 1. Load the pre-trained tokenizer and model
18model_name = "sshleifer/tiny-gpt2"  # Using GPT-2 as a small language model example
19tokenizer = AutoTokenizer.from_pretrained(model_name)
20
21# Check if a padding token is defined; if not, set it.
22if tokenizer.pad_token is None:
23    # Option 1: Use the end-of-sequence token as the padding token.
24    tokenizer.pad_token = tokenizer.eos_token
25    # Option 2 (uncomment to use a dedicated PAD token):
26    # tokenizer.add_special_tokens({'pad_token': '[PAD]'})
27    # After adding special tokens, resize model embeddings:
28    # model.resize_token_embeddings(len(tokenizer))
29
30# Load the pre-trained model.
31model = AutoModelForCausalLM.from_pretrained(model_name)
32
33# 2. Prepare the dataset
34# For demonstration, we use the Wikitext-2 raw dataset.
35dataset = load_dataset("wikitext", "wikitext-2-raw-v1", split="train")
36
37# Define a tokenization function.
38def tokenize_function(examples):
39    # Tokenize texts with padding (to max_length) and truncation.
40    # Here, we set max_length=512. Adjust as needed.
41    return tokenizer(
42        examples["text"],
43        truncation=True,
44        max_length=32,
45        padding="max_length"
46    )
47
48# Apply the tokenization function over the dataset.
49tokenized_dataset = dataset.map(tokenize_function, batched=True, remove_columns=["text"])
50
51# 3. Create a data collator for language modeling (no masked LM).
52data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
53
54# 4. Setup training arguments
55training_args = TrainingArguments(
56    output_dir="./gpt2-finetuned",
57    overwrite_output_dir=True,
58    num_train_epochs=1,              # Adjust the number of epochs as needed
59    per_device_train_batch_size=8,   # Adjust based on your available GPU memory
60    save_steps=500,
61    save_total_limit=2,
62    logging_steps=100,
63    prediction_loss_only=True,       # Useful for language modeling tasks
64)
65
66# 5. Initialize the Trainer
67trainer = Trainer(
68    model=model,
69    args=training_args,
70    train_dataset=tokenized_dataset,
71    data_collator=data_collator,
72)
73
74# 6. Start training
75logger.info("Starting training...")
76trainer.train()
77
78# 7. Save the fine-tuned model and tokenizer
79model.save_pretrained("./gpt2-finetuned")
80tokenizer.save_pretrained("./gpt2-finetuned")
81logger.info("Training complete and model saved.")
82