Эксперименты и тестирование LLM, VLM и прочих тулов
Go to file
second_constantine 774d8fed1d feat: add run.sh script and update documentation
- Added run.sh script with init, upd, run, and clean commands
- Updated README.md to document run.sh usage and examples
- Added documentation on Score calculation methodology
- Updated base.py to include score calculation logic
```

This commit message follows the conventional commit format with a short title and a detailed description of the changes made. It explains what was changed and why, making it clear and informative.
2026-01-16 22:30:48 +03:00
src feat: add run.sh script and update documentation 2026-01-16 22:30:48 +03:00
tests feat: add run.sh script and update documentation 2026-01-16 22:30:48 +03:00
.gitignore feat: vibe coding rulezz 2026-01-16 22:30:30 +03:00
README.md feat: add run.sh script and update documentation 2026-01-16 22:30:48 +03:00
requirements.txt feat: vibe code done 2026-01-16 19:58:29 +03:00
run.sh feat: add run.sh script and update documentation 2026-01-16 22:30:48 +03:00

ai_benchmark

Эксперименты и тестирование LLM, VLM и прочих тулов

Установка

pip install -r requirements.txt

Использование

Через скрипт run.sh

./run.sh run --model llama3 --ollama-url http://localhost:11434

Через Python

python src/main.py --model llama3 --ollama-url http://localhost:11434

Аргументы

  • --model: Название модели для тестирования (обязательный)
  • --ollama-url: URL подключения к Ollama серверу (обязательный)
  • --benchmarks: Список бенчмарков для выполнения (translation, summarization, codegen). По умолчанию все.
  • --output: Директория для сохранения результатов. По умолчанию: results
  • --verbose: Подробный режим вывода

Примеры

Запуск всех бенчмарков через скрипт:

./run.sh run --model llama3 --ollama-url http://localhost:11434

Запуск только тестов переводов:

./run.sh run --model llama3 --ollama-url http://localhost:11434 --benchmarks translation

Очистка отчетов:

./run.sh clean

Запуск с подробным выводом:

./run.sh run --model llama3 --ollama-url http://localhost:11434 --verbose

Структура проекта

ai-benchmark/
├── src/
│   ├── benchmarks/          # Модули с тестовыми наборами
│   │   ├── translation.py   # Тесты переводов
│   │   ├── summarization.py # Тесты пересказов
│   │   ├── codegen.py       # Тесты генерации кода
│   │   └── base.py          # Базовый класс для тестов
│   ├── models/              # Модули для работы с моделями
│   │   └── ollama_client.py # Клиент для Ollama
│   ├── utils/               # Утилиты
│   │   └── report.py        # Генерация отчетов
│   └── main.py              # Основной скрипт запуска
├── tests/                   # Тестовые данные
│   ├── translation/         # Данные для тестов переводов
│   ├── summarization/       # Данные для тестов пересказов
│   └── codegen/             # Данные для тестов генерации кода
├── results/                 # Результаты выполнения
├── requirements.txt         # Зависимости проекта
└── README.md                # Документация

Добавление новых тестов

  1. Создайте новый файл в src/benchmarks/ наследуя от Benchmark
  2. Реализуйте методы load_test_data() и evaluate()
  3. Добавьте тестовые данные в соответствующую директорию в tests/
  4. Обновите список бенчмарков в src/main.py

Формат тестовых данных

Тестовые данные должны быть в формате JSON:

{
  "prompt": "Текст промпта для модели",
  "expected": "Ожидаемый ответ"
}

Результаты

После выполнения бенчмарков в директории results/ будут сгенерированы файлы в формате Markdown с таблицами результатов. Каждый бенчмарк будет иметь свой отчет, а также будет создан сводный отчет со статистикой по всем тестам.

Методика расчета Score (Скор)

Основная метрика: F1-score

Каждый тест оценивается по метрике F1-score, которая вычисляется на основе сходства между ответом модели и ожидаемым ответом:

  1. Токенизация: Ответ модели и ожидаемый ответ разбиваются на отдельные токены (слова)
  2. Precision (Точность): Доля токенов из ответа модели, которые присутствуют в ожидаемом ответе
  3. Recall (Полнота): Доля токенов из ожидаемого ответа, которые присутствуют в ответе модели
  4. F1-score: Гармоническое среднее между точностью и полнотой:
    F1 = 2 × (Precision × Recall) / (Precision + Recall)
    
  5. Диапазон: 0.0 - 1.0, где 1.0 означает идеальное совпадение

Альтернативные метрики

Для более детального анализа можно использовать следующие метрики:

  • Levenshtein Distance / Edit Distance: Количество редактирований (вставок, удалений, замен) для преобразования ответа модели в ожидаемый ответ. Полезно для оценки структурных различий.
  • BLEU Score: Популярная метрика для оценки качества машинного перевода, основанная на n-граммах. Подходит для задач переводов.
  • ROUGE Score: Метрика для оценки качества суммаризации, основанная на перекрытии n-грамм, слов и последовательностей. Подходит для задач пересказов.
  • Code Similarity Metrics: Для генерации кода можно использовать процент совпадения структуры кода (функции, классы, синтаксис), а также метрики типа AST (Abstract Syntax Tree) similarity.

Средний Score

В отчетах вычисляется средний Score по всем успешно выполненным тестам в каждом бенчмарке. Этот показатель позволяет сравнить общую производительность модели по разным задачам.

Пример расчета F1-score

Если модель ответила "hello world" на промпт, а ожидаемый ответ "hello there", расчет будет следующим:

  • Токены модели: {"hello", "world"}
  • Токены ожидаемого: {"hello", "there"}
  • Пересечение: {"hello"}
  • Precision = 1/2 = 0.5
  • Recall = 1/2 = 0.5
  • F1-score = 2 × (0.5 × 0.5) / (0.5 + 0.5) = 0.5