- 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. |
||
|---|---|---|
| src | ||
| tests | ||
| .gitignore | ||
| README.md | ||
| requirements.txt | ||
| run.sh | ||
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 # Документация
Добавление новых тестов
- Создайте новый файл в
src/benchmarks/наследуя отBenchmark - Реализуйте методы
load_test_data()иevaluate() - Добавьте тестовые данные в соответствующую директорию в
tests/ - Обновите список бенчмарков в
src/main.py
Формат тестовых данных
Тестовые данные должны быть в формате JSON:
{
"prompt": "Текст промпта для модели",
"expected": "Ожидаемый ответ"
}
Результаты
После выполнения бенчмарков в директории results/ будут сгенерированы файлы в формате Markdown с таблицами результатов. Каждый бенчмарк будет иметь свой отчет, а также будет создан сводный отчет со статистикой по всем тестам.
Методика расчета Score (Скор)
Основная метрика: F1-score
Каждый тест оценивается по метрике F1-score, которая вычисляется на основе сходства между ответом модели и ожидаемым ответом:
- Токенизация: Ответ модели и ожидаемый ответ разбиваются на отдельные токены (слова)
- Precision (Точность): Доля токенов из ответа модели, которые присутствуют в ожидаемом ответе
- Recall (Полнота): Доля токенов из ожидаемого ответа, которые присутствуют в ответе модели
- F1-score: Гармоническое среднее между точностью и полнотой:
F1 = 2 × (Precision × Recall) / (Precision + Recall) - Диапазон: 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