From 082fcf8f34cd7019ba3bc6b5d52e94a2e4dc3013 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Sat, 4 Apr 2026 16:49:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B5=D0=B7=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- presentation/.gitignore | 5 + presentation/presentation.tex | 273 ++++++++++++++++++++++++++++++++++ report/report.tex | 19 +++ 3 files changed, 297 insertions(+) create mode 100644 presentation/.gitignore create mode 100644 presentation/presentation.tex diff --git a/presentation/.gitignore b/presentation/.gitignore new file mode 100644 index 0000000..0a25c20 --- /dev/null +++ b/presentation/.gitignore @@ -0,0 +1,5 @@ +* + +!**/ +!.gitignore +!*.tex diff --git a/presentation/presentation.tex b/presentation/presentation.tex new file mode 100644 index 0000000..04249f2 --- /dev/null +++ b/presentation/presentation.tex @@ -0,0 +1,273 @@ +\documentclass[aspectratio=169]{beamer} + +\usepackage[T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[russian]{babel} +\usepackage{booktabs} +\usepackage{graphicx} +\usepackage{amsmath} + +\usetheme{Madrid} +\usecolortheme{default} + +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{footline}[frame number] + +\title{Подбор оптимальной конфигурации модульной системы автоматического протоколирования совещаний с помощью генетических алгоритмов} +\author{Тищенко А.\,А.} +\institute{СПбПУ, ИКНиКБ, ВШ ТИИИ\\гр. 5130201/20101\\[6pt]Руководитель: проф., д.т.н. Большаков А.\,А.} +\date{2026} + +\begin{document} + +% ===== 1. Title ===== +\begin{frame} +\titlepage +\end{frame} + +% ===== 2. Introduction ===== +\begin{frame}{Автоматическое протоколирование совещаний} +\begin{itemize} + \item Протоколирование совещаний --- фиксация решений и договорённостей + \item Автоматизация стала возможна благодаря развитию моделей ASR, диаризации и LLM +\end{itemize} + +\vspace{0.4cm} +\textbf{Три этапа пайплайна:} +\begin{enumerate} + \item \textbf{Транскрибация} --- преобразование аудио в текст + \item \textbf{Диаризация} --- определение говорящих + \item Суммаризация --- формирование протокола (не рассматривается) +\end{enumerate} + +\vspace{0.4cm} +В данной работе рассматриваются \textbf{этапы~1 и~2}: оптимизация выбора моделей и их параметров. +\end{frame} + +% ===== 3. Problem statement ===== +\begin{frame}{Постановка задачи} +\textbf{Цель:} найти конфигурацию $\mathbf{x}^*$, минимизирующую: +\[ +f(\mathbf{x}) = 0{,}4 \cdot \text{WER}(\mathbf{x}) + 0{,}4 \cdot \text{DER}(\mathbf{x}) + 0{,}2 \cdot T(\mathbf{x}) +\] + +\begin{itemize} + \item WER --- ошибка транскрибации (\%) + \item DER --- ошибка диаризации (\%) + \item $T$ --- нормализованное время инференса +\end{itemize} + +\vspace{0.3cm} +\textbf{Аппаратные ограничения:} +\begin{itemize} + \item GPU Tesla T4 (16~ГБ VRAM), 16~ГБ ОЗУ + \item Вычислительный бюджет: $\sim$10 часов +\end{itemize} +\end{frame} + +% ===== 4. Configuration space ===== +\begin{frame}{Пространство конфигураций} +\small +\begin{table} +\centering +\begin{tabular}{l l l} +\toprule +\textbf{Параметр} & \textbf{Тип} & \textbf{Значения} \\ +\midrule +Модель транскрибации & категориальный & 5 моделей \\ +beam\_size & дискретный & \{1, 3, 5, 7, 10\} \\ +vad\_threshold & дискретный & \{0.3, 0.4, 0.5, 0.6, 0.7\} \\ +Модель диаризации & категориальный & 3 модели \\ +min\_speech\_duration & дискретный & \{0.25, 0.5, 0.75, 1.0, 1.5\}~с \\ +clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\ +\bottomrule +\end{tabular} +\end{table} + +\vspace{0.2cm} +\begin{columns} +\column{0.48\textwidth} +\textbf{Транскрибация (5 моделей):} +\begin{itemize} + \item Whisper large-v3 / medium + \item Faster-Whisper large-v3 + \item GigaAM-CTC / RNN-T +\end{itemize} + +\column{0.48\textwidth} +\textbf{Диаризация (3 модели):} +\begin{itemize} + \item pyannote 3.1 + \item pyannote Community-1 + \item Sortformer (NeMo) +\end{itemize} +\end{columns} + +\vspace{0.3cm} +\centering +Всего конфигураций: $5 \times 5 \times 5 \times 3 \times 5 \times 5 = \mathbf{9375}$ +\end{frame} + +% ===== 5. Computational constraints ===== +\begin{frame}{Вычислительные ограничения} +\begin{itemize} + \item Полный перебор 9375 конфигураций $\times$ 5~мин $= \sim$\textbf{780 часов} + \item Необходимы эвристические методы оптимизации +\end{itemize} + +\vspace{0.3cm} +\textbf{Сокращение затрат:} +\begin{enumerate} + \item 1 вариант датасета (raw) --- сравнение конфигураций, а не устойчивости к шуму + \item Половина датасета ($\sim$45~мин аудио) --- $\sim$5~мин на оценку + \item Суммаризация исключена: LLM-инференс $\sim$20--40~мин/оценку +\end{enumerate} + +\vspace{0.3cm} +Итог: $\sim$5~мин на одну оценку конфигурации, бюджет 10 часов. +\end{frame} + +% ===== 6. GA design ===== +\begin{frame}{Генетический алгоритм} +\textbf{Хромосома:} вектор из 6 генов (индексы допустимых значений) + +\vspace{0.3cm} +\begin{columns} +\column{0.48\textwidth} +\textbf{Операторы:} +\begin{itemize} + \item Турнирная селекция ($k=3$) + \item Равномерный кроссовер + \item Мутация: $p=0{,}15$ на ген\\(70\% --- соседнее значение,\\30\% --- случайное) + \item Элитизм: 2 лучшие особи +\end{itemize} + +\column{0.48\textwidth} +\textbf{Параметры:} +\begin{itemize} + \item Популяция: 15 особей + \item Поколений: 25 + \item Веса: $\alpha=0{,}4$, $\beta=0{,}4$, $\gamma=0{,}2$ +\end{itemize} +\end{columns} +\end{frame} + +% ===== 7. Optimizations ===== +\begin{frame}{Оптимизации вычислений} +\textbf{1. Модульное кэширование} +\begin{itemize} + \item Транскрибация и диаризация --- \textbf{независимые} модули + \item Кэш транскрибации: ключ = (модель, beam\_size, vad\_threshold) + \item Кэш диаризации: ключ = (модель, min\_speech\_dur, clustering\_thr, vad\_thr) + \item Изменение параметров одного модуля не требует пересчёта другого +\end{itemize} + +\vspace{0.4cm} +\textbf{2. Пакетное планирование по моделям} +\begin{itemize} + \item Загрузка модели в GPU: 30--60~с для крупных моделей + \item Конфигурации группируются по модели перед запуском + \item Модель загружается \textbf{один раз} для всего пакета +\end{itemize} +\end{frame} + +% ===== 8. Convergence ===== +\begin{frame}{Результаты: сходимость} +\begin{columns} +\column{0.55\textwidth} +\includegraphics[width=\textwidth]{../report/img/convergence.png} + +\column{0.42\textwidth} +\begin{itemize} + \item Быстрое улучшение в поколениях 0--4 + \item Плато после 10-го поколения + \item Среднее сходится к лучшему --- популяция концентрируется в области оптимума +\end{itemize} +\end{columns} +\end{frame} + +% ===== 9. Best configurations ===== +\begin{frame}{Результаты: лучшие конфигурации} +\small +\begin{table} +\centering +\begin{tabular}{c l l c c c} +\toprule +\textbf{\#} & \textbf{Транскрибация} & \textbf{Диаризация} & \textbf{WER} & \textbf{DER} & $f(\mathbf{x})$ \\ +\midrule +1 & GigaAM-RNN-T & Sortformer & 5.32\% & 19.07\% & 11.25 \\ +2 & GigaAM-CTC & Sortformer & 6.54\% & 19.07\% & 11.30 \\ +3 & GigaAM-RNN-T & pyannote C.-1 & 5.32\% & 20.50\% & 11.60 \\ +4 & GigaAM-CTC & pyannote C.-1 & 6.54\% & 20.50\% & 11.66 \\ +5 & F.-Whisper l.-v3 & Sortformer & 7.59\% & 19.01\% & 11.84 \\ +\bottomrule +\end{tabular} +\end{table} + +\vspace{0.3cm} +\textbf{Лучшая:} GigaAM-RNN-T + Sortformer\\ +beam\_size=1, vad\_thr=0.5, min\_speech\_dur=0.5~с, clustering\_thr=0.6 +\end{frame} + +% ===== 10. WER vs DER scatter ===== +\begin{frame}{Результаты: распределение конфигураций} +\centering +\includegraphics[width=0.56\textwidth]{../report/img/wer_der_scatter.png} + +\small Алгоритм сконцентрировал поиск в области малых WER и DER. +\end{frame} + +% ===== 11. Model frequency ===== +\begin{frame}{Результаты: частота моделей в топ-20} +\centering +\includegraphics[width=0.82\textwidth]{../report/img/model_frequency.png} + +\vspace{0.2cm} +\small GigaAM-RNN-T доминирует в транскрибации, Sortformer --- в диаризации. +\end{frame} + +% ===== 12. Comparison ===== +\begin{frame}{Сравнение стратегий поиска} +\begin{table} +\centering +\begin{tabular}{l c c c c} +\toprule +\textbf{Стратегия} & \textbf{Оценок} & $f(\mathbf{x}^*)$ & \textbf{WER} & \textbf{DER} \\ +\midrule +Полный перебор & 9375 & --- & --- & --- \\ +Случ. поиск (15) & 15 & 13.03 & 6.99\% & 23.35\% \\ +Случ. поиск (93) & 93 & 11.81 & 5.57\% & 20.27\% \\ +Случ. поиск (375) & 375 & 11.32 & 5.57\% & 19.15\% \\ +\textbf{ГА (25 пок.)} & \textbf{93 мод.} & \textbf{11.25} & \textbf{5.32\%} & \textbf{19.07\%} \\ +\bottomrule +\end{tabular} +\end{table} + +\vspace{0.3cm} +\begin{itemize} + \item ГА с 93 модульными вычислениями лучше случайного поиска с 375 оценками + \item $93 / 9375 \approx 1\%$ пространства поиска + \item Оценочное время: $\sim$4 часа вместо 780 часов --- \textbf{ускорение $>$100$\times$} +\end{itemize} +\end{frame} + +% ===== 13. Conclusion ===== +\begin{frame}{Заключение} +\begin{itemize} + \item Разработан ГА для оптимизации конфигурации модулей транскрибации и диаризации + \item Модульное кэширование сокращает вычисления в 2.6 раза + \item Пакетное планирование устраняет избыточные загрузки моделей + \item Сходимость за 4--10 поколений (93 модульных вычисления) + \item Лучшая конфигурация: WER~=~5.32\%, DER~=~19.07\% + \item Ускорение $>$100$\times$ по сравнению с полным перебором +\end{itemize} + +\vspace{0.4cm} +\textbf{Дальнейшая работа:} +\begin{itemize} + \item Расширение на этап суммаризации (дипломная работа) + \item Апробация на полном датасете +\end{itemize} +\end{frame} + +\end{document} diff --git a/report/report.tex b/report/report.tex index 28e4ed5..736a10d 100755 --- a/report/report.tex +++ b/report/report.tex @@ -506,4 +506,23 @@ clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\ \printbibliography[heading=bibintoc] +\newpage +\section*{Приложение 1. Исходный код файла ga.py} +\addcontentsline{toc}{section}{Приложение 1. Исходный код файла ga.py} +\label{app:ga} +\lstinputlisting[language=Python]{../ga/ga.py} + +\newpage +\section*{Приложение 2. Исходный код файла run\_pipeline.py} +\addcontentsline{toc}{section}{Приложение 2. Исходный код файла run\_pipeline.py} +\label{app:run-pipeline} +\lstinputlisting[language=Python]{../ga/run_pipeline.py} + +\newpage +\section*{Приложение 3. Исходный код файла generate\_plots.py} +\addcontentsline{toc}{section}{Приложение 3. Исходный код файла generate\_plots.py} +\label{app:generate-plots} +\lstinputlisting[language=Python]{../ga/generate_plots.py} + + \end{document}