Ethio-BBPE / SETUP_COMPLETE.md
Nexuss0781's picture
Upload SETUP_COMPLETE.md with huggingface_hub
fb3b54d verified
|
Raw
History Blame
5.63 kB

EthioBBPE Tokenizer - Setup Complete ✅

📦 What's Ready

Datasets Prepared

  • Synaxarium Dataset (data/synaxarium_dataset.parquet) - 366 texts
  • Canon Biblical Dataset (data/canon_biblical_am_en.parquet) - 61,403 texts (Amharic + English)
  • Combined Corpus (data/combined_corpus.txt) - 15.43 MB, 61,769 lines

Trained Model

  • Model Name: EthioBBPE_AmharicBible
  • Location: models/EthioBBPE_AmharicBible/
  • Vocabulary Size: 8,000 tokens
  • Training Duration: ~29 seconds

Generated Files

models/EthioBBPE_AmharicBible/
├── tokenizer.json              # 621 KB - Standard tokenizer (required)
├── vocab.json.gz               #  61 KB - Compressed vocabulary (64% compression)
├── tokenizer_quantized_8bit.json.gz  # 56 KB - Quantized for deployment
├── config.json                 #   1 KB - Training configuration
├── training_metrics.json       #   1 KB - Training statistics
├── special_tokens_map.json     #   1 KB - Special tokens mapping
└── README.md                   #   2 KB - Model card

🚀 How to Use

Quick Start (Already Done!)

# The tokenizer has been trained and is ready to use
./run_training.sh  # Re-run if needed

Load in Python

from tokenizers import Tokenizer

# Load the trained tokenizer
tokenizer = Tokenizer.from_file('models/EthioBBPE_AmharicBible/tokenizer.json')

# Encode text
text = "በመዠመሪያ፡እግዚአብሔር፡ሰማይንና፡ምድርን፡ፈጠረ።"
encoded = tokenizer.encode(text)
print(f"Tokens: {encoded.tokens}")
print(f"IDs: {encoded.ids}")

# Decode back
decoded = tokenizer.decode(encoded.ids)
print(f"Decoded: {decoded}")

Load with Transformers

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("models/EthioBBPE_AmharicBible")
# or upload to Hugging Face Hub and load from there

Load Compressed Vocab Directly

import gzip
import json

with gzip.open('models/EthioBBPE_AmharicBible/vocab.json.gz', 'rt', encoding='utf-8') as f:
    vocab = json.load(f)
print(f"Vocab size: {len(vocab)}")

🎯 Advanced Features Enabled

1. Checkpointing

  • Automatic checkpoint saving during training
  • SHA256 checksum for integrity verification
  • Configurable max checkpoints (currently: 3)
  • Resume capability from last checkpoint

2. Multi-format Compression

  • Format: gzip (level 9)
  • Compression Ratio: ~64% space savings
  • Also supports: bz2, lzma/xz

3. Model Quantization

  • 8-bit quantization enabled for efficient deployment
  • Creates lookup tables for faster inference
  • Saved as separate file: tokenizer_quantized_8bit.json.gz

4. Training Metrics

Comprehensive tracking saved in training_metrics.json:

  • Initial metrics (files processed, total bytes)
  • Final metrics (vocab size, training duration)
  • Full configuration snapshot

5. Multiple Export Formats

  • Standard tokenizer.json (Hugging Face compatible)
  • Compressed vocab.json.gz (storage efficient)
  • Quantized version (deployment optimized)
  • Hugging Face export files (merges.txt, special_tokens_map.json)

📊 Performance Summary

Metric Value
Vocabulary Size 8,000
Training Data 15.43 MB (61,769 texts)
Training Time 29.33 seconds
Compression Ratio 64.1%
Languages Amharic, English, Multilingual
Special Tokens <pad>, <unk>, <s>, </s>, <mask>

🔧 Re-training Options

Change Vocabulary Size

python scripts/train_tokenizer.py \
    --data_dir ./data \
    --vocab_size 16000 \
    --model_name EthioBBPE_Large

Different Compression

# Use bz2 compression
python scripts/train_tokenizer.py \
    --data_dir ./data \
    --compression_format bz2 \
    --compression_level 9

Disable Features

# Train without quantization
python scripts/train_tokenizer.py \
    --data_dir ./data \
    --no_compression \
    --no_checkpoint

Custom Special Tokens

python scripts/train_tokenizer.py \
    --data_dir ./data \
    --special_tokens "<pad>" "<unk>" "<bos>" "<eos>" "<mask>" "<cls>" "<sep>"

📁 Project Structure

/workspace/
├── data/                          # Training datasets
│   ├── synaxarium_dataset.parquet
│   ├── canon_biblical_am_en.parquet
│   └── combined_corpus.txt        # Prepared training data
├── models/                        # Trained models
│   ├── EthioBBPE_AmharicBible/   # Current model
│   └── checkpoints/              # Training checkpoints
├── scripts/
│   ├── bbpe_trainer.py           # Core trainer logic
│   ├── train_tokenizer.py        # CLI interface
│   └── prepare_datasets.py       # Dataset preparation
├── run_training.sh               # One-command training
└── README.md                     # Documentation

🎓 Next Steps

  1. Test the Tokenizer: Try encoding/decoding your own Amharic texts
  2. Upload to Hugging Face Hub: Share your model with the community
  3. Integrate with Models: Use with transformer models for Amharic NLP tasks
  4. Fine-tune Parameters: Adjust vocab size or min_frequency for your use case

📞 Support

For issues or questions:

  • Check models/EthioBBPE_AmharicBible/README.md for model-specific info
  • Review training_metrics.json for training details
  • See main README.md for comprehensive documentation

Status: ✅ Ready for Production Use Last Updated: $(date)