From 5519c091ad597e279e2b2197c7685bb5863754bc Mon Sep 17 00:00:00 2001 From: Farhan Syah Date: Wed, 26 Nov 2025 15:13:04 +0800 Subject: [PATCH 1/4] feat: add encode_rayon method for very large text parallelization Add encode_rayon() method to enable Rayon-based parallel encoding for texts larger than 1MB. This complements the existing encode() method which uses sequential processing optimized for typical text sizes. Key changes: - Refactor encode() to use sequential processing instead of Rayon - Add encode_rayon() for parallel encoding within a single text - Expose encode_rayon() to Python bindings - Add comprehensive documentation explaining when to use each method Performance characteristics: - encode(): ~50 MB/s sequential (optimal for texts <1MB) - encode_rayon(): ~47 MB/s parallel (beneficial only for texts >1MB) - encode_batch(): ~110 MB/s (parallelizes across multiple texts) Benchmarks show Rayon overhead is significant for typical text sizes. Sequential processing is 2-12x faster for texts under 500KB. This change ensures optimal performance for the most common use cases while providing a parallel option for very large single texts. --- src/core/tokenizer.rs | 125 +++++++++++++++++++++++++++++++++++++++-- src/python/bindings.rs | 20 +++++++ 2 files changed, 140 insertions(+), 5 deletions(-) diff --git a/src/core/tokenizer.rs b/src/core/tokenizer.rs index ad77d85..5cd022c 100644 --- a/src/core/tokenizer.rs +++ b/src/core/tokenizer.rs @@ -517,9 +517,40 @@ const DEFAULT_CACHE_SIZE: usize = 4096; /// High-performance tokenizer using PCRE2 with JIT and Rayon parallelism. /// -/// Key optimizations: +/// # Performance Characteristics +/// +/// This tokenizer is optimized for high throughput across different workloads: +/// +/// - **Single text encoding**: Uses sequential processing via [`encode`]. +/// Benchmarks show sequential is faster for texts up to ~1MB due to Rayon +/// thread pool overhead. Sequential achieves ~50 MB/s consistently. +/// +/// - **Batch encoding**: Uses Rayon parallelism via [`encode_batch`]. +/// Parallelizes across texts (not within a single text), achieving ~110 MB/s +/// on batch workloads - approximately 10-12x faster than tiktoken. +/// +/// - **Very large single texts (>1MB)**: Use [`encode_rayon`] for texts larger +/// than ~1MB where Rayon parallelization within the text becomes beneficial. +/// +/// # Design Decision: Sequential by Default +/// +/// The [`encode`] method uses sequential processing because Rayon parallel +/// overhead is significant for typical text sizes: +/// +/// | Text Size | Sequential | Rayon | Speedup | +/// |-----------|------------|-------|---------| +/// | 100 bytes | 42 MB/s | 3 MB/s | Sequential 12x faster | +/// | 10 KB | 50 MB/s | 26 MB/s | Sequential 2x faster | +/// | 100 KB | 54 MB/s | 41 MB/s | Sequential 1.3x faster | +/// | 1 MB | 44 MB/s | 47 MB/s | Rayon 1.07x faster | +/// +/// Rayon only becomes beneficial at ~1MB, which is rare in typical workloads. +/// For batch processing, use [`encode_batch`] which parallelizes across texts. +/// +/// # Key Optimizations +/// /// - PCRE2 with JIT compilation (2-4x faster than fancy-regex) -/// - Rayon parallelism for encoding multiple chunks +/// - Rayon parallelism for batch encoding (across texts, not within) /// - Linked-list BPE algorithm (avoids O(N²) on pathological inputs) /// - FxHashMap for fast lookups /// - Aho-Corasick for fast multi-pattern special token matching @@ -665,7 +696,23 @@ impl Tokenizer { /// Encode text to token IDs (ignores special tokens in input). /// - /// Uses Rayon to parallelize BPE encoding across regex-matched chunks. + /// Uses sequential processing, which is faster than parallel for texts up to ~1MB. + /// Achieves ~50 MB/s throughput, approximately 3x faster than tiktoken. + /// + /// # Why Sequential? + /// + /// Rayon parallel processing has significant thread pool overhead that only + /// pays off for very large texts (~1MB+). Benchmarks show: + /// - 100 bytes: Sequential is 12x faster than Rayon + /// - 10 KB: Sequential is 2x faster + /// - 100 KB: Sequential is 1.3x faster + /// - 1 MB: Rayon becomes ~7% faster + /// + /// # When to Use Other Methods + /// + /// - **Multiple texts**: Use [`encode_batch`] for parallel encoding across texts + /// - **Very large texts (>1MB)**: Use [`encode_rayon`] for parallel within-text encoding + /// - **Special tokens**: Use [`encode_with_special`] to recognize special tokens pub fn encode(&self, text: &str) -> Vec { let text_bytes = text.as_bytes(); @@ -681,7 +728,56 @@ impl Tokenizer { return vec![]; } - // Parallel BPE encoding using Rayon + // Sequential encoding - Rayon overhead not worth it for texts < 1MB + // See struct-level docs for benchmark data + let results: Vec> = chunks + .iter() + .map(|&(start, end)| { + let slice = &text_bytes[start..end]; + self.encode_chunk(slice) + }) + .collect(); + + // Flatten results + results.into_iter().flatten().collect() + } + + /// Encode text to token IDs using Rayon parallel processing. + /// + /// Parallelizes BPE encoding of individual regex-matched chunks using Rayon. + /// Only beneficial for very large texts (>1MB) where parallelization overhead + /// is amortized across many chunks. + /// + /// # Performance + /// + /// | Text Size | Sequential | Rayon | Winner | + /// |-----------|------------|-------|--------| + /// | < 500 KB | ~50 MB/s | ~40 MB/s | Sequential | + /// | ~1 MB | ~44 MB/s | ~47 MB/s | Rayon (1.07x) | + /// + /// # When to Use + /// + /// - Single texts larger than ~1MB (e.g., entire books, large documents) + /// - When processing time is more critical than thread pool overhead + /// + /// For most use cases, prefer [`encode`] (sequential) or [`encode_batch`] + /// (parallel across multiple texts). + pub fn encode_rayon(&self, text: &str) -> Vec { + let text_bytes = text.as_bytes(); + + // Collect regex matches (chunks to encode) + let chunks: Vec<(usize, usize)> = self + .regex + .find_iter(text_bytes) + .filter_map(|m| m.ok()) + .map(|m| (m.start(), m.end())) + .collect(); + + if chunks.is_empty() { + return vec![]; + } + + // Parallel encoding using Rayon - each chunk encoded in parallel let results: Vec> = chunks .par_iter() .map(|&(start, end)| { @@ -767,12 +863,31 @@ impl Tokenizer { /// Batch encode multiple texts in parallel. /// - /// Uses Rayon to parallelize across texts AND within each text's BPE encoding. + /// Uses Rayon to parallelize **across texts** (not within each text). + /// This is the most efficient approach for batch workloads because: + /// + /// 1. Each text is encoded sequentially (optimal for texts < 1MB) + /// 2. Multiple texts are processed in parallel across CPU cores + /// 3. No thread coordination overhead within individual texts + /// + /// # Performance + /// + /// Achieves ~110 MB/s throughput on batch workloads, approximately + /// 10-12x faster than tiktoken's `encode_ordinary_batch`. + /// + /// # Example + /// + /// ```ignore + /// let texts = vec!["Hello".to_string(), "World".to_string()]; + /// let token_ids = tokenizer.encode_batch(&texts); + /// ``` pub fn encode_batch(&self, texts: &[String]) -> Vec> { texts.par_iter().map(|text| self.encode(text)).collect() } /// Batch encode multiple texts with special token handling. + /// + /// Like [`encode_batch`], but recognizes special tokens in the input. pub fn encode_batch_with_special(&self, texts: &[String]) -> Vec> { texts .par_iter() diff --git a/src/python/bindings.rs b/src/python/bindings.rs index 4f22886..78a75a5 100644 --- a/src/python/bindings.rs +++ b/src/python/bindings.rs @@ -478,6 +478,7 @@ impl PyTokenizer { /// Encode text to token IDs. /// /// Special tokens in the input are treated as regular text. + /// This method uses sequential encoding which is optimal for most use cases. /// /// Args: /// text: Input text to encode @@ -488,6 +489,25 @@ impl PyTokenizer { self.inner.encode(text) } + /// Encode text to token IDs using Rayon parallel processing. + /// + /// This method parallelizes the BPE encoding of individual chunks using Rayon. + /// It has higher overhead than `encode()` due to thread pool coordination, + /// but can be faster for very large texts (typically >1MB) where the + /// parallelization benefit outweighs the overhead. + /// + /// For most use cases, prefer `encode()` (sequential) or `encode_batch()` + /// (parallel across multiple texts). + /// + /// Args: + /// text: Input text to encode + /// + /// Returns: + /// List of token IDs + fn encode_rayon(&self, text: &str) -> Vec { + self.inner.encode_rayon(text) + } + /// Encode text with special token handling. /// /// Special tokens in the input are encoded directly without BPE. From 2a5832295d45074cc51431a52db207a2fb4f09fe Mon Sep 17 00:00:00 2001 From: Farhan Syah Date: Wed, 26 Nov 2025 15:13:27 +0800 Subject: [PATCH 2/4] chore: add benchmark scripts and performance visualization images Add comprehensive benchmark suite comparing splintr against tiktoken, Hugging Face tokenizers, and TokenDagger across different workloads. Benchmark scripts: - benchmark_splintr.py: Internal comparison of sequential vs Rayon encoding - benchmark_single.py: Single-text encoding vs other tokenizers - benchmark_batch.py: Batch encoding throughput comparison - compare_tokenizers.py: Multi-tokenizer comparative analysis Performance visualizations: - benchmark_splintr.png: Sequential vs Rayon performance by text size - benchmark_single.png: Throughput comparison across tokenizers - benchmark_single_latency.png: Latency comparison by content type - benchmark_batch.png: Batch throughput by configuration - benchmark_batch_speedup.png: Speedup factors vs tiktoken These benchmarks demonstrate splintr's 3-4x speedup on single texts and 10-12x speedup on batch operations compared to tiktoken. --- benchmarks/benchmark_batch.py | 318 +++++++++++++++++ benchmarks/benchmark_single.py | 451 ++++++++++++++++++++++++ benchmarks/benchmark_splintr.py | 260 ++++++++++++++ benchmarks/compare_tokenizers.py | 509 ++++++++++++++++++++++++++++ images/benchmark_batch.png | Bin 0 -> 62334 bytes images/benchmark_batch_speedup.png | Bin 0 -> 51045 bytes images/benchmark_single.png | Bin 0 -> 88293 bytes images/benchmark_single_latency.png | Bin 0 -> 90145 bytes images/benchmark_speedup.png | Bin 0 -> 55710 bytes images/benchmark_splintr.png | Bin 0 -> 130934 bytes 10 files changed, 1538 insertions(+) create mode 100644 benchmarks/benchmark_batch.py create mode 100644 benchmarks/benchmark_single.py create mode 100644 benchmarks/benchmark_splintr.py create mode 100644 benchmarks/compare_tokenizers.py create mode 100644 images/benchmark_batch.png create mode 100644 images/benchmark_batch_speedup.png create mode 100644 images/benchmark_single.png create mode 100644 images/benchmark_single_latency.png create mode 100644 images/benchmark_speedup.png create mode 100644 images/benchmark_splintr.png diff --git a/benchmarks/benchmark_batch.py b/benchmarks/benchmark_batch.py new file mode 100644 index 0000000..3d7ebaa --- /dev/null +++ b/benchmarks/benchmark_batch.py @@ -0,0 +1,318 @@ +#!/usr/bin/env python3 +""" +Benchmark: Batch Encoding Comparison +Compares tokenizer throughput for batch encoding across different batch sizes. + +Usage: + python benchmarks/benchmark_batch.py +""" + +import gc +import statistics +import time +from dataclasses import dataclass +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +# Sample text for batch benchmarks +SAMPLE_TEXT = """The quick brown fox jumps over the lazy dog. +Machine learning models require tokenization to process text efficiently. +Tokenizers convert text into numerical representations that models can understand.""" + +TOKENIZER_COLORS = { + "splintr": "#2ecc71", # Green + "tiktoken": "#3498db", # Blue + "huggingface": "#e74c3c", # Red + "tokendagger": "#9b59b6", # Purple +} + + +@dataclass +class BenchmarkResult: + name: str + batch_size: int + bytes_per_second: float + tokens_per_second: float + total_tokens: int + total_bytes: int + latency_ms: float + + +def benchmark_batch( + name: str, + encode_batch_fn, + texts: list[str], + batch_size: int, + warmup: int = 3, + iterations: int = 10, +) -> BenchmarkResult: + """Benchmark batch encoding.""" + total_bytes = sum(len(t.encode("utf-8")) for t in texts) + + # Warmup + for _ in range(warmup): + encode_batch_fn(texts) + + gc.collect() + + times = [] + total_tokens = 0 + for _ in range(iterations): + start = time.perf_counter_ns() + results = encode_batch_fn(texts) + end = time.perf_counter_ns() + times.append((end - start) / 1e9) + total_tokens = sum(len(r) for r in results) + + avg_time = statistics.mean(times) + bytes_per_second = total_bytes / avg_time + tokens_per_second = total_tokens / avg_time + + return BenchmarkResult( + name=name, + batch_size=batch_size, + bytes_per_second=bytes_per_second, + tokens_per_second=tokens_per_second, + total_tokens=total_tokens, + total_bytes=total_bytes, + latency_ms=avg_time * 1000, + ) + + +def load_tokenizers(): + """Load all available tokenizers with batch functions. + + All tokenizers use their native batch encoding methods: + - splintr: encode_batch (Rayon parallel) + - tiktoken: encode_ordinary_batch (native batch) + - huggingface: encode_batch (native batch) + - tokendagger: encode_batch (native batch) + """ + tokenizers = {} + + # splintr - native batch via Rayon + try: + import splintr + enc = splintr.Tokenizer.from_pretrained("cl100k_base") + tokenizers["splintr"] = enc.encode_batch + print("Loaded: splintr (native encode_batch)") + except ImportError: + print("splintr not available") + + # tiktoken - native batch + try: + import tiktoken + enc = tiktoken.get_encoding("cl100k_base") + tokenizers["tiktoken"] = enc.encode_ordinary_batch + print("Loaded: tiktoken (native encode_ordinary_batch)") + except ImportError: + print("tiktoken not available") + + # HuggingFace tokenizers - native batch + try: + from tokenizers import Tokenizer as HFTokenizer + hf_enc = HFTokenizer.from_pretrained("gpt2") + + def hf_encode_batch(texts): + return [e.ids for e in hf_enc.encode_batch(texts)] + + tokenizers["huggingface"] = hf_encode_batch + print("Loaded: huggingface (native encode_batch)") + except ImportError: + print("huggingface not available") + + # TokenDagger - native batch + try: + import tokendagger + import tiktoken + tik_enc = tiktoken.get_encoding("cl100k_base") + enc = tokendagger.Tokenizer( + name="cl100k_base", + pat_str=tik_enc._pat_str, + mergeable_ranks=tik_enc._mergeable_ranks, + special_tokens=tik_enc._special_tokens, + ) + tokenizers["tokendagger"] = enc.encode_batch + print("Loaded: tokendagger (native encode_batch)") + except (ImportError, Exception) as e: + print(f"tokendagger not available: {e}") + + return tokenizers + + +def run_benchmarks(tokenizers: dict) -> list[BenchmarkResult]: + """Run batch benchmarks with various batch sizes.""" + results = [] + + # Warmup all tokenizers + print("\nWarming up all tokenizers...") + warmup_texts = [SAMPLE_TEXT] * 100 + for name, encode_batch_fn in tokenizers.items(): + for _ in range(10): + encode_batch_fn(warmup_texts) + print("Warmup complete.") + + batch_sizes = [1, 10, 50, 100, 500, 1000] + + print("\n" + "=" * 70) + print("BATCH ENCODING BENCHMARKS") + print("=" * 70) + + for batch_size in batch_sizes: + texts = [SAMPLE_TEXT] * batch_size + total_bytes = sum(len(t.encode("utf-8")) for t in texts) + + print(f"\n--- Batch Size: {batch_size} ({total_bytes:,} bytes total) ---") + print(f"{'Tokenizer':<15} {'MB/s':>10} {'Ktok/s':>10} {'Latency':>12}") + print("-" * 50) + + for name, encode_batch_fn in tokenizers.items(): + result = benchmark_batch(name, encode_batch_fn, texts, batch_size) + results.append(result) + print( + f"{name:<15} {result.bytes_per_second / 1e6:>10.2f} " + f"{result.tokens_per_second / 1e3:>10.2f} " + f"{result.latency_ms:>10.2f} ms" + ) + + return results + + +def generate_chart(results: list[BenchmarkResult], output_path: str): + """Generate batch encoding comparison chart.""" + + names = list(dict.fromkeys(r.name for r in results)) + batch_sizes = list(dict.fromkeys(r.batch_size for r in results)) + + fig, ax = plt.subplots(figsize=(12, 7)) + + x = np.arange(len(batch_sizes)) + width = 0.8 / len(names) + + for i, name in enumerate(names): + throughputs = [] + for batch_size in batch_sizes: + for r in results: + if r.name == name and r.batch_size == batch_size: + throughputs.append(r.bytes_per_second / 1e6) + break + + offset = i * width - width * len(names) / 2 + width / 2 + bars = ax.bar( + x + offset, + throughputs, + width, + label=name, + color=TOKENIZER_COLORS.get(name, "#95a5a6"), + ) + + # Add value labels + for bar, val in zip(bars, throughputs): + height = bar.get_height() + ax.annotate( + f'{val:.0f}', + xy=(bar.get_x() + bar.get_width() / 2, height), + xytext=(0, 3), + textcoords="offset points", + ha='center', + va='bottom', + fontsize=8, + ) + + ax.set_xlabel("Batch Size (number of texts)", fontsize=12) + ax.set_ylabel("Throughput (MB/s)", fontsize=12) + ax.set_title("Batch Encoding Throughput Comparison", fontsize=14, fontweight="bold") + ax.set_xticks(x) + ax.set_xticklabels([str(bs) for bs in batch_sizes]) + ax.legend(loc="upper left") + ax.grid(axis="y", alpha=0.3) + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight") + print(f"\nChart saved to: {output_path}") + plt.close() + + +def generate_speedup_chart(results: list[BenchmarkResult], output_path: str): + """Generate speedup vs tiktoken chart.""" + + if not any(r.name == "tiktoken" for r in results): + print("tiktoken not available for speedup chart") + return + + names = [n for n in dict.fromkeys(r.name for r in results) if n != "tiktoken"] + batch_sizes = list(dict.fromkeys(r.batch_size for r in results)) + + # Get tiktoken baseline + tiktoken_throughput = {} + for r in results: + if r.name == "tiktoken": + tiktoken_throughput[r.batch_size] = r.bytes_per_second + + fig, ax = plt.subplots(figsize=(10, 6)) + + x = np.arange(len(batch_sizes)) + width = 0.8 / len(names) + + for i, name in enumerate(names): + speedups = [] + for batch_size in batch_sizes: + for r in results: + if r.name == name and r.batch_size == batch_size: + speedup = r.bytes_per_second / tiktoken_throughput[batch_size] + speedups.append(speedup) + break + + offset = i * width - width * len(names) / 2 + width / 2 + ax.bar( + x + offset, + speedups, + width, + label=name, + color=TOKENIZER_COLORS.get(name, "#95a5a6"), + ) + + # Baseline line + ax.axhline(y=1.0, color="gray", linestyle="--", linewidth=1, label="tiktoken (baseline)") + + ax.set_xlabel("Batch Size", fontsize=12) + ax.set_ylabel("Speedup vs tiktoken", fontsize=12) + ax.set_title("Batch Encoding Speedup Relative to tiktoken", fontsize=14, fontweight="bold") + ax.set_xticks(x) + ax.set_xticklabels([str(bs) for bs in batch_sizes]) + ax.legend() + ax.grid(axis="y", alpha=0.3) + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight") + print(f"Speedup chart saved to: {output_path}") + plt.close() + + +def main(): + print("=" * 70) + print("TOKENIZER BENCHMARK: BATCH ENCODING") + print("=" * 70) + + output_dir = Path(__file__).parent / "results" + output_dir.mkdir(exist_ok=True) + + tokenizers = load_tokenizers() + + if len(tokenizers) < 2: + print("\nNeed at least 2 tokenizers for comparison") + return + + results = run_benchmarks(tokenizers) + + generate_chart(results, str(output_dir / "benchmark_batch.png")) + generate_speedup_chart(results, str(output_dir / "benchmark_batch_speedup.png")) + + print("\nDone!") + + +if __name__ == "__main__": + main() diff --git a/benchmarks/benchmark_single.py b/benchmarks/benchmark_single.py new file mode 100644 index 0000000..bb402bd --- /dev/null +++ b/benchmarks/benchmark_single.py @@ -0,0 +1,451 @@ +#!/usr/bin/env python3 +""" +Benchmark: Single Text Encoding Comparison +Compares tokenizer throughput across different text types and sizes. + +Usage: + python benchmarks/benchmark_single.py +""" + +import gc +import statistics +import time +from dataclasses import dataclass +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +# Sample texts for benchmarking +SAMPLE_TEXTS = { + "short": "Hello, world! This is a test.", + "medium": """The quick brown fox jumps over the lazy dog. + Machine learning models require tokenization to process text efficiently. + Tokenizers convert text into numerical representations that models can understand.""" * 10, + "long": """Artificial intelligence and machine learning have revolutionized + the way we process and understand natural language. Large language models (LLMs) + like GPT-4, Claude, and others rely heavily on efficient tokenization to handle + vast amounts of text data. The performance of tokenizers directly impacts the + overall throughput of these systems, making optimization crucial for production + deployments. BPE (Byte Pair Encoding) has become the de facto standard for + modern tokenizers due to its balance of vocabulary efficiency and handling of + out-of-vocabulary words.""" * 50, + "code": ''' +def fibonacci(n: int) -> int: + """Calculate the nth Fibonacci number.""" + if n <= 1: + return n + return fibonacci(n - 1) + fibonacci(n - 2) + +class TokenizerBenchmark: + def __init__(self, name: str): + self.name = name + self.results = [] + + def run(self, text: str, iterations: int = 100): + for _ in range(iterations): + tokens = self.encode(text) + self.results.append(len(tokens)) +''' * 20, + "multilingual": """ + English: The quick brown fox jumps over the lazy dog. + 中文: 快速的棕色狐狸跳过懒狗。 + 日本語: 素早い茶色の狐が怠惰な犬を飛び越える。 + 한국어: 빠른 갈색 여우가 게으른 개를 뛰어넘습니다. + العربية: الثعلب البني السريع يقفز فوق الكلب الكسول. + Русский: Быстрая коричневая лиса прыгает через ленивую собаку. + """ * 20, +} + +TOKENIZER_COLORS = { + "splintr": "#2ecc71", # Green + "tiktoken": "#3498db", # Blue + "huggingface": "#e74c3c", # Red + "tokendagger": "#9b59b6", # Purple +} + + +@dataclass +class BenchmarkResult: + name: str + text_type: str + bytes_per_second: float + tokens_per_second: float + num_tokens: int + num_bytes: int + latency_ms: float + latency_std_ms: float + + +def benchmark_encode( + name: str, + encode_fn, + text: str, + text_type: str, + warmup: int = 50, + iterations: int = 100, +) -> BenchmarkResult: + """Benchmark a single encode function.""" + num_bytes = len(text.encode("utf-8")) + + # Warmup - use more iterations to ensure thread pools are initialized + for _ in range(warmup): + encode_fn(text) + + # Force garbage collection before timing + gc.collect() + + # Benchmark + times = [] + num_tokens = 0 + for _ in range(iterations): + start = time.perf_counter_ns() + tokens = encode_fn(text) + end = time.perf_counter_ns() + times.append((end - start) / 1e9) # Convert to seconds + num_tokens = len(tokens) + + avg_time = statistics.mean(times) + std_time = statistics.stdev(times) if len(times) > 1 else 0 + bytes_per_second = num_bytes / avg_time + tokens_per_second = num_tokens / avg_time + + return BenchmarkResult( + name=name, + text_type=text_type, + bytes_per_second=bytes_per_second, + tokens_per_second=tokens_per_second, + num_tokens=num_tokens, + num_bytes=num_bytes, + latency_ms=avg_time * 1000, + latency_std_ms=std_time * 1000, + ) + + +def load_tokenizers(): + """Load all available tokenizers.""" + tokenizers = {} + + # splintr + try: + import splintr + enc = splintr.Tokenizer.from_pretrained("cl100k_base") + tokenizers["splintr"] = enc.encode + print("Loaded: splintr") + except ImportError: + print("splintr not available") + + # tiktoken + try: + import tiktoken + enc = tiktoken.get_encoding("cl100k_base") + tokenizers["tiktoken"] = enc.encode + print("Loaded: tiktoken") + except ImportError: + print("tiktoken not available") + + # HuggingFace tokenizers + try: + from tokenizers import Tokenizer as HFTokenizer + hf_enc = HFTokenizer.from_pretrained("gpt2") + + def hf_encode(text): + return hf_enc.encode(text).ids + + tokenizers["huggingface"] = hf_encode + print("Loaded: huggingface") + except ImportError: + print("huggingface not available") + + # TokenDagger + try: + import tokendagger + import tiktoken + tik_enc = tiktoken.get_encoding("cl100k_base") + enc = tokendagger.Tokenizer( + name="cl100k_base", + pat_str=tik_enc._pat_str, + mergeable_ranks=tik_enc._mergeable_ranks, + special_tokens=tik_enc._special_tokens, + ) + tokenizers["tokendagger"] = enc.encode + print("Loaded: tokendagger") + except (ImportError, Exception) as e: + print(f"tokendagger not available: {e}") + + return tokenizers + + +def run_benchmarks(tokenizers: dict) -> list[BenchmarkResult]: + """Run benchmarks for all text types.""" + results = [] + + # Global warmup to initialize thread pools + print("\nWarming up all tokenizers...") + warmup_text = "This is a warmup text to initialize thread pools and caches." * 10 + for name, encode_fn in tokenizers.items(): + for _ in range(100): + encode_fn(warmup_text) + print("Warmup complete.") + + print("\n" + "=" * 70) + print("TEXT TYPE BENCHMARKS") + print("=" * 70) + + for text_type, text in SAMPLE_TEXTS.items(): + num_bytes = len(text.encode("utf-8")) + print(f"\n--- {text_type.upper()} ({num_bytes:,} bytes) ---") + print(f"{'Tokenizer':<15} {'MB/s':>10} {'Ktok/s':>10} {'Latency':>12} {'Std':>10}") + print("-" * 60) + + for name, encode_fn in tokenizers.items(): + result = benchmark_encode(name, encode_fn, text, text_type) + results.append(result) + print( + f"{name:<15} {result.bytes_per_second / 1e6:>10.2f} " + f"{result.tokens_per_second / 1e3:>10.2f} " + f"{result.latency_ms:>10.3f} ms " + f"{result.latency_std_ms:>8.3f} ms" + ) + + return results + + +def generate_chart(results: list[BenchmarkResult], output_path: str): + """Generate text type comparison chart.""" + + # Get unique tokenizers and text types + names = list(dict.fromkeys(r.name for r in results)) + text_types = list(dict.fromkeys(r.text_type for r in results)) + + # Create figure + fig, ax = plt.subplots(figsize=(12, 7)) + + x = np.arange(len(text_types)) + width = 0.8 / len(names) + + # Create bars for each tokenizer + for i, name in enumerate(names): + throughputs = [] + for text_type in text_types: + for r in results: + if r.name == name and r.text_type == text_type: + throughputs.append(r.bytes_per_second / 1e6) + break + + offset = i * width - width * len(names) / 2 + width / 2 + bars = ax.bar( + x + offset, + throughputs, + width, + label=name, + color=TOKENIZER_COLORS.get(name, "#95a5a6"), + ) + + # Add value labels on bars + for bar, val in zip(bars, throughputs): + height = bar.get_height() + ax.annotate( + f'{val:.1f}', + xy=(bar.get_x() + bar.get_width() / 2, height), + xytext=(0, 3), + textcoords="offset points", + ha='center', + va='bottom', + fontsize=8, + ) + + # Add text size annotations below x-axis + text_sizes = [] + for text_type in text_types: + for r in results: + if r.text_type == text_type: + text_sizes.append(r.num_bytes) + break + + ax.set_xlabel("Text Type", fontsize=12) + ax.set_ylabel("Throughput (MB/s)", fontsize=12) + ax.set_title("Tokenizer Throughput by Text Type", fontsize=14, fontweight="bold") + ax.set_xticks(x) + + # Create x-tick labels with size info + xlabels = [f"{t.capitalize()}\n({text_sizes[i]:,} bytes)" for i, t in enumerate(text_types)] + ax.set_xticklabels(xlabels) + + ax.legend(loc="upper left") + ax.grid(axis="y", alpha=0.3) + + # Add a note about short text performance + ax.text( + 0.98, 0.02, + "Lower is worse for short texts due to fixed overhead", + transform=ax.transAxes, + fontsize=9, + ha='right', + va='bottom', + style='italic', + color='gray', + ) + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight") + print(f"\nChart saved to: {output_path}") + plt.close() + + +def generate_latency_chart(results: list[BenchmarkResult], output_path: str): + """Generate latency comparison chart (good for seeing short text overhead).""" + + names = list(dict.fromkeys(r.name for r in results)) + text_types = list(dict.fromkeys(r.text_type for r in results)) + + fig, ax = plt.subplots(figsize=(12, 7)) + + x = np.arange(len(text_types)) + width = 0.8 / len(names) + + for i, name in enumerate(names): + latencies = [] + errors = [] + for text_type in text_types: + for r in results: + if r.name == name and r.text_type == text_type: + latencies.append(r.latency_ms) + errors.append(r.latency_std_ms) + break + + offset = i * width - width * len(names) / 2 + width / 2 + bars = ax.bar( + x + offset, + latencies, + width, + label=name, + color=TOKENIZER_COLORS.get(name, "#95a5a6"), + yerr=errors, + capsize=3, + ) + + # Add value labels + for bar, val in zip(bars, latencies): + height = bar.get_height() + ax.annotate( + f'{val:.2f}', + xy=(bar.get_x() + bar.get_width() / 2, height), + xytext=(0, 3), + textcoords="offset points", + ha='center', + va='bottom', + fontsize=8, + ) + + ax.set_xlabel("Text Type", fontsize=12) + ax.set_ylabel("Latency (ms) - Lower is Better", fontsize=12) + ax.set_title("Tokenizer Latency by Text Type", fontsize=14, fontweight="bold") + ax.set_xticks(x) + + text_sizes = [] + for text_type in text_types: + for r in results: + if r.text_type == text_type: + text_sizes.append(r.num_bytes) + break + + xlabels = [f"{t.capitalize()}\n({text_sizes[i]:,} bytes)" for i, t in enumerate(text_types)] + ax.set_xticklabels(xlabels) + + ax.legend(loc="upper left") + ax.grid(axis="y", alpha=0.3) + ax.set_yscale("log") # Log scale to see small values + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight") + print(f"Latency chart saved to: {output_path}") + plt.close() + + +def analyze_short_text_overhead(tokenizers: dict): + """Analyze why short texts are slow - measure fixed overhead.""" + + print("\n" + "=" * 70) + print("SHORT TEXT OVERHEAD ANALYSIS") + print("=" * 70) + + # First, do a global warmup for all tokenizers + print("\nWarming up all tokenizers...") + warmup_text = "This is a warmup text to initialize thread pools and caches." * 10 + for name, encode_fn in tokenizers.items(): + for _ in range(100): + encode_fn(warmup_text) + print("Warmup complete.\n") + + # Test with progressively shorter texts + test_texts = [ + ("1 char", "H"), + ("5 chars", "Hello"), + ("10 chars", "Hello worl"), + ("29 chars (short)", "Hello, world! This is a test."), + ("100 chars", "Hello, world! " * 7), + ("500 chars", "Hello, world! " * 35), + ] + + print(f"{'Text':<20} {'Size':>8} ", end="") + for name in tokenizers.keys(): + print(f"{name:>12}", end=" ") + print() + print("-" * (30 + 13 * len(tokenizers))) + + for label, text in test_texts: + num_bytes = len(text.encode("utf-8")) + print(f"{label:<20} {num_bytes:>6} B ", end="") + + for name, encode_fn in tokenizers.items(): + # Additional per-text warmup + for _ in range(20): + encode_fn(text) + + # Measure + gc.collect() + times = [] + for _ in range(100): + start = time.perf_counter_ns() + encode_fn(text) + end = time.perf_counter_ns() + times.append((end - start) / 1e6) # ms + + avg_ms = statistics.mean(times) + print(f"{avg_ms:>10.4f}ms", end=" ") + print() + + +def main(): + print("=" * 70) + print("TOKENIZER BENCHMARK: TEXT TYPES") + print("=" * 70) + + # Create output directory + output_dir = Path(__file__).parent / "results" + output_dir.mkdir(exist_ok=True) + + # Load tokenizers + tokenizers = load_tokenizers() + + if len(tokenizers) < 2: + print("\nNeed at least 2 tokenizers for comparison") + return + + # Run main benchmarks + results = run_benchmarks(tokenizers) + + # Generate charts + generate_chart(results, str(output_dir / "benchmark_single.png")) + generate_latency_chart(results, str(output_dir / "benchmark_single_latency.png")) + + # Analyze short text overhead + analyze_short_text_overhead(tokenizers) + + print("\nDone!") + + +if __name__ == "__main__": + main() diff --git a/benchmarks/benchmark_splintr.py b/benchmarks/benchmark_splintr.py new file mode 100644 index 0000000..680874c --- /dev/null +++ b/benchmarks/benchmark_splintr.py @@ -0,0 +1,260 @@ +#!/usr/bin/env python3 +""" +Benchmark: Splintr Sequential vs Rayon (Parallel) Single Text Encoding +Finds the crossover point where Rayon parallelization becomes beneficial. + +Usage: + python benchmarks/benchmark_splintr.py +""" + +import gc +import statistics +import time +from dataclasses import dataclass +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +@dataclass +class BenchmarkResult: + size_bytes: int + sequential_ms: float + rayon_ms: float + sequential_throughput: float # MB/s + rayon_throughput: float # MB/s + speedup: float # rayon / sequential (>1 means rayon is faster) + + +def create_test_text(target_size: int) -> str: + """Create test text of approximately target size.""" + base = "The quick brown fox jumps over the lazy dog. " + repeat = max(1, target_size // len(base)) + text = base * repeat + return text[:target_size] if len(text) > target_size else text + + +def benchmark_size(size: int, warmup: int = 20, iterations: int = 50) -> BenchmarkResult: + """Benchmark both sequential and rayon encoding for a given size.""" + import splintr + + text = create_test_text(size) + actual_size = len(text.encode("utf-8")) + + enc = splintr.Tokenizer.from_pretrained("cl100k_base") + + # Warmup both + for _ in range(warmup): + enc.encode(text) + enc.encode_rayon(text) + + gc.collect() + + # Benchmark sequential (encode) + seq_times = [] + for _ in range(iterations): + start = time.perf_counter_ns() + enc.encode(text) + end = time.perf_counter_ns() + seq_times.append((end - start) / 1e6) # ms + + # Benchmark rayon (encode_rayon) + rayon_times = [] + for _ in range(iterations): + start = time.perf_counter_ns() + enc.encode_rayon(text) + end = time.perf_counter_ns() + rayon_times.append((end - start) / 1e6) # ms + + seq_avg = statistics.mean(seq_times) + rayon_avg = statistics.mean(rayon_times) + + seq_throughput = actual_size / seq_avg / 1000 # MB/s + rayon_throughput = actual_size / rayon_avg / 1000 # MB/s + + speedup = seq_avg / rayon_avg # >1 means rayon is faster + + return BenchmarkResult( + size_bytes=actual_size, + sequential_ms=seq_avg, + rayon_ms=rayon_avg, + sequential_throughput=seq_throughput, + rayon_throughput=rayon_throughput, + speedup=speedup, + ) + + +def check_rayon_available(): + """Check if encode_rayon is available.""" + try: + import splintr + enc = splintr.Tokenizer.from_pretrained("cl100k_base") + if not hasattr(enc, 'encode_rayon'): + print("ERROR: encode_rayon method not found!") + print("You need to add encode_rayon to the Tokenizer class.") + print("\nAdd this to src/core/tokenizer.rs:") + print(""" + /// Encode text using Rayon parallel processing. + /// Use this for very large texts (>100KB) where parallelization helps. + pub fn encode_rayon(&self, text: &str) -> Vec { + // ... parallel implementation + } +""") + return False + return True + except Exception as e: + print(f"Error: {e}") + return False + + +def run_benchmarks() -> list[BenchmarkResult]: + """Run benchmarks across various sizes.""" + results = [] + + # Test sizes from 100 bytes to 1MB + sizes = [ + 100, 200, 500, + 1000, 2000, 5000, + 10000, 20000, 50000, + 100000, 200000, 500000, + 1000000, + ] + + print("\n" + "=" * 80) + print("SEQUENTIAL vs RAYON BENCHMARK") + print("=" * 80) + print(f"\n{'Size':>12} {'Sequential':>12} {'Rayon':>12} {'Seq MB/s':>10} {'Rayon MB/s':>10} {'Speedup':>10}") + print("-" * 80) + + for size in sizes: + result = benchmark_size(size) + results.append(result) + + speedup_str = f"{result.speedup:.2f}x" + if result.speedup > 1.1: + speedup_str += " (rayon wins)" + elif result.speedup < 0.9: + speedup_str += " (seq wins)" + + print( + f"{result.size_bytes:>10} B " + f"{result.sequential_ms:>10.3f} ms " + f"{result.rayon_ms:>10.3f} ms " + f"{result.sequential_throughput:>10.1f} " + f"{result.rayon_throughput:>10.1f} " + f"{speedup_str:>14}" + ) + + return results + + +def find_crossover(results: list[BenchmarkResult]) -> int | None: + """Find the size where Rayon becomes consistently faster.""" + for i, r in enumerate(results): + # Check if rayon is faster for this and subsequent sizes + if r.speedup > 1.0: + # Verify it stays faster for larger sizes + remaining = results[i:] + if all(rr.speedup >= 0.95 for rr in remaining): # Allow 5% margin + return r.size_bytes + return None + + +def generate_chart(results: list[BenchmarkResult], output_path: str): + """Generate comparison chart.""" + sizes = [r.size_bytes for r in results] + seq_throughput = [r.sequential_throughput for r in results] + rayon_throughput = [r.rayon_throughput for r in results] + + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 6)) + + # Chart 1: Throughput comparison + ax1.plot(sizes, seq_throughput, 'o-', label='Sequential', color='#2ecc71', linewidth=2, markersize=6) + ax1.plot(sizes, rayon_throughput, 's-', label='Rayon (parallel)', color='#e74c3c', linewidth=2, markersize=6) + + ax1.set_xscale('log') + ax1.set_xlabel('Text Size (bytes)', fontsize=12) + ax1.set_ylabel('Throughput (MB/s)', fontsize=12) + ax1.set_title('Sequential vs Rayon Throughput', fontsize=14, fontweight='bold') + ax1.legend() + ax1.grid(True, alpha=0.3) + + # Add crossover annotation + crossover = find_crossover(results) + if crossover: + ax1.axvline(x=crossover, color='gray', linestyle='--', alpha=0.7) + ax1.annotate( + f'Crossover\n~{crossover/1000:.0f}KB', + xy=(crossover, max(seq_throughput) * 0.8), + fontsize=10, + ha='center', + ) + + # Chart 2: Speedup ratio + speedups = [r.speedup for r in results] + + colors = ['#2ecc71' if s < 1 else '#e74c3c' for s in speedups] + ax2.bar(range(len(sizes)), speedups, color=colors) + ax2.axhline(y=1.0, color='black', linestyle='-', linewidth=1) + + ax2.set_xticks(range(len(sizes))) + ax2.set_xticklabels([f'{s/1000:.0f}K' if s >= 1000 else str(s) for s in sizes], rotation=45, ha='right') + ax2.set_xlabel('Text Size', fontsize=12) + ax2.set_ylabel('Speedup (Rayon / Sequential)', fontsize=12) + ax2.set_title('Rayon Speedup Ratio (>1 = Rayon faster)', fontsize=14, fontweight='bold') + ax2.grid(axis='y', alpha=0.3) + + # Add legend + from matplotlib.patches import Patch + legend_elements = [ + Patch(facecolor='#2ecc71', label='Sequential wins'), + Patch(facecolor='#e74c3c', label='Rayon wins'), + ] + ax2.legend(handles=legend_elements, loc='upper left') + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches='tight') + print(f"\nChart saved to: {output_path}") + plt.close() + + +def main(): + print("=" * 80) + print("SPLINTR: SEQUENTIAL vs RAYON SINGLE TEXT ENCODING") + print("=" * 80) + + if not check_rayon_available(): + return + + output_dir = Path(__file__).parent / "results" + output_dir.mkdir(exist_ok=True) + + # Warmup + print("\nWarming up...") + import splintr + enc = splintr.Tokenizer.from_pretrained("cl100k_base") + warmup_text = "warmup " * 1000 + for _ in range(50): + enc.encode(warmup_text) + enc.encode_rayon(warmup_text) + print("Warmup complete.") + + results = run_benchmarks() + + crossover = find_crossover(results) + print("\n" + "=" * 80) + if crossover: + print(f"CROSSOVER POINT: ~{crossover:,} bytes ({crossover/1024:.1f} KB)") + print(f"Recommendation: Use Rayon for texts > {crossover:,} bytes") + else: + print("No clear crossover found - Sequential is generally faster") + print("=" * 80) + + generate_chart(results, str(output_dir / "benchmark_splintr.png")) + + print("\nDone!") + + +if __name__ == "__main__": + main() diff --git a/benchmarks/compare_tokenizers.py b/benchmarks/compare_tokenizers.py new file mode 100644 index 0000000..c814909 --- /dev/null +++ b/benchmarks/compare_tokenizers.py @@ -0,0 +1,509 @@ +#!/usr/bin/env python3 +""" +Benchmark comparison: splintr vs tiktoken vs HuggingFace Tokenizers vs TokenDagger + +Generates performance charts comparing encoding throughput across different tokenizers. + +Usage: + pip install tiktoken tokenizers matplotlib numpy + pip install tokendagger # optional + python benchmarks/compare_tokenizers.py +""" + +import gc +import json +import os +import statistics +import time +from dataclasses import dataclass +from pathlib import Path +from typing import Callable + +# Sample texts for benchmarking +SAMPLE_TEXTS = { + "short": "Hello, world! This is a test.", + "medium": """The quick brown fox jumps over the lazy dog. + Machine learning models require tokenization to process text efficiently. + Tokenizers convert text into numerical representations that models can understand.""" * 10, + "long": """Artificial intelligence and machine learning have revolutionized + the way we process and understand natural language. Large language models (LLMs) + like GPT-4, Claude, and others rely heavily on efficient tokenization to handle + vast amounts of text data. The performance of tokenizers directly impacts the + overall throughput of these systems, making optimization crucial for production + deployments. BPE (Byte Pair Encoding) has become the de facto standard for + modern tokenizers due to its balance of vocabulary efficiency and handling of + out-of-vocabulary words.""" * 50, + "code": ''' +def fibonacci(n: int) -> int: + """Calculate the nth Fibonacci number.""" + if n <= 1: + return n + return fibonacci(n - 1) + fibonacci(n - 2) + +class TokenizerBenchmark: + def __init__(self, name: str): + self.name = name + self.results = [] + + def run(self, text: str, iterations: int = 100): + for _ in range(iterations): + tokens = self.encode(text) + self.results.append(len(tokens)) +''' * 20, + "multilingual": """ + English: The quick brown fox jumps over the lazy dog. + 中文: 快速的棕色狐狸跳过懒狗。 + 日本語: 素早い茶色の狐が怠惰な犬を飛び越える。 + 한국어: 빠른 갈색 여우가 게으른 개를 뛰어넘습니다. + العربية: الثعلب البني السريع يقفز فوق الكلب الكسول. + Русский: Быстрая коричневая лиса прыгает через ленивую собаку. + """ * 20, +} + + +@dataclass +class BenchmarkResult: + name: str + text_type: str + bytes_per_second: float + tokens_per_second: float + num_tokens: int + num_bytes: int + latency_ms: float + + +def benchmark_encode( + name: str, + encode_fn: Callable[[str], list], + text: str, + text_type: str, + warmup: int = 3, + iterations: int = 10, +) -> BenchmarkResult: + """Benchmark a single encode function.""" + num_bytes = len(text.encode("utf-8")) + + # Warmup + for _ in range(warmup): + encode_fn(text) + + # Force garbage collection before timing + gc.collect() + + # Benchmark + times = [] + num_tokens = 0 + for _ in range(iterations): + start = time.perf_counter_ns() + tokens = encode_fn(text) + end = time.perf_counter_ns() + times.append((end - start) / 1e9) # Convert to seconds + num_tokens = len(tokens) + + avg_time = statistics.mean(times) + bytes_per_second = num_bytes / avg_time + tokens_per_second = num_tokens / avg_time + + return BenchmarkResult( + name=name, + text_type=text_type, + bytes_per_second=bytes_per_second, + tokens_per_second=tokens_per_second, + num_tokens=num_tokens, + num_bytes=num_bytes, + latency_ms=avg_time * 1000, + ) + + +def benchmark_batch_encode( + name: str, + encode_batch_fn: Callable[[list[str]], list], + texts: list[str], + text_type: str, + warmup: int = 2, + iterations: int = 5, +) -> BenchmarkResult: + """Benchmark batch encoding.""" + num_bytes = sum(len(t.encode("utf-8")) for t in texts) + + # Warmup + for _ in range(warmup): + encode_batch_fn(texts) + + gc.collect() + + times = [] + total_tokens = 0 + for _ in range(iterations): + start = time.perf_counter_ns() + results = encode_batch_fn(texts) + end = time.perf_counter_ns() + times.append((end - start) / 1e9) + total_tokens = sum(len(r) for r in results) + + avg_time = statistics.mean(times) + bytes_per_second = num_bytes / avg_time + tokens_per_second = total_tokens / avg_time + + return BenchmarkResult( + name=name, + text_type=text_type, + bytes_per_second=bytes_per_second, + tokens_per_second=tokens_per_second, + num_tokens=total_tokens, + num_bytes=num_bytes, + latency_ms=avg_time * 1000, + ) + + +def load_tokenizers(): + """Load all available tokenizers.""" + tokenizers = {} + + # splintr + try: + import splintr + + enc = splintr.Tokenizer.from_pretrained("cl100k_base") + tokenizers["splintr"] = { + "encode": enc.encode, + "encode_batch": enc.encode_batch, + "color": "#2ecc71", # Green + } + print("Loaded: splintr") + except ImportError: + print("splintr not available - run: maturin develop --release") + + # tiktoken + try: + import tiktoken + + tik_enc = tiktoken.get_encoding("cl100k_base") + + def tik_encode_batch(texts): + return tik_enc.encode_ordinary_batch(texts) + + tokenizers["tiktoken"] = { + "encode": tik_enc.encode, + "encode_batch": tik_encode_batch, + "color": "#3498db", # Blue + } + print("Loaded: tiktoken") + except ImportError: + print("tiktoken not available - run: pip install tiktoken") + + # HuggingFace tokenizers + try: + from tokenizers import Tokenizer as HFTokenizer + + # Use GPT-2 tokenizer (similar to cl100k but available) + hf_enc = HFTokenizer.from_pretrained("gpt2") + + def hf_encode(text): + return hf_enc.encode(text).ids + + def hf_encode_batch(texts): + return [e.ids for e in hf_enc.encode_batch(texts)] + + tokenizers["huggingface"] = { + "encode": hf_encode, + "encode_batch": hf_encode_batch, + "color": "#e74c3c", # Red + } + print("Loaded: huggingface tokenizers") + except ImportError: + print("HuggingFace tokenizers not available - run: pip install tokenizers") + + # TokenDagger (if available) + try: + import tokendagger + + # TokenDagger requires loading vocab from tiktoken + import tiktoken + tik_enc = tiktoken.get_encoding("cl100k_base") + enc = tokendagger.Tokenizer( + name="cl100k_base", + pat_str=tik_enc._pat_str, + mergeable_ranks=tik_enc._mergeable_ranks, + special_tokens=tik_enc._special_tokens, + ) + tokenizers["tokendagger"] = { + "encode": enc.encode, + "encode_batch": enc.encode_batch, + "color": "#9b59b6", # Purple + } + print("Loaded: tokendagger") + except (ImportError, Exception) as e: + print(f"tokendagger not available: {e}") + + return tokenizers + + +def run_benchmarks(tokenizers: dict, text_types: list[str] = None): + """Run all benchmarks.""" + if text_types is None: + text_types = list(SAMPLE_TEXTS.keys()) + + results = [] + + print("\n" + "=" * 60) + print("SINGLE TEXT ENCODING BENCHMARKS") + print("=" * 60) + + for text_type in text_types: + text = SAMPLE_TEXTS[text_type] + num_bytes = len(text.encode("utf-8")) + print(f"\n--- {text_type.upper()} ({num_bytes:,} bytes) ---") + + for name, tok in tokenizers.items(): + result = benchmark_encode(name, tok["encode"], text, text_type) + results.append(result) + print( + f"{name:15} {result.bytes_per_second / 1e6:8.2f} MB/s " + f"{result.tokens_per_second / 1e3:8.2f} Ktok/s " + f"{result.latency_ms:8.3f} ms" + ) + + # Batch benchmarks + print("\n" + "=" * 60) + print("BATCH ENCODING BENCHMARKS (100 texts)") + print("=" * 60) + + for text_type in ["medium", "long"]: + texts = [SAMPLE_TEXTS[text_type]] * 100 + total_bytes = sum(len(t.encode("utf-8")) for t in texts) + print(f"\n--- {text_type.upper()} x100 ({total_bytes:,} bytes total) ---") + + for name, tok in tokenizers.items(): + result = benchmark_batch_encode( + f"{name}_batch", tok["encode_batch"], texts, f"{text_type}_batch" + ) + results.append(result) + print( + f"{name:15} {result.bytes_per_second / 1e6:8.2f} MB/s " + f"{result.tokens_per_second / 1e3:8.2f} Ktok/s " + f"{result.latency_ms:8.3f} ms" + ) + + return results + + +def generate_chart(results: list[BenchmarkResult], tokenizers: dict, output_path: str): + """Generate comparison bar chart.""" + try: + import matplotlib.pyplot as plt + import numpy as np + except ImportError: + print("matplotlib/numpy not available - run: pip install matplotlib numpy") + return + + # Filter for single-text benchmarks only + single_results = [r for r in results if "_batch" not in r.text_type] + + # Get unique tokenizers and text types + names = list(tokenizers.keys()) + text_types = list(dict.fromkeys(r.text_type for r in single_results)) + + # Create figure with two subplots + fig, axes = plt.subplots(1, 2, figsize=(14, 6)) + + # Chart 1: Throughput by text type + ax1 = axes[0] + x = np.arange(len(text_types)) + width = 0.8 / len(names) + + for i, name in enumerate(names): + throughputs = [] + for text_type in text_types: + for r in single_results: + if r.name == name and r.text_type == text_type: + throughputs.append(r.bytes_per_second / 1e6) + break + bars = ax1.bar( + x + i * width - width * len(names) / 2 + width / 2, + throughputs, + width, + label=name, + color=tokenizers[name]["color"], + ) + + ax1.set_xlabel("Text Type", fontsize=12) + ax1.set_ylabel("Throughput (MB/s)", fontsize=12) + ax1.set_title("Tokenizer Throughput Comparison", fontsize=14, fontweight="bold") + ax1.set_xticks(x) + ax1.set_xticklabels([t.capitalize() for t in text_types]) + ax1.legend() + ax1.grid(axis="y", alpha=0.3) + + # Chart 2: Batch encoding comparison + batch_results = [r for r in results if "_batch" in r.text_type] + if batch_results: + ax2 = axes[1] + batch_types = list(dict.fromkeys(r.text_type for r in batch_results)) + x2 = np.arange(len(batch_types)) + + for i, name in enumerate(names): + throughputs = [] + for text_type in batch_types: + for r in batch_results: + if r.name == f"{name}_batch" and r.text_type == text_type: + throughputs.append(r.bytes_per_second / 1e6) + break + else: + throughputs.append(0) + if any(t > 0 for t in throughputs): + ax2.bar( + x2 + i * width - width * len(names) / 2 + width / 2, + throughputs, + width, + label=name, + color=tokenizers[name]["color"], + ) + + ax2.set_xlabel("Batch Type", fontsize=12) + ax2.set_ylabel("Throughput (MB/s)", fontsize=12) + ax2.set_title( + "Batch Encoding (100 texts)", fontsize=14, fontweight="bold" + ) + ax2.set_xticks(x2) + ax2.set_xticklabels([t.replace("_batch", "").capitalize() for t in batch_types]) + ax2.legend() + ax2.grid(axis="y", alpha=0.3) + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight") + print(f"\nChart saved to: {output_path}") + + # Also save as SVG for better quality + svg_path = output_path.replace(".png", ".svg") + plt.savefig(svg_path, format="svg", bbox_inches="tight") + print(f"SVG saved to: {svg_path}") + + plt.close() + + +def generate_speedup_chart(results: list[BenchmarkResult], tokenizers: dict, output_path: str): + """Generate speedup comparison chart (relative to tiktoken).""" + try: + import matplotlib.pyplot as plt + import numpy as np + except ImportError: + return + + if "tiktoken" not in tokenizers: + print("tiktoken not available for speedup comparison") + return + + # Filter for single-text benchmarks + single_results = [r for r in results if "_batch" not in r.text_type] + text_types = list(dict.fromkeys(r.text_type for r in single_results)) + names = [n for n in tokenizers.keys() if n != "tiktoken"] + + # Get tiktoken baseline + tiktoken_throughput = {} + for r in single_results: + if r.name == "tiktoken": + tiktoken_throughput[r.text_type] = r.bytes_per_second + + fig, ax = plt.subplots(figsize=(10, 6)) + + x = np.arange(len(text_types)) + width = 0.8 / len(names) + + for i, name in enumerate(names): + speedups = [] + for text_type in text_types: + for r in single_results: + if r.name == name and r.text_type == text_type: + if text_type in tiktoken_throughput: + speedup = r.bytes_per_second / tiktoken_throughput[text_type] + else: + speedup = 1.0 + speedups.append(speedup) + break + ax.bar( + x + i * width - width * len(names) / 2 + width / 2, + speedups, + width, + label=name, + color=tokenizers[name]["color"], + ) + + # Add baseline line at 1.0 + ax.axhline(y=1.0, color="gray", linestyle="--", linewidth=1, label="tiktoken (baseline)") + + ax.set_xlabel("Text Type", fontsize=12) + ax.set_ylabel("Speedup vs tiktoken", fontsize=12) + ax.set_title("Tokenizer Speedup Relative to tiktoken", fontsize=14, fontweight="bold") + ax.set_xticks(x) + ax.set_xticklabels([t.capitalize() for t in text_types]) + ax.legend() + ax.grid(axis="y", alpha=0.3) + + plt.tight_layout() + plt.savefig(output_path, dpi=150, bbox_inches="tight") + print(f"Speedup chart saved to: {output_path}") + plt.close() + + +def save_results_json(results: list[BenchmarkResult], output_path: str): + """Save benchmark results as JSON.""" + data = [ + { + "name": r.name, + "text_type": r.text_type, + "bytes_per_second": r.bytes_per_second, + "tokens_per_second": r.tokens_per_second, + "num_tokens": r.num_tokens, + "num_bytes": r.num_bytes, + "latency_ms": r.latency_ms, + } + for r in results + ] + with open(output_path, "w") as f: + json.dump(data, f, indent=2) + print(f"Results saved to: {output_path}") + + +def main(): + print("=" * 60) + print("TOKENIZER BENCHMARK COMPARISON") + print("splintr vs tiktoken vs HuggingFace vs TokenDagger") + print("=" * 60) + + # Create output directory + output_dir = Path(__file__).parent / "results" + output_dir.mkdir(exist_ok=True) + + # Load tokenizers + tokenizers = load_tokenizers() + + if len(tokenizers) < 2: + print("\nWarning: Less than 2 tokenizers available for comparison") + print("Install missing packages:") + print(" pip install tiktoken tokenizers matplotlib numpy") + print(" pip install tokendagger # optional") + if "splintr" not in tokenizers: + print(" maturin develop --release # for splintr") + + if not tokenizers: + print("No tokenizers available!") + return + + # Run benchmarks + results = run_benchmarks(tokenizers) + + # Generate outputs + print("\n" + "=" * 60) + print("GENERATING OUTPUTS") + print("=" * 60) + + generate_chart(results, tokenizers, str(output_dir / "benchmark_comparison.png")) + generate_speedup_chart(results, tokenizers, str(output_dir / "benchmark_speedup.png")) + save_results_json(results, str(output_dir / "benchmark_results.json")) + + print("\nDone!") + + +if __name__ == "__main__": + main() diff --git a/images/benchmark_batch.png b/images/benchmark_batch.png new file mode 100644 index 0000000000000000000000000000000000000000..eaba341b82f523ef9b6db223350bbbaaf8501224 GIT binary patch literal 62334 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 UAtX&;M1& literal 0 HcmV?d00001 diff --git a/images/benchmark_batch_speedup.png b/images/benchmark_batch_speedup.png new file mode 100644 index 0000000000000000000000000000000000000000..e6a66d092b340784c20b5bb81299f61c685bcb1b GIT binary patch literal 51045 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�U+wf6DO9T^nadWch58qc!P~Md^D5UIzM;G4d1_iE6153J!DAvzvmTr zu847NXYpQhbnSB^y^+4HfPapam21`+$&FDcY^QQGLYM=LpKy0`=}j`VZD{LtA@`)= zjl+}Nz7GldgTSQ)6hr%XLcZN&sIE30Q3$_p?$4TD2&oePtNsH|ga;z6kv+vPtM?~jUVL{E#dNy+DL1y$(A%jgI|$LYIwa((b+0XfyAc(< z8*UvaVK>heM<=A!Jll`z!x*S%1F}l-W;}7km9MjrIDV z&;y~lsi~I&PJ#V;MdjeN!+=t+qZ9bzR;0;gFaU&6YQRJl?FukV_u^`FE~32EU86{ z7GLTgd05(zurB!>3M6&G@8S+F`Kt4FRo=wOliMgF!JBa8PSj`vgF~yj_H6tCwe5BV zX&ydnKDO!3CY6`(8==t;KoyWYU+8)F__Ri)58!aYx*0-kdOyf`Z z`#-VGP!=@)J@&Hnk)e0duVhLbjpCF;Wl0|CRsCjOcrl=gUt?pojU;=?7A3TOP~S98 z4aFZqHAUe_f9m9?&;uoK{n~bEz?H;i1elnP&tCFikFMl@PjIOWta5UMoe$9!do3^|7chAC^ zT|W>S47+z%Kap0^2K;;ndyex7$COY{UyC%1QuydFCR+DcnpCLac-&s}vgoar$6g3{ z+nsAS2uep(F3@o^g%tc=eE`1|>E4Dg)hYI+%+I35~5{BF}x!qn&KH{#uoPc6R$V?;v@>Cn@oM-Ml4AkY=E$(vGN#KArXjrN7(^(JLUpllhx8tFYxByAm^yS`DOm;tv=x(X!_1zoVm&<&irDXq?95ZKW^Z8~!Tp8tI`Wt!8kvq@GC? zKPDO(%%O!_2cEYCj^_^Da37JYiyWAI*rY0@>Ar?;`Mc}e;gQcdTPGlgj96E@P~shw z*N-+a&6OdZk2}!bLtF*HyLM?cw$$+4_`?q;i6$#!ZlY{b>*MmcrIZvFi1SUsIdjm(PxW@8%iN74~8i507k_ zx`pdA54_vc+;iCeS-Il8LOa%6kuH87Sl6X(rPAnvrR!Mjzz^qZ^-fpfmjn-bX&a6U z8GW;wLN*uSlV!T@QvjaY$5EpO4bp5fBBPx3j-3O>s<^RzsDk`g=aK!g3)PfBBtf<+ zfANjcBTjnGHLa*WL1okw=C6?wjh!*$rzc~m3R@^*fHg9@tQy73lzwjFfrAo+)OQCC z4|sJdBmPC5?E=(962{@bnt&e&v5N~%3p>q2^-36fG^S_*#82$l>T7_iso%{4$wM0So2|j2QNqVGH4d;n#V|vd$C*t2}?dKE=*; z;I;`yzfIlu1E)nNvQD9*l%Ml1c-ZHV)2Pwtf(yWBY~U}l8MpDUA|IgI@ozi5%MXm<^Rp7@8V24u!H z3^!X)widL9jlHYtiR{&Wo~fXXlS}C_qMAQqLuTYV7&qVSwSR}8N&ob6%r?atWJyOd zrGS?`-rCxFlZeJf*5%S;jKWg-1VHQwl>%ZX&8&l1{8R>Sq++w63hJmBn45p>mOs%C z&7VH0yaYg&sYvLt7R&=_4Le&0AK56buXz97S5Q195HV(U%&nb+M)^M1B>We*$(lQ3 zhO+glP4*nZJs&B?|6b%+m`X#IhS>Z>n~iYDa^}pP&XG+{em$z6OS7h1sP0#S0;RKo z+a}E3j{Cd~qAewmdSxC=h7yQjKm+T=fQO#6@KOqhV+aN66PIT7r}QJmQPKhL)fBRy z@KIY&b|);bd9HHG^~xHS15F_33$)W^l-pzh{)@CJEwdIKKsO-HJr{5}pHZei)T{OKH z<4&>gcPq!Fa4d@v;^ge(0UR?T6Ei<}k2eGsiHu2FiE4K2*t>VV;zrn!>{PKlZf`^+ zK^6lSd67EBJG<)TH@84PT9QomuSy~lkYjaRD^62#H2b6r5yfedYb$jlRzB0E@6Khn zL9|UYAdRtHc*zSjEHpAwMdPLqj_>F0Rfzxq literal 0 HcmV?d00001 diff --git a/images/benchmark_single_latency.png b/images/benchmark_single_latency.png new file mode 100644 index 0000000000000000000000000000000000000000..b70a403fa0ec10d60a5ed18333c176752680f879 GIT binary patch literal 90145 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 literal 0 HcmV?d00001 diff --git a/images/benchmark_speedup.png b/images/benchmark_speedup.png new file mode 100644 index 0000000000000000000000000000000000000000..1dec6abe16ce187909b5fd904f717c4c7053128c GIT binary patch literal 55710 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
  • R2Yp1-t5J8)~4 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

    FA(a^W5NLy;RJ)Vur}wIxet(~prkN=w1~ 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�^Anzo}6B1Cti{Oulnen1M4=|ecd3Nj~qOl}I@XCF^1B~gUFulU$L{A>|x{e@HNJ_8T%71TyFZ|u!2%&NBd$j9MZr$bLq7l3ahZvhVT^Y zTUxfOE5&T@XYbtUKju#7u7yYDs$%jVz&fbI;F2Bx_d6|^e^V+tf)!^QrtpyPRWgmW zwU?;NX;AlrJ_hEC^M^#60W7|2yGH6Q31oKW<4?p+Nko%-}qCB{`lYj;pq$iUti5C zhAnQ8aeX<{i?b*)7JhDV<@&hn@)`UC28BymPU*ON$Q+cI_mL;}Q}8B3ckce-qy^sA-VE%2y(~0!jf+F`LwM%>~Y|9KtRC!jp;=9nwh-{E5lS`eeg(@gmowb zkmyHInVVM3kPKTOHBx_)8)BodqF{3|T1ikq7ltM`?@<5dn{Oz#MyVCU@kOlrdu@EY z{kD18^t4IAwNJ8kPTs0f%tEx|4NQ_kFiG5_P>^ykkOoA8OvJfUcWe(~s#94?PH;f@ z!&X2kbUk>M!%#Awe?I&}?of#Z5SIsKAiG?`lByrktqUTmtE*$Fpzhgm%@763TXsU; zcFoHBblO&qhUMvSE}%;D>!_zg>Y?EL;@Ft&qfUp3f>-;QaWlup zTyQl-wB5GNR1~3^aEJPY&ujxA(a?AE31n@zkGOrk1)a_H+utOUF;tNDa(6BlAj|JG zKsXi-rHfO7K8*w3kkw%1Dby_Cr=Pe23lFpk{*SZ7biM>Ba{(Acsi&~r%9s!9pcr;Q zPI)@@_HkDR_nZr+Q%8V7BC6e9TJ0rn75p$RZ+ORR_=AHQqVTNw>GooErKr4Ijy{o; zHl+x6O6;}WUJolOYSW$vu3S0&euAF;{#-+S{i2u>gJpb)9pk^m{w1V47bbVZVh{uT zxExnQC6G>IDq}gc|Cg>Gp(QhEVQ2ekW=8OBQ}WDP(r>I~v-HKHC4B;Sgk51d7gDH5 z$x7svLnN!Oz<6hZ?;CH~t%!HB1qLUXc)UoVGmsIlKco6j>KX~y0vzpp{|@_yAd37l zXyOpvC3Urstv?l-+SF^u&oWh&_Ohr9SzcYvTof^XBg_Oq zSg*3J$7a^=TQ6dcnDi~+hRE&N3 z4K+8-ggcaDZImL4xGfKJ@&Qa*lL7uBhk$NY;qFYy%xt1a+9}t;6@^urTIzlBo=)sx z2MqtCNM37k-1m(Mby$V%m~FsvzExR7Q*tMOq-JiiCxQu86j*|~=7L92IU^%*bVxH= zTFHnLgF#K8@zoWH$fjRN=h?YNWWA&y3b^2%O-tURss7~qx;XH|{*61xtb|^$k5a@b z8?rlR7YfmNm8={^+O}}xxje*HP5wDRNZAPP%#@%)AQg<#o4|cDhFgohjdnE@;x_UH zT)iu-eBXsnS|cu7DQCn^B&|j4h1%~vl9!}YrEuvJ2ym9C0X{^wQ&>bSOFejizqsT3 zSF;F59iJ#hDvFr!rCT&X>x<^1@6o_6>$ZLgs&F0;>^ zS2EH`c`g5>FCM2a+ohy_!MN~8B9(;o#tPoh=PfEaW91W7htelxw3w^&YuZnXzXBGq z9ybx0v3F{^9i-acI#T)5w+`CoL}R50x5&JQ&h0C>KzlN8pbVgp>l;9CWV(hNc-9TQ zv^^8*D#{j?@2bNU=mmIM)iDQ(o&Ar4FP$>`mhfFm)IQtZrEqi}2jEtWN4}Vi+F~P$ zsu2@A4fJ~avHTt?~->*GifA9H!RUY9xXf9dwsT71Yj5rdwKd>wOtgMh=G^Bf^ zeFDoba^!m7yemaq=*gJ1aYBAU6GC z%v9%vBx7R~J1>pYB8FC^o=Q@wqQ!|X(toj*NcSFk%&-}zL#Y3D+_Up6hO38XPs03d z+tt6$uq5tCHiTaw8}sL9^$$kQ);<0HRa?Q`0xf#^(<6r)tUUGPk!k^t2m)@8z Qzd!Wb5w`mVO Date: Wed, 26 Nov 2025 15:13:53 +0800 Subject: [PATCH 3/4] docs: add comprehensive performance benchmarks and design rationale Update README with extensive benchmark data and explanation of sequential vs parallel encoding design decision. Include performance visualizations and expand API documentation. Changes: - Add Performance section with benchmark charts and data tables - Add "Design Decision: Sequential by Default" section explaining why encode() uses sequential processing instead of Rayon parallelization - Expand Python and Rust API documentation to include encode_rayon() - Rename "Supported Models" to "Supported Vocabularies" for clarity - Add Citation section with BibTeX format - Update benchmark result tables with latest data Performance highlights: - 3-4x faster than tiktoken for single-text encoding - 10-12x faster than tiktoken for batch encoding - Sequential encoding optimal for texts <1MB (typical use case) - Rayon parallelization only beneficial for texts >1MB The documentation now clearly explains when to use encode(), encode_rayon(), and encode_batch() for different workloads. --- README.md | 96 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 71 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index d963504..6c56362 100644 --- a/README.md +++ b/README.md @@ -104,9 +104,10 @@ tokenizer = Tokenizer( **Encoding:** -- `encode(text: str) -> list[int]`: Encode text to token IDs, treating special tokens as regular text +- `encode(text: str) -> list[int]`: Encode text to token IDs (sequential, optimal for most use cases) - `encode_with_special(text: str) -> list[int]`: Encode text, recognizing special tokens in the input -- `encode_batch(texts: list[str]) -> list[list[int]]`: Encode multiple texts in parallel +- `encode_batch(texts: list[str]) -> list[list[int]]`: Encode multiple texts in parallel (uses Rayon) +- `encode_rayon(text: str) -> list[int]`: Encode using Rayon parallelization (only beneficial for texts >1MB) **Decoding:** @@ -159,7 +160,22 @@ BPE tokens don't always align with UTF-8 character boundaries. For example, a mu ### Rust API -The Rust API provides similar functionality with strongly-typed interfaces. See the [API documentation](https://docs.rs/splintr) for detailed information. +The Rust API provides similar functionality with strongly-typed interfaces: + +**Encoding:** + +- `encode(&self, text: &str) -> Vec`: Sequential encoding (optimal for texts <1MB) +- `encode_with_special(&self, text: &str) -> Vec`: Encode with special token recognition +- `encode_batch(&self, texts: &[String]) -> Vec>`: Parallel encoding across texts +- `encode_rayon(&self, text: &str) -> Vec`: Parallel encoding within text (for texts >1MB) + +**Decoding:** + +- `decode(&self, tokens: &[u32]) -> Result`: Decode to UTF-8 string +- `decode_bytes(&self, tokens: &[u32]) -> Vec`: Decode to raw bytes +- `decode_lossy(&self, tokens: &[u32]) -> String`: Decode with replacement for invalid UTF-8 + +See the [API documentation](https://docs.rs/splintr) for detailed information. ## Streaming Decoder @@ -200,36 +216,51 @@ This approach ensures that: ## Performance -Benchmarks performed on Linux (6.16.8-arch3-1) with 24 CPU cores, comparing splintr to tiktoken (the reference Python implementation). +Benchmarks performed on Linux (6.16.8-arch3-1) with 24 CPU cores, comparing splintr against tiktoken (reference Python implementation), Hugging Face tokenizers, and TokenDagger. ### Single Text Encoding -Performance on various text types: +Splintr achieves **3-4x faster** single-text encoding compared to tiktoken across various text sizes: + +![Single Text Encoding Comparison](images/benchmark_single.png) + +**Latency by text type:** -| Content Type | Size | splintr (ms) | tiktoken (ms) | Speedup | -| ---------------- | ------------- | ------------ | ------------- | -------- | -| Long English | 450,000 chars | 7.94 | 19.91 | **2.5x** | -| Python Code | 59,200 chars | 1.67 | 5.90 | **3.5x** | -| JSON | 29,000 chars | 1.20 | 2.76 | **2.3x** | -| Numbers | 55,000 chars | 2.27 | 6.09 | **2.7x** | -| Whitespace-heavy | 50,000 chars | 1.36 | 4.91 | **3.6x** | -| Chinese | 11,500 chars | 1.09 | 1.45 | **1.3x** | +![Latency Comparison](images/benchmark_single_latency.png) + +Splintr consistently maintains lower latency across different content types (Python code, JSON, English prose, Chinese text), making it ideal for interactive applications and real-time processing. ### Batch Encoding -Batch operations show significant speedup through parallelism: +For batch operations, splintr achieves **10-12x speedup** over tiktoken by parallelizing across texts: + +![Batch Encoding Throughput](images/benchmark_batch.png) -| Configuration | splintr parallel (ms) | tiktoken (ms) | Speedup vs tiktoken | -| ------------------ | --------------------- | ------------- | ------------------- | -| 10 × 1,000 chars | 0.25 | 0.48 | **1.9x** | -| 100 × 1,000 chars | 1.11 | 4.66 | **4.2x** | -| 1,000 × 100 chars | 1.42 | 6.95 | **4.9x** | -| 100 × 10,000 chars | 8.24 | 45.72 | **5.5x** | +| Configuration | Splintr | Tiktoken | Speedup | +| ---------------- | ------------ | ---------- | -------- | +| 1,000 × 100 chars | 111 MB/s | 9 MB/s | **12.3x** | +| 100 × 1,000 chars | 89 MB/s | 8 MB/s | **11.1x** | +| 10 × 10,000 chars | 72 MB/s | 7 MB/s | **10.3x** | -**Parallel speedup within splintr:** +![Batch Speedup vs Tiktoken](images/benchmark_batch_speedup.png) -- 100 × 1,000 chars: 8.6x faster (parallel vs sequential) -- 1,000 × 100 chars: 16.8x faster (parallel vs sequential) +The batch encoding speedup scales effectively across different batch configurations, with higher speedups on larger batches where parallelization overhead is amortized. + +### Design Decision: Sequential by Default + +Splintr uses **sequential encoding for single texts** and **parallel encoding across batches**. This design choice is based on empirical benchmarking: + +![Sequential vs Rayon Internal Parallelization](images/benchmark_splintr.png) + +**Key findings:** + +- **Sequential is faster** for texts up to ~1MB (typical LLM use case) +- Rayon's parallelization overhead only pays off at ~1MB+ text sizes +- Most real-world inputs (prompts, documents, code) are well under 1MB +- `encode()` uses sequential processing for optimal single-text performance +- `encode_batch()` parallelizes across multiple texts for maximum throughput + +This architecture ensures splintr is optimized for the most common tokenization patterns in LLM applications while still providing excellent batch performance for data processing pipelines. ### Running Benchmarks @@ -261,13 +292,15 @@ The benchmark suite tests: You can customize the benchmark by modifying `benchmark.py` or adding your own test data in the `data/` directory. -## Supported Models +## Supported Vocabularies -| Model | Use Case | Vocabulary Size | Special Tokens | Import Constant | +| Vocabulary | Used By | Vocabulary Size | Special Tokens | Import Constant | | ------------- | -------------------- | --------------- | -------------- | --------------------- | | `cl100k_base` | GPT-4, GPT-3.5-turbo | ~100,000 | 5 + 54 agent | `CL100K_BASE_PATTERN` | | `o200k_base` | GPT-4o | ~200,000 | 2 + 54 agent | `O200K_BASE_PATTERN` | +More vocabularies will be added in future releases. + **OpenAI standard tokens:** - **cl100k_base**: `<|endoftext|>`, `<|fim_prefix|>`, `<|fim_middle|>`, `<|fim_suffix|>`, `<|endofprompt|>` @@ -356,6 +389,19 @@ The pre-commit hook automatically runs formatting, clippy, and tests before each This project is licensed under the MIT License - see the LICENSE file for details. +## Citation + +If you use Splintr in your research, please cite: + +```bibtex +@software{splintr, + author = {Farhan Syah}, + title = {Splintr: High-Performance BPE Tokenizer}, + year = {2025}, + url = {https://github.com/farhan-syah/splintr} +} +``` + ## Acknowledgments Splintr builds upon concepts from: From 0dfad805b8ccb0b9dbd970dbf7b71e9c3d30b29b Mon Sep 17 00:00:00 2001 From: Farhan Syah Date: Wed, 26 Nov 2025 15:15:17 +0800 Subject: [PATCH 4/4] chore: bump version to 0.3.0 --- .version | 2 +- Cargo.toml | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.version b/.version index 0ea3a94..0d91a54 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.2.0 +0.3.0 diff --git a/Cargo.toml b/Cargo.toml index 851ad9a..66bd894 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "splintr" -version = "0.2.0" +version = "0.3.0" edition = "2021" description = "Fast Rust BPE tokenizer with Python bindings" license = "MIT" diff --git a/pyproject.toml b/pyproject.toml index d52ff08..494538e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "splintr-rs" -version = "0.2.0" +version = "0.3.0" description = "Fast Rust BPE tokenizer with Python bindings" readme = "README.md" license = {text = "MIT"}