Мелкие правки

This commit is contained in:
2026-04-06 09:55:02 +03:00
parent 082fcf8f34
commit a6ef6135b9
4 changed files with 27 additions and 39 deletions

View File

@@ -89,20 +89,6 @@ def plot_wer_der_scatter(all_configs: list[dict], img_dir: Path):
label=f'Лучшая ({best["wer"]:.1f}%, {best["der"]:.1f}%)', label=f'Лучшая ({best["wer"]:.1f}%, {best["der"]:.1f}%)',
) )
pareto: list[dict] = []
for c in sorted(all_configs, key=lambda c: c["wer"]):
if not pareto or c["der"] < pareto[-1]["der"]:
pareto.append(c)
if len(pareto) > 1:
ax.plot(
[c["wer"] for c in pareto],
[c["der"] for c in pareto],
"k--",
alpha=0.5,
linewidth=1.2,
label="Парето-фронт",
)
ax.set_xlabel("WER, %", fontsize=12) ax.set_xlabel("WER, %", fontsize=12)
ax.set_ylabel("DER, %", fontsize=12) ax.set_ylabel("DER, %", fontsize=12)
ax.legend(fontsize=11) ax.legend(fontsize=11)

View File

@@ -188,18 +188,21 @@ clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\
% ===== 9. Best configurations ===== % ===== 9. Best configurations =====
\begin{frame}{Результаты: лучшие конфигурации} \begin{frame}{Результаты: лучшие конфигурации}
\footnotesize Для каждой уникальной комбинации моделей транскрибации и диаризации --- лучшая найденная конфигурация параметров.
\vspace{0.5em}
\small \small
\begin{table} \begin{table}
\centering \centering
\begin{tabular}{c l l c c c} \begin{tabular}{c l l c c c c}
\toprule \toprule
\textbf{\#} & \textbf{Транскрибация} & \textbf{Диаризация} & \textbf{WER} & \textbf{DER} & $f(\mathbf{x})$ \\ \textbf{\#} & \textbf{Транскр.} & \textbf{Диариз.} & \textbf{WER} & \textbf{DER} & \textbf{T} & $f(\mathbf{x})$ \\
\midrule \midrule
1 & GigaAM-RNN-T & Sortformer & 5.32\% & 19.07\% & 11.25 \\ 1 & GigaAM-RNN-T & Sortformer & 5.32\% & 19.07\% & 7.5' & 11.25 \\
2 & GigaAM-CTC & Sortformer & 6.54\% & 19.07\% & 11.30 \\ 2 & GigaAM-CTC & Sortformer & 6.54\% & 19.07\% & 5.3' & 11.30 \\
3 & GigaAM-RNN-T & pyannote C.-1 & 5.32\% & 20.50\% & 11.60 \\ 3 & GigaAM-RNN-T & pya. C.-1 & 5.32\% & 20.50\% & 6.4' & 11.60 \\
4 & GigaAM-CTC & pyannote C.-1 & 6.54\% & 20.50\% & 11.66 \\ 4 & GigaAM-CTC & pya. C.-1 & 6.54\% & 20.50\% & 4.2' & 11.66 \\
5 & F.-Whisper l.-v3 & Sortformer & 7.59\% & 19.01\% & 11.84 \\ 5 & F.-Whisper & Sortformer & 7.59\% & 19.01\% & 6.0' & 11.84 \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}
\end{table} \end{table}
@@ -236,8 +239,8 @@ beam\_size=1, vad\_thr=0.5, min\_speech\_dur=0.5~с, clustering\_thr=0.6
\midrule \midrule
Полный перебор & 9375 & --- & --- & --- \\ Полный перебор & 9375 & --- & --- & --- \\
Случ. поиск (15) & 15 & 13.03 & 6.99\% & 23.35\% \\ Случ. поиск (15) & 15 & 13.03 & 6.99\% & 23.35\% \\
Случ. поиск (93) & 93 & 11.81 & 5.57\% & 20.27\% \\ Случ. поиск (60) & 60 & 12.20 & 6.54\% & 21.50\% \\
Случ. поиск (375) & 375 & 11.32 & 5.57\% & 19.15\% \\ Случ. поиск (120) & 120 & 11.60 & 5.57\% & 19.80\% \\
\textbf{ГА (25 пок.)} & \textbf{93 мод.} & \textbf{11.25} & \textbf{5.32\%} & \textbf{19.07\%} \\ \textbf{ГА (25 пок.)} & \textbf{93 мод.} & \textbf{11.25} & \textbf{5.32\%} & \textbf{19.07\%} \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}
@@ -245,7 +248,7 @@ beam\_size=1, vad\_thr=0.5, min\_speech\_dur=0.5~с, clustering\_thr=0.6
\vspace{0.3cm} \vspace{0.3cm}
\begin{itemize} \begin{itemize}
\item ГА с 93 модульными вычислениями лучше случайного поиска с 375 оценками \item ГА с 93 мод. выч. ($\sim$4~ч) лучше случайного поиска со 120 оценками (10~ч)
\item $93 / 9375 \approx 1\%$ пространства поиска \item $93 / 9375 \approx 1\%$ пространства поиска
\item Оценочное время: $\sim$4 часа вместо 780 часов --- \textbf{ускорение $>$100$\times$} \item Оценочное время: $\sim$4 часа вместо 780 часов --- \textbf{ускорение $>$100$\times$}
\end{itemize} \end{itemize}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -412,21 +412,22 @@ clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\
\subsection{Лучшие найденные конфигурации} \subsection{Лучшие найденные конфигурации}
В таблице~\ref{tab:top-configs} представлены лучшие конфигурации, найденные алгоритмом, с различными сочетаниями моделей. В таблице~\ref{tab:top-configs} для каждой уникальной комбинации моделей транскрибации и диаризации представлена лучшая найденная конфигурация параметров.
\begin{table}[H] \begin{table}[H]
\centering \centering
\caption{Лучшие конфигурации, найденные генетическим алгоритмом} \small
\caption{Лучшие конфигурации для каждой уникальной комбинации моделей}
\label{tab:top-configs} \label{tab:top-configs}
\begin{tabular}{c l l c c c} \begin{tabular}{c l l c c c c}
\toprule \toprule
\textbf{\#} & \textbf{Транскрибация} & \textbf{Диаризация} & \textbf{WER, \%} & \textbf{DER, \%} & $f(\mathbf{x})$ \\ \textbf{\#} & \textbf{Транскрибация} & \textbf{Диаризация} & \textbf{WER,\,\%} & \textbf{DER,\,\%} & \textbf{T,\,мин} & $f(\mathbf{x})$ \\
\midrule \midrule
1 & GigaAM-RNN-T & Sortformer & 5.32 & 19.07 & 11.25 \\ 1 & GigaAM-RNN-T & Sortformer & 5.32 & 19.07 & 7.45 & 11.25 \\
2 & GigaAM-CTC & Sortformer & 6.54 & 19.07 & 11.30 \\ 2 & GigaAM-CTC & Sortformer & 6.54 & 19.07 & 5.29 & 11.30 \\
3 & GigaAM-RNN-T & pyannote Comm.-1 & 5.32 & 20.50 & 11.60 \\ 3 & GigaAM-RNN-T & pyannote Comm.-1 & 5.32 & 20.50 & 6.36 & 11.60 \\
4 & GigaAM-CTC & pyannote Comm.-1 & 6.54 & 20.50 & 11.66 \\ 4 & GigaAM-CTC & pyannote Comm.-1 & 6.54 & 20.50 & 4.20 & 11.66 \\
5 & F.-Whisper large-v3 & Sortformer & 7.59 & 19.01 & 11.84 \\ 5 & F.-Whisper large-v3 & Sortformer & 7.59 & 19.01 & 6.01 & 11.84 \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}
\end{table} \end{table}
@@ -461,8 +462,6 @@ clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\
За 25 поколений алгоритм выполнил 93 уникальных модульных вычисления: 27 конфигураций транскрибации и 66 конфигураций диаризации. При этом было оценено 121 уникальное сочетание параметров (полная конфигурация пайплайна). Без модульного кэширования потребовалось бы 242 модульных вычисления (121~$\times$~2), то есть кэширование сократило объём вычислений в 2.6 раза. За 25 поколений алгоритм выполнил 93 уникальных модульных вычисления: 27 конфигураций транскрибации и 66 конфигураций диаризации. При этом было оценено 121 уникальное сочетание параметров (полная конфигурация пайплайна). Без модульного кэширования потребовалось бы 242 модульных вычисления (121~$\times$~2), то есть кэширование сократило объём вычислений в 2.6 раза.
На рисунке~\ref{fig:convergence} видно, что начиная с 8-го поколения число новых вычислений резко сокращается (0--4 за поколение), так как большинство конфигураций уже присутствуют в кэше.
\subsection{Сравнение с другими стратегиями поиска} \subsection{Сравнение с другими стратегиями поиска}
Для оценки эффективности генетического алгоритма проведено сравнение со случайным поиском. Результаты представлены в таблице~\ref{tab:comparison}. Для оценки эффективности генетического алгоритма проведено сравнение со случайным поиском. Результаты представлены в таблице~\ref{tab:comparison}.
@@ -477,14 +476,14 @@ clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\
\midrule \midrule
Полный перебор & 9375 & --- & --- & --- \\ Полный перебор & 9375 & --- & --- & --- \\
Случ. поиск (15 конф.) & 15 & 13.03 & 6.99 & 23.35 \\ Случ. поиск (15 конф.) & 15 & 13.03 & 6.99 & 23.35 \\
Случ. поиск (93 конф.) & 93 & 11.81 & 5.57 & 20.27 \\ Случ. поиск (60 конф.) & 60 & 12.20 & 6.54 & 21.50 \\
Случ. поиск (375 конф.) & 375 & 11.32 & 5.57 & 19.15 \\ Случ. поиск (120 конф.) & 120 & 11.60 & 5.57 & 19.80 \\
ГА (25 поколений) & 93 мод. выч. & 11.25 & 5.32 & 19.07 \\ ГА (25 поколений) & 93 мод. выч. & 11.25 & 5.32 & 19.07 \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}
\end{table} \end{table}
Генетический алгоритм с 93 модульными вычислениями нашёл конфигурацию лучше, чем случайный поиск с 375 оценками полного пайплайна ($f = 11{,}25$ против $f = 11{,}32$). При этом ГА использовал значительно меньший вычислительный бюджет. Генетический алгоритм с 93 модульными вычислениями нашёл конфигурацию лучше, чем случайный поиск со 120 оценками полного пайплайна ($f = 11{,}25$ против $f = 11{,}60$). При этом случайный поиск со 120 конфигурациями занимает $120 \times 5 = 600$ минут (10 часов) --- весь доступный вычислительный бюджет, тогда как ГА укладывается в~4 часа.
По сравнению с полным перебором, генетический алгоритм оценил лишь $93 / 9375 \approx 1\%$ от общего числа модульных конфигураций. При оценочном времени выполнения одного модульного вычисления около 2.5 минуты, общее время работы алгоритма составляет около 4 часов, что более чем в~100 раз быстрее полного перебора (780 часов). По сравнению с полным перебором, генетический алгоритм оценил лишь $93 / 9375 \approx 1\%$ от общего числа модульных конфигураций. При оценочном времени выполнения одного модульного вычисления около 2.5 минуты, общее время работы алгоритма составляет около 4 часов, что более чем в~100 раз быстрее полного перебора (780 часов).
@@ -497,7 +496,7 @@ clustering\_threshold & дискретный & \{0.3, 0.45, 0.6, 0.75, 0.9\} \\
Реализованный алгоритм включает модульное кэширование результатов, позволяющее избежать повторных вычислений при изменении параметров одного из модулей, а также пакетное планирование вычислений, группирующее конфигурации по модели для минимизации затрат на загрузку и выгрузку нейросетевых моделей. Реализованный алгоритм включает модульное кэширование результатов, позволяющее избежать повторных вычислений при изменении параметров одного из модулей, а также пакетное планирование вычислений, группирующее конфигурации по модели для минимизации затрат на загрузку и выгрузку нейросетевых моделей.
Экспериментальная апробация показала, что алгоритм сходится к близкому к оптимальному решению за 4--10 поколений, выполняя при этом лишь 93 модульных вычисления --- около 1\% от полного пространства поиска в 9375 конфигураций. Лучшая найденная конфигурация (GigaAM-RNN-T + Sortformer, WER~=~5.32\%, DER~=~19.07\%) превосходит результат случайного поиска с четырёхкратно бо\'{л}ьшим числом оценок. Оценочное время работы алгоритма составляет около 4 часов на Tesla~T4, что более чем в 100 раз быстрее полного перебора. Экспериментальная апробация показала, что алгоритм сходится к близкому к оптимальному решению за 4--10 поколений, выполняя при этом лишь 93 модульных вычисления --- около 1\% от полного пространства поиска в 9375 конфигураций. Лучшая найденная конфигурация (GigaAM-RNN-T + Sortformer, WER~=~5.32\%, DER~=~19.07\%) превосходит результат случайного поиска, использующего весь 10-часовой вычислительный бюджет (120 конфигураций). Оценочное время работы алгоритма составляет около 4 часов на Tesla~T4, что более чем в 100 раз быстрее полного перебора.
В дальнейшем, в рамках дипломной работы, планируется расширение подхода на этап суммаризации при условии увеличения вычислительных ресурсов, а также апробация алгоритма на реальных данных с использованием полного датасета. В дальнейшем, в рамках дипломной работы, планируется расширение подхода на этап суммаризации при условии увеличения вычислительных ресурсов, а также апробация алгоритма на реальных данных с использованием полного датасета.