Class: Gigatoken::CLI::Bench
- Inherits:
-
Dry::CLI::Command
- Object
- Dry::CLI::Command
- Gigatoken::CLI::Bench
- Defined in:
- lib/gigatoken/cli/bench.rb
Overview
gigatoken bench TOKENIZER FILES... — measure encode throughput in
MB/s and Mtok/s, mirroring upstream's Python CLI gigatoken bench
output shape.
Instance Method Summary collapse
Instance Method Details
#call(tokenizer:, files:, doc_separator: nil, limit_bytes: "none", parallel: true, packed: false, pretokenizer: nil) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/gigatoken/cli/bench.rb', line 22 def call(tokenizer:, files:, doc_separator: nil, limit_bytes: "none", parallel: true, packed: false, pretokenizer: nil, **) limit = Support.parse_size(limit_bytes) out.puts "#{label("cpu")}: #{Support.cpu_info}" gt_tokenizer = Support.load_tokenizer(tokenizer, pretokenizer: pretokenizer) start = Process.clock_gettime(Process::CLOCK_MONOTONIC) if packed encoded = gt_tokenizer.encode_files(Support.text_file_source(files, doc_separator), parallel: parallel, packed: true) n_bytes = files.sum { |file| File.size(file) } n_tokens = encoded.token_count elsif parallel docs = Support.subset_docs(Support.split_docs(files, doc_separator), limit) encoded = gt_tokenizer.encode_batch(docs) n_bytes = docs.sum(&:bytesize) n_tokens = encoded.sum(&:length) else encoded = gt_tokenizer.encode_files(Support.text_file_source(files, doc_separator), parallel: false) n_bytes = files.sum { |file| File.size(file) } n_tokens = encoded.sum(&:length) end seconds = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start out.puts report("gigatoken", seconds, n_bytes, n_tokens) rescue Gigatoken::Error => e err.puts "error: #{e.}" exit(1) end |