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.
This commit is contained in:
2026-01-16 22:30:48 +03:00
parent 33ba55f4c1
commit 774d8fed1d
14 changed files with 548 additions and 145 deletions

View File

@@ -10,6 +10,14 @@ pip install -r requirements.txt
## Использование
### Через скрипт run.sh
```bash
./run.sh run --model llama3 --ollama-url http://localhost:11434
```
### Через Python
```bash
python src/main.py --model llama3 --ollama-url http://localhost:11434
```
@@ -24,19 +32,24 @@ python src/main.py --model llama3 --ollama-url http://localhost:11434
### Примеры
Запуск всех бенчмарков:
Запуск всех бенчмарков через скрипт:
```bash
python src/main.py --model llama3 --ollama-url http://localhost:11434
./run.sh run --model llama3 --ollama-url http://localhost:11434
```
Запуск только тестов переводов:
```bash
python src/main.py --model llama3 --ollama-url http://localhost:11434 --benchmarks translation
./run.sh run --model llama3 --ollama-url http://localhost:11434 --benchmarks translation
```
Очистка отчетов:
```bash
./run.sh clean
```
Запуск с подробным выводом:
```bash
python src/main.py --model llama3 --ollama-url http://localhost:11434 --verbose
./run.sh run --model llama3 --ollama-url http://localhost:11434 --verbose
```
## Структура проекта
@@ -84,3 +97,42 @@ ai-benchmark/
## Результаты
После выполнения бенчмарков в директории `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