()
| 537 | |
| 538 | |
| 539 | def main(): |
| 540 | parser = argparse.ArgumentParser(description='Test model perplexity on multiple datasets') |
| 541 | parser.add_argument('--model', '-m', |
| 542 | required=True, |
| 543 | help='Path to GGUF model file') |
| 544 | parser.add_argument('--data-dir', '-d', |
| 545 | default='data', |
| 546 | help='Directory containing dataset folders (default: data)') |
| 547 | parser.add_argument('--threads', '-t', |
| 548 | type=int, |
| 549 | default=16, |
| 550 | help='Number of threads (default: 16)') |
| 551 | parser.add_argument('--ctx-size', '-c', |
| 552 | type=int, |
| 553 | default=512, |
| 554 | help='Context size (default: 512)') |
| 555 | parser.add_argument('--output-dir', '-o', |
| 556 | default='perplexity_results', |
| 557 | help='Output directory for results (default: perplexity_results)') |
| 558 | parser.add_argument('--llama-perplexity', |
| 559 | default='./build/bin/llama-perplexity', |
| 560 | help='Path to llama-perplexity binary (default: ./build/bin/llama-perplexity)') |
| 561 | parser.add_argument('--quick', '-q', |
| 562 | action='store_true', |
| 563 | help='Quick test mode: test all datasets with first 4096 characters and reduced context size (128)') |
| 564 | parser.add_argument('--test-embeddings', '-e', |
| 565 | action='store_true', |
| 566 | help='Test different embedding quantization types (f32, f16, q8_0, q6_k, q5_0, q4_0, q3_k, tq2_0)') |
| 567 | parser.add_argument('--csv-output', |
| 568 | help='Custom path for CSV output file (e.g., results/my_ppl_results.csv)') |
| 569 | parser.add_argument('--quantize-bin', |
| 570 | default='./build/bin/llama-quantize', |
| 571 | help='Path to llama-quantize binary (default: ./build/bin/llama-quantize)') |
| 572 | |
| 573 | args = parser.parse_args() |
| 574 | |
| 575 | try: |
| 576 | tester = PerplexityTester( |
| 577 | model_path=args.model, |
| 578 | llama_perplexity_bin=args.llama_perplexity, |
| 579 | data_dir=args.data_dir, |
| 580 | output_dir=args.output_dir, |
| 581 | quick_mode=args.quick, |
| 582 | quantize_bin=args.quantize_bin, |
| 583 | test_embeddings=args.test_embeddings, |
| 584 | csv_output=args.csv_output |
| 585 | ) |
| 586 | |
| 587 | tester.run_all_tests( |
| 588 | threads=args.threads, |
| 589 | ctx_size=args.ctx_size |
| 590 | ) |
| 591 | |
| 592 | except FileNotFoundError as e: |
| 593 | print(f"❌ Error: {e}") |
| 594 | return 1 |
| 595 | except KeyboardInterrupt: |
| 596 | print("\n\n⚠️ Test interrupted by user") |
no test coverage detected