mana_tokenizer / benchmark.py
tspersian's picture
improve
be6798e
import tracemalloc
import time
from datetime import datetime
from .mana_tokenizer import ManaTokenizer
tokenizer = ManaTokenizer()
# Example text for tokenization
sample_text = "شرکت آسا پرداز آریسا در سال 96 با استقرار در شهرک علمی و فناوری اصفهان فعالیت رسمی خود را در زمینه سامانه های پردازش سریع (hpc) و رایانش ابری (cloud) آغاز کرد. این شرکت اولین ارائه دهنده تخصصی کاملاً مبتنی بر شتاب دهنده های گرافیکی برای محاسبات پردازش سریع در ایران است. این شرکت توانست در سال 1400 آزمایشگاه پردازشی_گرافیکی خیام را در شهرک علمی تحقیقاتی اصفهان ایجاد و تجهیز کند.این آزمایشگاه مجهز به بیش از 8600 هسته پردازشی و بیش از 800 هزار هسته پردازش گرافیکی کودا می باشد که در اختیار محققان,معماران,مهندسان و … ,برای انجام تمامی تحقیقات و پروژهای علمیشان قرار داده میشود.این آزمایشگاه دارای فضای ذخیره سازی 1.5 پتابایت همچنین فضای رم 15 هزار گیگابایتی میباشد. این آزمایشگاه مجهز به جدید ترین سرورها و پردازنده های گرافیکی روز دنیا می باشد که از تمامی نرم افزار های پیشرفته ی طراحی,معماری,مهندسی,شبیه سازی,حل مسائل پیش بینی مالی,بازی و سرگرمی,پزشکی و درمان پشتیبانی می کند."
# Tokenize a sample text to verify tokenizer function
encoded_sample = tokenizer.encode(sample_text)
tokens2 = encoded_sample.tokens
vocab_size2 = len(tokenizer.get_vocab())
print(f"Mana Vocabulary: {vocab_size2}")
print(f"Mana Algorithm: {tokenizer.__class__.__name__}")
# Print current date and time
current_date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"Current Date and Time: {current_date}")
# Batch benchmark function using batch_encode
def benchmark_tokenizer_batch(tokenizer, texts):
start_time = time.time()
tokenizer.batch_encode(texts) # Use batch encoding here
end_time = time.time()
return end_time - start_time
# Large texts for benchmarking
large_texts = ["سال 96 با استقرار در شهرک علمی و فناوری اصفهان فعالیت رسمی خود را در زمینه سامانه های پردازش سریع (hpc) و رایانش ابری (cloud) آغاز."] * 1000
# Run the batch benchmark
time2 = benchmark_tokenizer_batch(tokenizer, large_texts)
print(f"Mana Batch Encode Time: {time2} seconds")
# Batch memory usage function
def memory_usage_tokenizer_batch(tokenizer, texts):
tracemalloc.start()
tokenizer.batch_encode(texts) # Use batch encoding here
snapshot = tracemalloc.take_snapshot()
tracemalloc.stop()
top_stats = snapshot.statistics('lineno')
return top_stats[0].size / 1024
# Measure memory usage for batch encoding
memory2 = memory_usage_tokenizer_batch(tokenizer, large_texts)
print(f"Mana Batch Encode Memory Usage: {memory2} KB")
# Calculate and print the total character count for large_texts
total_chars_large_texts = sum(len(text) for text in large_texts)
print(f"Total characters in large_texts: {total_chars_large_texts}")