diff --git a/report/.gitignore b/report/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..75f7917bc76d1fa6e99d4de21577487b81ba66a5 --- /dev/null +++ b/report/.gitignore @@ -0,0 +1,11 @@ +*.aux +*.bbl +*.bcf +*.blg +*.log +*.nav +*.out +*.run.xml +*.snm +*.toc +*.vrb diff --git a/report/Bericht.tex b/report/Bericht.tex new file mode 100644 index 0000000000000000000000000000000000000000..90ed827d029522948874a40069cfc014c97c267b --- /dev/null +++ b/report/Bericht.tex @@ -0,0 +1,81 @@ +%! TEX program = lualatex +%! BIB program = biber +\documentclass[DIV=13,fontsize=11pt,ngerman]{scrartcl} +% DIV 13 ist meh, siehe Warnung, aber vorgegeben durch Vorlage +\KOMAoptions{parskip = half} +\usepackage{polyglossia} +\setdefaultlanguage[babelshorthands = true]{german} +\usepackage[autostyle = true, german = quotes]{csquotes} +\usepackage{amsmath} +\usepackage{amssymb} +\usepackage{diagbox} % Für diagonal-getrennte Zelle in Tabellen +% \usepackage{amsthm} +% \theoremstyle{definition} +% \newtheorem{definition}{Definition}[section] +% \newtheorem{notation}[definition]{Notation} +% \newtheorem{example}{Beispiel}[section] +% \theoremstyle{remark} +% \newtheorem*{remark}{Bemerkung} +% \theoremstyle{plain} +% \newtheorem{satz}{Satz}[section] +% \newtheorem{lemma}[satz]{Lemma} +% \newtheorem{proposition}[satz]{Behauptung} +\usepackage{graphicx} +% \usepackage{subfig} +\usepackage{xcolor} +\usepackage{tikz} +% \usetikzlibrary{arrows.meta,petri,positioning,shapes,shapes.arrows} +\usepackage[ + backend=biber, + bibstyle=numeric, + citestyle=numeric-comp, + % bibstyle=ieee, + % citestyle=ieee, + date=year +]{biblatex} +\setcounter{biburllcpenalty}{7000} +\addbibresource{chessbibliography.bib} +% \usepackage{rotating} +% \usepackage{array} +% \usepackage{multirow} +\usepackage{booktabs} +% \newcolumntype{R}[1]{>{\begin{turn}{90}\begin{minipage}{#1}}l% +% <{\end{minipage}\end{turn}}% +% } +\usepackage{enumitem} + +\usepackage[ + bookmarksnumbered = true, + colorlinks = true, + citecolor = black, + linkcolor = black, + pdftitle = {DMML Bericht CHESS}, + pdfauthor = {Felix Feist and Erik Jonas Hartnick and Stephan Mitte}, + urlcolor = blue!70!cyan +]{hyperref} + +\input{assets/python_lstlisting} % Style setup for python lstlisting + +\title{Replikation und Reproduktion von CHESS} +\subtitle{Data Mining and Machine Learning} +%\head{Titel ersetzen und Sub-Titel streichen.} +\author{Felix Feist, Erik Jonas Hartnick und Stephan Mitte} +\date{31. März 2025} + +\begin{document} +\maketitle + +\input{content/01Einleitung} +\input{content/02Umfang} +\input{content/03Methoden} +\input{content/04Ergebnisse} +\input{content/05Diskussion} +\input{content/06Kommunikation} + +\printbibliography +% Notizen für später zur Formatierung: +% - cites am Satzende dem typischen anpassen, erst eckige Klammern, dann Punkt \cite{Talaei}. +% - von IEEE citestyle & bibstyle zu numeric-comp citestyle & numeric bibstyle wechseln +% - Begriffhervorhebungen einheitlich: kursiv oder fett? ggf. Höchstens Überschriften +% - \paragraph und \minisec sinnvoll einsetzen, nicht zu sehr mischen +\end{document} diff --git a/report/Bericht_preRelease.pdf b/report/Bericht_preRelease.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9482c05dfc9433efe10d09960eb5586849ce42e0 Binary files /dev/null and b/report/Bericht_preRelease.pdf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Black.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Black.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3ff0a7ea51a57970179a16df0a8c254e78304ef9 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Black.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-BlackItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-BlackItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bbc0f04bc949ec5bc35fb18279b5820f21eabe5a Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-BlackItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Bold.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d275b85bd195fa5bce2a5ca598349ad18aff05bc Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Bold.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-BoldItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..03ea9656f43c327787a91e66ffa8b67d52fb204d Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-BoldItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraBold.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1d2f902741a170045d563203913f86ade1687a5c Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraBold.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraBoldItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..12f4d249e1bed56ca5e341cc65a2b6dfe0f10838 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraBoldItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraLight.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraLight.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2de522a79c4e7759e6467a76d50ee648c0424cb8 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraLight.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraLightItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraLightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b65074d7c0bcfec97a065ff6f54d851afcf3a992 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ExtraLightItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Italic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6376ad2bf4a356c80bc6985b2fcee9bde4e44f97 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Italic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Light.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ceb773776c0c3411901989404e2a3571e0fd035e Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Light.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-LightItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-LightItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9cfb1fcdd134701e8a5e7fa2fb97df5a64eb4b8b Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-LightItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Medium.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..13643599bde33e4889aac5c31136cc60d4322e89 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Medium.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-MediumItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-MediumItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4c5fb43a69dbdaec5f170100871f547caf1c5464 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-MediumItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Regular.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eae1d9b40963e90b395a980a2093b9d263004a6c Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Regular.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-SemiBold.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ac2a0a97b7b1a365155f1055849bcbeebed41452 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-SemiBold.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-SemiBoldItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-SemiBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..733973778ef3ed81e7ff6432d71b78a31be02be7 Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-SemiBoldItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Thin.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Thin.ttf new file mode 100644 index 0000000000000000000000000000000000000000..184ca80ddeb692b1b42f6608f608283d4307ef9a Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-Thin.ttf differ diff --git a/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ThinItalic.ttf b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ThinItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2e936952d780021906429e2a0121b3706050539d Binary files /dev/null and b/report/Vortrag/AICStyleData/epilogueFont/Epilogue-ThinItalic.ttf differ diff --git a/report/Vortrag/AICStyleData/logos/LogoShapeDarkRotated.png b/report/Vortrag/AICStyleData/logos/LogoShapeDarkRotated.png new file mode 100644 index 0000000000000000000000000000000000000000..4848d8ff2bcbdbd20c22a918e7431e099fa0a3a5 Binary files /dev/null and b/report/Vortrag/AICStyleData/logos/LogoShapeDarkRotated.png differ diff --git a/report/Vortrag/AICStyleData/logos/LogoShapeLightRotated.png b/report/Vortrag/AICStyleData/logos/LogoShapeLightRotated.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2762cde4f4278647da91d8daae1c448f63bc4c Binary files /dev/null and b/report/Vortrag/AICStyleData/logos/LogoShapeLightRotated.png differ diff --git a/report/Vortrag/beamercolorthemeModernBeamer.sty b/report/Vortrag/beamercolorthemeModernBeamer.sty new file mode 100644 index 0000000000000000000000000000000000000000..c8f19879c4a18de709bfdb3e55c6f7428999d367 --- /dev/null +++ b/report/Vortrag/beamercolorthemeModernBeamer.sty @@ -0,0 +1,34 @@ +% define colors +\definecolor{VeryPaleOrange}{rgb}{1, 0.933, 0.867} +\definecolor{LightGrayishCyan}{rgb}{0.922, 0.98, 0.976} +\definecolor{LightGrayishBlue}{rgb}{0.929, 0.914, 1} +\definecolor{Solitude}{rgb}{0.953, 0.965, 0.976} + +\definecolor{mediumturquoise}{rgb}{0.28, 0.82, 0.8} +\definecolor{NeonCarrot}{rgb}{ 1, 0.49, 0.192} +\definecolor{NeonBlue}{rgb}{0.455, 0.325, 0.984} +\definecolor{Astronaut}{rgb}{0.243, 0.318, 0.416} + + +\definecolor{PrussianBlue}{rgb}{0.0, 0.19, 0.33} + +% set color usage +\usecolortheme[named=PrussianBlue]{structure} +\setbeamercolor{titlelike}{parent=structure} +\setbeamercolor{}{} +\setbeamercolor{block title}{bg=NeonBlue} +\setbeamercolor{block body}{bg=LightGrayishBlue} +\setbeamercolor{block title example}{bg=Astronaut} +\setbeamercolor{block body example}{bg=Solitude} +\setbeamercolor{block title alerted}{bg=NeonCarrot} +\setbeamercolor{block body alerted}{bg=VeryPaleOrange} +\setbeamercolor{footlinecolor}{fg=PrussianBlue} +\setbeamercolor{alerted text}{fg=NeonCarrot} +\setbeamercolor{background canvas}{bg=Solitude} + + +% for title page and final page +\setbeamercolor{title}{fg=Solitude} +\setbeamercolor{subtitle}{fg=Solitude} +\setbeamercolor{author}{fg=Solitude} +\setbeamercolor{institute}{fg=Solitude} \ No newline at end of file diff --git a/report/Vortrag/beamerfontthemeModernBeamer.sty b/report/Vortrag/beamerfontthemeModernBeamer.sty new file mode 100644 index 0000000000000000000000000000000000000000..bcd8f0ed3bdca4f921260515fc25310d78002c94 --- /dev/null +++ b/report/Vortrag/beamerfontthemeModernBeamer.sty @@ -0,0 +1,26 @@ +\mode<presentation> + +%%%%%%%%%%%% fonts + +\setbeamerfont{structure}{family=\sffamily,series=\mdseries} + +\setbeamerfont{title}{size=\huge,series=\bfseries,parent=structure} +\setbeamerfont{subtitle}{size=\normalsize,parent=title} + +\setbeamerfont{date}{size=\scriptsize,series=\mdseries,parent=structure} +\setbeamerfont{author}{size=\normalsize,parent=title} +\setbeamerfont{institute}{size=\scriptsize,series=\mdseries,parent=structure} + +\setbeamerfont{section in toc}{size=\Large,series=\bfseries,parent=structure} +\setbeamerfont{section in head/foot}{size=\tiny,parent=structure} +\setbeamerfont{subsection in toc}{size=\small,series=\mdseries,parent={section in toc}} + +\setbeamerfont{frametitle}{size=\LARGE,series=\bfseries,parent=structure} +\setbeamerfont{framesubtitle}{parent=frametitle,size=\Large} + +\setbeamerfont{caption}{size=\footnotesize} +\setbeamerfont{item}{parent=structure,series=\mdseries} +\setbeamerfont{block title}{size=\large,series=\mdseries,parent={structure,block body}} + +\mode +<all> diff --git a/report/Vortrag/beamerinnerthemeModernBeamer.sty b/report/Vortrag/beamerinnerthemeModernBeamer.sty new file mode 100644 index 0000000000000000000000000000000000000000..0f668a2f7023bf518d32aac8e66ae83d2fef338a --- /dev/null +++ b/report/Vortrag/beamerinnerthemeModernBeamer.sty @@ -0,0 +1,203 @@ +\pgfdeclareverticalshading[lower.bg,upper.bg]{bmb@transition}{200cm}{% + color(0pt)=(lower.bg); color(2pt)=(lower.bg); color(4pt)=(lower.bg)} + +\setbeamersize{text margin left=2em,text margin right=2em} + +% table of contents (overview) +\setbeamertemplate{section in toc}[sections numbered] +\setbeamertemplate{subsection in toc}{\leavevmode\leftskip=3.2em\rlap{\hskip-2em\inserttocsectionnumber.\inserttocsubsectionnumber}\inserttocsubsection\par} + +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{blocks}[default] +\setbeamertemplate{enumerate items}[default] +\setbeamertemplate{date}[default] + +% General frames +\setbeamertemplate{frametitle}{\vspace*{1em}\bfseries\insertframetitle\par\vskip-6pt + %------------------------- + {\usebeamercolor[fg]{titlegraphic}\insertlogo\par} +} + +% Footline +\setbeamertemplate{footline}{% + \begin{beamercolorbox}[ht=3em,sep=0.75em,wd=\paperwidth,leftskip=0.5cm,rightskip=0.5cm]{footlinecolor} + \scriptsize{\insertshortinstitute} + \hspace{1cm} + \hfill + \scriptsize{\insertframenumber/\inserttotalframenumber} + \end{beamercolorbox}% +} + +% Template for headings in multicolumn layout +\setbeamertemplate{column_heading}{ + \begin{beamercolorbox}{NeonBlue} + \end{beamercolorbox} +} + +% Template for the final page of the presentation +\setbeamertemplate{endpage}{\vspace{8em} + + \begingroup + \centering + % ------------------------ + \begin{beamercolorbox}[sep=8pt,left]{title} + \setbeamercolor{normal text}{fg=red} + \vskip2.5em\par + \usebeamerfont{title}\finalpage \par% + \end{beamercolorbox}% + \vskip 2.5em\par + % ------------------------ + \begin{beamercolorbox}[sep=8pt,left]{author} + \usebeamerfont{author}\insertauthor + \end{beamercolorbox} + \vskip-2em + % ------------------------ + \vskip1.5em\par + \begin{beamercolorbox}[sep=8pt,left]{institute} + \usebeamerfont{institute}\insertinstitute + \hspace*{0.45\linewidth} + \usebeamerfont{date}\insertdate + \end{beamercolorbox} + % ------------------------ + {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par} + \endgroup + \vfill + +} + +% Title page +\setbeamertemplate{title page}{ + \vspace{8em} + \begingroup + \centering + % ------------------------ + \begin{beamercolorbox}[sep=8pt,left]{title} + \usebeamerfont{title}\inserttitle\par% + \ifx\insertsubtitle\@empty% + \else% + \vskip0.25em% + {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% + \fi% + \end{beamercolorbox}% + \vskip4em\par + % ------------------------ + \begin{beamercolorbox}[sep=8pt,left]{author} + \usebeamerfont{author}\insertauthor + \end{beamercolorbox} + \vskip-2em + % ------------------------ + \vskip1.5em\par + \begin{beamercolorbox}[sep=8pt,left]{institute} + \usebeamerfont{institute}\insertinstitute + \hspace*{0.45\linewidth} + \usebeamerfont{date}\insertdate + \end{beamercolorbox} + + % Logo on the title page + \titlegraphic{ + \begin{tikzpicture}[overlay,remember picture] + \node[anchor=north west, outer xsep=26pt, outer ysep=20pt] at (current page.north west){ + %\includegraphics[width=12em]{AICStyleData/logos/Logo_AIC_FEECTU_Holo_white.png} + }; + \end{tikzpicture} + } + {\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par} + \endgroup + \vfill +} + +% Section divider +\setbeamertemplate{section divider}{ +\logo { + \begin{tikzpicture}[overlay,remember picture] + \node[left=0.2cm] at (current page.24){ + %\includegraphics[width=1.5cm]{AICStyleData/logos/Symbol_AIC_Neon_Blue.png} + }; + \end{tikzpicture} + } + \vspace{14em} + \begin{beamercolorbox}[sep=0pt,left]{frametitle} + \usebeamerfont{frametitle} + \insertsectionhead\par% + \end{beamercolorbox}% + \gradientline\par + \vspace{6em} + \begin{beamercolorbox}[ht=1em,sep=8pt,wd=\paperwidth,leftskip=0.5cm,rightskip=0.5cm]{footlinecolor} + \scriptsize{\insertshortinstitute} + \hspace{1cm} + \hfill + \end{beamercolorbox}% + %------------------------- + {\usebeamercolor[fg]{titlegraphic}\insertlogo\par} + +} + + +%Select the Epilogue font (requires luaLatex or XeLaTex compilers) +\setsansfont{Epilogue}[ + Path=./AICStyleData/epilogueFont/, + Scale=0.9, + Extension = .ttf, + UprightFont=*-Regular, + BoldFont=*-Bold, + ItalicFont=*-Italic, + BoldItalicFont=*-BoldItalic + ] + +%---------------------------------------------------------------------------------------- +% Custom commands +%---------------------------------------------------------------------------------------- +% Section divider +% gradient color line for the section separation +\newcommand{\gradientline}{\noindent% + \begin{tikzpicture} + \node [rectangle, left color=NeonBlue, right color=NeonBlue, middle color=mediumturquoise, anchor=north, minimum width=\linewidth, inner sep=0pt, minimum height=1.5pt] (box) at (current page.north){}; + \end{tikzpicture} +} + +\newcommand \makesection[1]{ +{ +\usebackgroundtemplate{ +\includegraphics[width=\paperwidth]{Vortrag/AICStyleData/logos/LogoShapeLightRotated.png} +} +\begin{frame}[plain, noframenumbering] + \section{#1} + \usebeamertemplate{section divider} +\end{frame} +} +} +% ---------------------------------------------------------- + +% command for building the last slide of the presentation +\newcommand\finalpage{} % Empty by default. +\newcommand\finalpagetext[1]{\renewcommand\finalpage{#1}} + +\newcommand \makefinalpage{ + { + \usebackgroundtemplate{ + \includegraphics[width=\paperwidth]{Vortrag/AICStyleData/logos/LogoShapeDarkRotated.png} + } + \begin{frame}[plain] + \usebeamertemplate{endpage} + \end{frame} + } +} +% ---------------------------------------------------------- + +% command for building the first slide of the presentation +\newcommand \maketitlepage{ + { + \usebackgroundtemplate{ + \includegraphics[width=\paperwidth]{Vortrag/AICStyleData/logos/LogoShapeDarkRotated.png} + } +\begin{frame}[plain] + % Print the title page as the first slide + \titlepage +\end{frame} +} +} +% ---------------------------------------------------------- + +% Formatting for header columns in multi-column page +\newcommand\colheader[1]{\textcolor{NeonBlue}{\textbf{#1}}\par} +% ---------------------------------------------------------- diff --git a/report/Vortrag/beamerthemeModernBeamer.sty b/report/Vortrag/beamerthemeModernBeamer.sty new file mode 100644 index 0000000000000000000000000000000000000000..a2b8dea16cbccba854ba86d3d3f2c5856fbec35b --- /dev/null +++ b/report/Vortrag/beamerthemeModernBeamer.sty @@ -0,0 +1,11 @@ +\mode<presentation> + +% Settings +\usetheme{Madrid} +\useinnertheme{circles} + +\usefonttheme{ModernBeamer} +\usecolortheme{ModernBeamer} +\useinnertheme{ModernBeamer} + +\mode<all> \ No newline at end of file diff --git a/report/Vortrag/main.tex b/report/Vortrag/main.tex new file mode 100644 index 0000000000000000000000000000000000000000..932c28db51bd0cf47d1a862f5d51a8b229230c57 --- /dev/null +++ b/report/Vortrag/main.tex @@ -0,0 +1,425 @@ +%------------------------------------------------ +% PACKAGES AND THEMES +%------------------------------------------------ +\documentclass[aspectratio=169,xcolor=dvipsnames, t]{beamer} +\usepackage{fontspec} % Allows using custom font. MUST be before loading the theme! +\usetheme{ModernBeamer} +\usepackage{hyperref} +\usepackage{graphicx} % Allows including images +\usepackage{booktabs} % Allows the use of \toprule, \midrule and \bottomrule in tables +\usepackage{svg} %allows using svg figures +\usepackage{tikz} +\usetikzlibrary{positioning, shapes.misc} +\usepackage{makecell} +\usepackage{wrapfig} +% ADD YOUR PACKAGES BELOW +% ... +\usepackage[ + backend=biber, + bibstyle=ieee, % bibstyle verdeckt von Theme + citestyle=ieee % alphabetic für Autorenkürzel +]{biblatex} +\addbibresource{../chessbibliography.bib} + +%------------------------------------------------ +% TITLE PAGE CONFIGURATION +%------------------------------------------------ + +% \title[short title]{Zwischenbericht Replikation - CHESS} +\title[short title]{Interim report on our replication - CHESS} +% \subtitle{Data Mining und Maschinelles Lernen} +\subtitle{Data Mining and Machine Learning} +% \author{Felix Feist, Erik Jonas Hartnick und Stephan Mitte} +\author{Felix Feist, Erik Jonas Hartnick and Stephan Mitte} +% \institute[]{Institut für Informatik \newline Naturwissenschaftliche Fakultät III\newline Martin-Luther-Universität Halle-Wittenberg} +\institute[]{Institute of computer science \newline Naturwissenschaftliche Fakultät III\newline Martin-Luther-University Halle-Wittenberg} +\date{29.01.2025} + +%------------------------------------------------ +% PRESENTATION SLIDES +%------------------------------------------------ + +\begin{document} + +\maketitlepage + +\begin{frame}[t]{Agenda} + \tableofcontents +\end{frame} + +%------------------------------------------------ +\makesection{Presentation of the paper} +%------------------------------------------------ +\begin{frame}{Overview} + \begin{itemize} + \item CHESS: Contextual Harnessing for Efficient SQL Synthesis + %\item Shayan Talaei, Mohammadreza Pourreza, Yu-Chen Chang, Azalia Mirhoseini, Amin Saberi + \item Stanford University/USA and University of Alberta/Canada + \item Submitted 27th Mai 2024 + \end{itemize} + \vfill + \textbf{Problem:} + \begin{itemize} + \item Translating natural language questions into SQL queries (Text-To-SQL) + \item Accuracy gap for complex databases with large schemas, catalogs, content + \end{itemize} + \vfill + \textbf{Contribution:} + \begin{itemize} + \item Novel multi-agent framework based on Large Language Models (LLMs) + \item Improved generation of SQL queries in complex database + \end{itemize} +\end{frame} + +\begin{frame}{Challenges} + \begin{itemize} + \item<1-> navigating the ambiguities of natural language questions + \begin{itemize} + \item[\rightarrow]<2> Information Retriever (IR) + \end{itemize} + \vfill + \item<1-> extensive size of database catalogs and values + \begin{itemize} + \item[\rightarrow]<2> Information Retriever (IR) \& Schema Selector (SS) + \end{itemize} + \vfill + \item<1-> reasoning over large database schemas + \begin{itemize} + \item[\rightarrow]<2> Schema Selector (SS) \& Candidate Generator (CG) + \end{itemize} + \vfill + \item<1-> ensuring the functional validity of the generated queries + \begin{itemize} + \item[\rightarrow]<2> Unit Tester (UT) + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[t]{Multi-Agent-Framework} + \begin{minipage}[t]{0.70\textwidth} + \vspace{0pt} + \textbf{Information Retriever (IR)} + \begin{itemize} + \item gather relevant data related to user's input + \item extract keywords using LLM calls + \item searching for syntactic and semantic similarities using + \begin{itemize} + \item locality-sensitive hashing index of values (LSH) + \item vector database to measure semantic similarity + \end{itemize} + \end{itemize} + \end{minipage} + \hfill + \begin{minipage}[t]{0.15\textwidth} + \vspace{0pt} + \begin{tikzpicture}[ + thick, + every node/.style = {draw, minimum width=1cm, minimum height=1cm}, + transform shape, + scale=0.70 + ] + \node[minimum height = 3.8cm, minimum width = 2.8cm] (surround) at (0,-0.2) {}; + \node[draw=none, minimum width=2.2cm, rounded rectangle] (chess) at (0,1) {\textbf{CHESS}}; + \node<1-1>[white, fill=green!45!black] (ir) at (-0.6,0) {\textbf{IR}}; + \node<2-2>[white, fill=green!45!black!30] (ir2) at (-0.6,0) {\textbf{IR}}; + \node<1-1>[white, fill=blue!45!black!30] (ss) at (0.6,0) {\textbf{SS}}; + \node<2-2>[white, fill=blue!45!black] (ss2) at (0.6,0) {\textbf{SS}}; + \node[white, fill=red!45!black!30] (cg) at (-0.6,-1.2) {\textbf{CG}}; + \node[white, fill=yellow!45!black!30] (ut) at (0.6,-1.2) {\textbf{UT}}; + \end{tikzpicture} + \end{minipage} + \pause + \vfill + \textbf{Schema Selector (SS)} + \begin{itemize} + \item[\rightarrow] redundant information reduce performance of LLM + \item therefore prune large db schemas into manageable sub-schemas + % --> allowing more efficient reasoning + \item select necessary tables and columns through LLM prompting + \item scalable performance even with more than 4000 columns + \end{itemize} +\end{frame} + +\begin{frame}[t]{Multi-Agent-Framework (Cont.)} + \begin{minipage}[t]{0.75\textwidth} + \vspace{0pt} + \textbf{Candidate Generator (CG)} + \begin{itemize} + \item generates SQL queries with LLM prompt\\ + (using question, selected schema, tables and content) + \item executes and revises generated candidates as needed\\ + (identify faulty queries e.g. syntax errors) + \end{itemize} + \end{minipage} + \hfill + \begin{minipage}[t]{0.15\textwidth} + \vspace{0pt} + \begin{tikzpicture}[ + thick, + every node/.style = {draw, minimum width=1cm, minimum height=1cm}, + transform shape, + scale=0.70 + ] + \node[minimum height = 3.8cm, minimum width = 2.8cm] (surround) at (0,-0.2) {}; + \node[draw=none, minimum width=2.2cm, rounded rectangle] (chess) at (0,1) {\textbf{CHESS}}; + \node[white, fill=green!45!black!30] (ir) at (-0.6,0) {\textbf{IR}}; + \node[white, fill=blue!45!black!30] (ss) at (0.6,0) {\textbf{SS}}; + \node<1-1>[white, fill=red!45!black] (cg) at (-0.6,-1.2) {\textbf{CG}}; + \node<2-2>[white, fill=red!45!black!30] (cg2) at (-0.6,-1.2) {\textbf{CG}}; + \node<1-1>[white, fill=yellow!45!black!30] (ut) at (0.6,-1.2) {\textbf{UT}}; + \node<2-2>[white, fill=yellow!45!black] (ut) at (0.6,-1.2) {\textbf{UT}}; + \end{tikzpicture} + \end{minipage} + \vfill + \pause + \textbf{Unit Tester (UT)} + \begin{itemize} + \item assesses quality of final candidates + \item validates queries through LLM-based natural language unit tests + \item generating multiple tests and evaluate queries against them + \item select most accurate query + \end{itemize} +\end{frame} + +\begin{frame}{Adaptivity for Deployment Constraints} + \begin{itemize} + \item adapt to different deployment scenarios (budgets and capabilities of LLMs) + \item Narrows down industrial-scale db schemas into manageable sub-schemas + \item[\Rightarrow]boosting system accuracy and reducing the number of LLM token + \item Privacy-preserving performance using open-source model + \end{itemize} + \vfill + \textbf{Deployment scenarios:} + \begin{itemize} + \item Maximize accuracy (higher comp. budget and powerful LLMs)\\ + labeled as $CHESS_{(IR,CG,UT)}$ with Unit Tester + \item Maximize efficiency (limited comp. resources, weaker/smaller LLMs)\\ + labeled as $CHESS_{(IR,SS,CG)}$ with one candidate + \end{itemize} +\end{frame} + +%------------------------------------------------ +\makesection{Ressources} +\begin{frame}{Used Ressources in the main paper} + The Datasets used for experiments are: + \begin{itemize} + \item \href{https://yale-lily.github.io/spider}{Spider} + \item \href{https://bird-bench.github.io/}{BIRD} + \item Subsampled Development Set (SDS) + \item Synthetic Industrial-scale Database Schema + \end{itemize} + Where SDS is a simplified variant of the BIRD dataset and the synthetic industrial-scale dataset is a combination of different databases from BIRD. + + SDS is given in the repository but the industrial scaled dataset could be difficult to reproduce. + + \textbf{Metrics}: Execution accuracy is used as the metric for comparison. Report both the total number of tokens and the number of LLM calls required by approach. +\end{frame} +%------------------------------------------------ +% Die Text-to-SQL-Gruppen sollen sich auf den Spider-Datensatz beschränken +% Als LLM soll Hilfsmittel OLLAMA verwendet werden, das startet dann einen Webservice +% Anfragen sind dann nur HTTP-requests mit einem JSON-Objekt +% Zugriff auf LLMs ??? +% OLlama -> Llama 3.2-3B braucht (nur) 2 GB VRAM, Llama 3.3-20B braucht 43 GB VRAM, siehe https://github.com/ollama/ollama +% ist nur runterladen: +% curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz +% Entpacken: +% tar -xzf ollama-linux-amd64.tgz +% Service starten: +% ollama serve +% gewünschtes Modell/CLI-Chat starten, eine Weile warten, bis Modell geladen, z. B. +% ollama run llama-3.2 +% API mit POST-Request an http://localhost:port/api/generate befeuern, mit JSON-Objekt im Request-Body, siehe: +% https://github.com/ollama/ollama/blob/main/docs/api.md +% Antwort ist base64-codiert, sollte leicht dekodierbar sein +% Datensatz Spider, ggf. noch Spider 2.0 light, Bird geht zu weit (auch vom inhaltlichen Niveau her, das wäre wohl eher DBP, Ziel ist aber EDB) +% Notiz: eine Anfrage BIRD mit Llama3.2 auf Quadro P4000 mit zu kleiner context-length ca. 1.5 Stunde, über 1500 Fragen +%------------------------------------------------ +% Darauf eingehen, welche Experimente gemacht wurden und zu welchem Ergebnis die gekommen sind + +\begin{frame}{Experiments in the main paper} + %The experiments in the main study are categorised as follows: --Redundant + Experiments are categorised as follows: + \begin{enumerate} + \item Computing-intensive tests on Bird with IR, CG and UT + \item Industrial-scale experiments + \item Scenarios with limited computational budgets + \begin{itemize} + \item Open-Source LLMs (Llama-3-70B and fine-tuned DeepSeek model) + \item Proprietary models (GPT-3.5/4-turbo) + \end{itemize} + %\item Ablation studies (to assess the contribution of each component) --kürzer + \item Ablation studies (assess contribution of each agent) + \end{enumerate} + \vfill + For the industrial-scaled dataset, it is not specified how this is formed and it is not made available either. +\end{frame} +%------------------------------------------------ +\makesection{Our goals} +%------------------------------------------------ +% Unsere eigene Zielstellung formulieren + +%\begin{frame}{Our goals for the replication} + %Für $CHESS_{(IR,CG,UT)}$ wurde Gemini 1.5-pro verwendet\\ % $CHEES_{(IR,CG,UT)}$ + % Da gibt es auch eine kostenlose Version müsste aber noch mal einer genauer nachschauen wie das geregelt ist. Ich weiß nicht wie man die API bedient und wie das mit den Zahlungen geregelt ist + %Replikation der Ergebnisse über Reihenfolge von Unit Test und SQL-Canidates (EX=68.31 vs EX=66.78) + + %Für $CHESS_{(IR,SS,CG)}$ experiments using older proprietary models such as GPT-3.5/4-turbo (niedriger Dollar Bereich), as well as open-source models like \textbf{Llama-3-70B} and a \textbf{fine-tuned DeepSeek} model. % $CHEES_{(IR,SS,CG)}$ + %Hier können wir würde ich vorschlagen die Open-Source Varianten zu reproduzieren. + + %Wenn eines der beiden steht kann man am besten die einzelnen Funktionen vom SS weglassen und versuchen die Ergebnisse zu replizieren auch den Entity und Kontext Retriver weglassen ist eine Option. Hier wird das SDS verwendet was im repository hinterlegt ist. + %Aber leider keine Angaben zum verwendeten LLM. + + %Technische Anforderungen fallen bei uns bis auf API Verfügbarkeit weg. Zu Open Source leider keine Angaben gefunden. +%\end{frame} + +\begin{frame}{Our goals for the replication} + % Stephans Ideen, überschneidungen mit obiger Folie + \begin{itemize} + \item Testing implementation and check proposed execution accuracy with $CHESS_{(IR,SS,CG)}$ (with Llama-3-70B) on the SDS + + %Testing implementation and check proposed execution accuracy with $CHESS_{(IR,CG,UT)}$ (with ???LLM) on the bird dataset + + % ------------------------------------------------ + % gemini-2.0-flash-exp ist aktuell noch kostenlos wegen exp.-version --> https://aistudio.google.com/prompts/new_chat + % ------------------------------------------------ + + \item Additionally testing $CHESS_{(IR,SS,CG)}$ (low power) with different number of revisions in the CG because of the tremendous accuracy drop of 6.80\% without revision tools (see tab. 4 in \cite{Talaei2024}) + + % ------------------------------------------------ + % Laut paper wurde die schwache konfiguration mit 1 und 3 Kandidaten getestet und der/diese mussten dann das richtige Ergebnis haben. Aber die Revision hat laut Tab. 4 eine extremen einfluss, daher sollten wir diesen Untersuchen, denke ich. vermutlich machen ein paar mehr schon eine großen Unterschied aus, aber ab einem bestimmten Wert verbessert sich nichts mehr. + % ------------------------------------------------ + + \item Maybe we also could test a different kind of unit tests where $1$ candidate is evaluated against $M$ UTs (instead of $N$ candidates against $1$ UT) examine claimed accuracy drop of 68.31 down to 66.78 (see 4.2.1) + + \item We want to carry out additional experiments, where we want to test the $CHESS_{(IR,SS,CG)}$ configuration with the Spider2.0 Dataset + \end{itemize} +\end{frame} + +\begin{frame}{Expected results} + \begin{itemize} + \item For the tests with the $CHESS_{(IR,SS,CG)}$ configuration and Llama-3-70B we hope for very similar results compared to the paper + % --> Gleiches Dataset und gleiche Umgebung, nur die Hardware ist vermutlich anders. + \item The ablation studies and the different way of Unit-Testing will probably differ from the original work because we can't use Gemini and the $CHESS(IR,CG,UT)$ configuration. But we hope for similar proportions as in the original work + \item The tests with the Spider2.0 dataset should be good but not as good as with the Spider dataset used in the original work + \end{itemize} +\end{frame} + +%------------------------------------------------ +\makesection{Code provided by the authors} +%------------------------------------------------ +\begin{frame}{First impression of provided code} + \begin{itemize} + \item available on GitHub: \url{https://github.com/ShayanTalaei/CHESS} + \item 3 main run scripts, configured for OpenAI API (GPT, \$\$ required) + \item config files and python code for different models + \item directory for datasets (fits BIRD best) + \item directory with source code + \item very short customization instructions for other models in README.md + \item Ollama: webservice (localhost), very easy to set up + \end{itemize} +\end{frame} +%------------------------------------------------ +% \makesection{Latex Examples} +% Das ist nur für uns, um zu sehen, welche Highlights dieses Packet bereit stellt +% Schlage vor, das wieder einzukommentieren, wenn wir nochmal nachschauen wollen, was es gab - Erik +%------------------------------------------------ + + + +%------------------------------------------------ +% Highlight boxes +% \begin{frame}{Blocks of Highlighted Text} +% In this slide, some important text will be \alert{highlighted} because it's important. Please, don't abuse it. + +% \begin{block}{Block} +% Sample text +% \end{block} + +% \begin{alertblock}{Alertblock} +% Sample text in red box +% \end{alertblock} + +% \begin{examples} +% Sample text in green box. The title of the block is ``Examples". +% \end{examples} +% \end{frame} + +%------------------------------------------------ +% Double columns +% \begin{frame}{Multiple Columns} +% \begin{columns} +% \begin{column}{0.45\textwidth} +% \colheader{Heading} +% \begin{enumerate} +% \item Statement +% \item Explanation +% \item Example +% \end{enumerate} +% \end{column} +% \begin{column}{0.45\textwidth} %%<--- here +% \colheader{Heading} +% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer lectus nisl, ultricies in feugiat rutrum, porttitor sit amet augue. Aliquam ut tortor mauris. Sed volutpat ante purus, quis accumsan dolor. +% \end{column} +% \end{columns} +% \end{frame} + +%------------------------------------------------ +% Theoerm (in highlighted box) and Equation in text +% \begin{frame}{Theorem} +% \begin{theorem}[Mass--energy equivalence] +% $E = mc^2$ +% \end{theorem} +% Equation in text +% \begin{equation} +% c^{2} = a^{2} + b^{2} +% \end{equation} +% \end{frame} + +%------------------------------------------------ +% Citations +% \begin{frame}[fragile] % Need to use the fragile option when verbatim is used in the slide +% \frametitle{Citation} +% An example of the \verb|\cite| command to cite within the presentation:\\~ + +% This statement requires citation \cite{Talaei2024}. +% \end{frame} + +%------------------------------------------------ +% Referenced +%\begin{frame}{References} + % Beamer does not support BibTeX so references must be inserted manually as below + % Vielleicht? Es unterstützt aber biblatex mit biber backend... + % keine Ahnung, warum laut templatebibtex nicht gehen soll... + % biblatex und ../chessbibliography.bib hinzugefügt, siehe unten für nocite +% \footnotesize{ +% \begin{thebibliography}{99} +% \bibitem[Smith, 2012]{p1} John Smith (2012) +% \newblock Title of the publication +% \newblock \emph{Journal Name} 12(3), 45 -- 678. + +% \bibitem[Doe, 2012]{p1} Joe Doe (2012) +% \newblock Title of the publication +% \newblock \emph{Journal Name} 12(3), 45 -- 678. +% \bibitem[Doe, 2013]{p} Jane Doe (2012) +% \newblock Title of the publication +% \newblock \emph{Journal Name} 12(3), 45 -- 678. +% \end{thebibliography} +% } +% \end{frame} + +% nicht mit \cite referenzierte Einträge, die auch unter Literatur erscheinen sollen +% mit Komma trennen, ohne Leerzeichen +\nocite{Talaei2024} +\begin{frame}%[allowframebreaks] + % Literatur kommt in ../chessbibliography.bib, bitte als biblatex formatieren + \frametitle{References} + \printbibliography +\end{frame} +%----------------------------------------------- +% Final PAGE +% \finalpagetext{Vielen Dank für Ihre Aufmerksamkeit} +\finalpagetext{Thank you for your Attention!} +%----------------------------------------------- +\makefinalpage +%----------------------------------------------- +\end{document} \ No newline at end of file diff --git a/report/assets/embedding.tex b/report/assets/embedding.tex new file mode 100644 index 0000000000000000000000000000000000000000..dedd9773c8b06a84ddbd05f3f057ce24e283d13a --- /dev/null +++ b/report/assets/embedding.tex @@ -0,0 +1,15 @@ +\lstset{style=mypythonstyle} +\begin{lstlisting}[language=Python, escapechar=!, float, caption=Ergänzung von LangChain um das Plugin für Ollama, label=lst:embedding] +# In $CHESS/src/database_utils/db_catalog/preprocess.py +... +!\colorbox{codegreen}{ from langchain\_ollama import OllamaEmbeddings }! +!\colorbox{codegreen}{ EMBEDDING\_FUNCTION = OllamaEmbeddings(model=\textquotedblleft mxbai-embed-large\textquotedblright) }! +... + +# In $CHESS/src/workflow/agents/information_retriever/tool_kit/retrieve_entity.py +!\colorbox{codegreen}{ from langchain\_ollama import OllamaEmbeddings }! +... +def __init__(self): + !\colorbox{codegreen}{ self.embedding\_function = OllamaEmbeddings(model=\textquotedblleft nomic-embed-text\textquotedblright) }! + ... +\end{lstlisting} \ No newline at end of file diff --git a/report/assets/evidence.tex b/report/assets/evidence.tex new file mode 100644 index 0000000000000000000000000000000000000000..ce761f0e00c80d1ccea41454d8884f7fd9a4c394 --- /dev/null +++ b/report/assets/evidence.tex @@ -0,0 +1,11 @@ +\lstset{style=mypythonstyle} +\begin{lstlisting}[language=Python, escapechar=!, float, caption=Änderungen an der Schnittstelle zum Laden der Datensätze, label=lst:evidence] +def initialize_tasks(self, dataset: List[Dict[str, Any]]): + ... + !\colorbox{codegreen}{if \textquotedblleft evidence\textquotedblright{} not in data: }! + !\colorbox{codegreen}{data = \{\textquotedblleft evidence\textquotedblright: \textquotedblleft (No hint provided)\textquotedblright, **data\} }! + + !\colorbox{codegreen}{if \textquotedblleft SQL\textquotedblright{} not in data and \textquotedblleft query\textquotedblright{} in data: }! + !\colorbox{codegreen}{data = \{\textquotedblleft SQL\textquotedblright: data[\textquotedblleft query\textquotedblright], **data\} }! + +\end{lstlisting} \ No newline at end of file diff --git a/report/assets/implRevise.tex b/report/assets/implRevise.tex new file mode 100644 index 0000000000000000000000000000000000000000..2785c707902b29778a7b57b1a5f2ebd39ff1f588 --- /dev/null +++ b/report/assets/implRevise.tex @@ -0,0 +1,24 @@ +\lstset{style=mypythonstyle} +\begin{lstlisting}[language=Python, escapechar=!, float, caption=Änderungen an der Implementierung des revise-Tools, label=lst:revise] +def __init__(self, ... !\colorbox{codegreen}{sampling\_count: int = 1}! ): + ... + !\colorbox{codegreen}{self.sampling\_count = sampling\_count}! + +def _run(self, state: SystemState): + ... + response = async_llm_chain_call( + prompt = ... + ... + sampling_count=!\colorbox{codegreen}{self.sampling\_count}! + ) + response = [r[0] for r in response] + + !\colorbox{codegreen}{revised\_sqls = [res[\textquotedblleft revised\_SQL\textquotedblright] for res in response]}! + for target_SQL_meta_info in target_SQL_meta_infos: + if target_SQL_meta_info.need_fixing: + !\colorbox{codegreen}{revised\_sql = DatabaseManager().aggregate\_sqls(sqls=revised\_sqls)}! + !\colorbox{codegreen}{chosen\_res = next(res for res in response if res[\textquotedblleft revised\_SQL\textquotedblright] == revised\_sql)}! + !\colorbox{codegreen}{refinement\_response = \{ \textquotedblleft refined\_sql\_query\textquotedblright: chosen\_res[\textquotedblleft revised\_SQL\textquotedblright] \} }! + else + ... +\end{lstlisting} \ No newline at end of file diff --git a/report/assets/python_lstlisting.tex b/report/assets/python_lstlisting.tex new file mode 100644 index 0000000000000000000000000000000000000000..989e82b8c098bc649ffa442bcf4c3b43f5b668d7 --- /dev/null +++ b/report/assets/python_lstlisting.tex @@ -0,0 +1,32 @@ +\usepackage{listings} + +\usepackage{color} +\definecolor{light-gray}{gray}{0.80} + +\usepackage{xcolor} +%New colors defined below +\definecolor{codegreen}{rgb}{0,0.6,0} +\definecolor{codegray}{rgb}{0.5,0.5,0.5} +\definecolor{codepurple}{rgb}{0.58,0,0.82} +\definecolor{backcolour}{rgb}{0.95,0.95,0.92} + +%Code listing style named "mystyle" +\lstdefinestyle{mypythonstyle}{ + %backgroundcolor=\color{backcolour}, + commentstyle=\color{codegreen}, + keywordstyle=\color{magenta}, + numberstyle=\tiny\color{codegray}, + stringstyle=\color{codepurple}, + basicstyle=\ttfamily\footnotesize, + breakatwhitespace=false, + breaklines=true, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + frame=single, +} \ No newline at end of file diff --git a/report/assets/tentative.tex b/report/assets/tentative.tex new file mode 100644 index 0000000000000000000000000000000000000000..ef575c0571d46d472d7cddb570c49a0a9b83e6fe --- /dev/null +++ b/report/assets/tentative.tex @@ -0,0 +1,14 @@ + + +\lstset{style=mypythonstyle} +\begin{lstlisting}[language=Python, escapechar=!, float, caption=Änderungen an der Implementierung des GC Agenten, label=lst:tentative] +class GenerateCandidate(Tool): + def _run(self, state: SystemState): + ... + request_kwargs = { + "DATABASE_SCHEMA": state.get_schema_string(schema_type="!\colorbox{codegreen}{tentative}!", + "QUESTION": state.task.question, + "HINT": state.task.evidence, + } + ... +\end{lstlisting} \ No newline at end of file diff --git a/report/chessbibliography.bib b/report/chessbibliography.bib new file mode 100644 index 0000000000000000000000000000000000000000..8f98870d38841241fff5d31058372e53d12a648d --- /dev/null +++ b/report/chessbibliography.bib @@ -0,0 +1,128 @@ +@article{lee2024mcs, + title={MCS-SQL: Leveraging Multiple Prompts and Multiple-Choice Selection For Text-to-SQL Generation}, + author={Lee, Dongjun and Park, Choongwon and Kim, Jaehyuk and Park, Heesoo}, + journal={arXiv preprint arXiv:2405.07467}, + doi={10.48550/ARXIV.2405.07467}, + year={2024} +} + +@article{bird, + title={Can LLm Already Serve as A Database Interface? A BIg Bench for Large-Scale Database Grounded Text-to-SQLs}, + author={Li, Jinyang and Hui, Binyuan and Qu, Ge and Yang, Jiaxi and Li, Binhua and Li, Bowen and Wang, Bailin and Qin, Bowen and Geng, Ruiying and Huo, Nan and Zhou, Xuanhe and Chenhao, Ma and Li, Guoliang and Chang, Kevin and Huang, Fei and Cheng, Reynold and Li, Yongbin}, + journal={Advances in Neural Information Processing Systems}, + pages={42330--42357}, + url={https://proceedings.neurips.cc/paper_files/paper/2023/file/83fc8fab1710363050bbd1d4b8cc0021-Paper-Datasets_and_Benchmarks.pdf}, + urldate={2025-02-24}, + volume={36}, + year={2023} +} + +@article{spider1, + title={Spider: A Large-Scale Human-Labeled Dataset for Complex and Cross-Domain Semantic Parsing and Text-to-SQL Task}, + author={Yu, Tao and Zhang, Rui and Yang, Kai and Yasunaga, Michihiro and Wang, Dongxu and Li, Zifan and Ma, James and Li, Irene and Yao, Qingning and Roman, Shanelle and others}, + journal={arXiv preprint arXiv:1809.08887}, + doi={10.48550/ARXIV.1809.08887}, + year={2018} +} + +@article{spider2, + title={Spider 2.0: Evaluating Language Models on Real-World Enterprise Text-to-SQL Workflows}, + author={Lei, Fangyu and Chen, Jixuan and Ye, Yuxiao and Cao, Ruisheng and Shin, Dongchan and Su, Hongjin and Suo, Zhaoqing and Gao, Hongcheng and Hu, Wenjing and Yin, Pengcheng and others}, + journal={arXiv preprint arXiv:2411.07763}, + doi={10.48550/ARXIV.2411.07763}, + year={2024} +} + +@Online{MxbaiEmbed2024, + author = {Lee, Sean and Shakir, Aamir and Koenig, Darius and Lipp, Julius}, + title = {Open Source Strikes Bread - New Fluffy Embedding Model}, + date = {2024-03-08}, + url = {https://www.mixedbread.com/blog/mxbai-embed-large-v1}, + urldate = {2025-02-27} +} + +@Article{Nussbaum2024, + author = {Nussbaum, Zach and Morris, John X. and Duderstadt, Brandon and Mulyar, Andriy}, + date = {2024-02-02}, + title = {Nomic Embed: Training a Reproducible Long Context Text Embedder}, + doi = {10.48550/ARXIV.2402.01613}, + eprint = {2402.01613}, + eprintclass = {cs.CL}, + eprinttype = {arXiv}, + abstract = {This technical report describes the training of nomic-embed-text-v1, the first fully reproducible, open-source, open-weights, open-data, 8192 context length English text embedding model that outperforms both OpenAI Ada-002 and OpenAI text-embedding-3-small on the short-context MTEB benchmark and the long context LoCo benchmark. We release the training code and model weights under an Apache 2.0 license. In contrast with other open-source models, we release the full curated training data and code that allows for full replication of nomic-embed-text-v1. You can find code and data to replicate the model at https://github.com/nomic-ai/contrastors.}, + copyright = {Creative Commons Attribution 4.0 International}, + keywords = {Computation and Language (cs.CL), Artificial Intelligence (cs.AI), FOS: Computer and information sciences}, + publisher = {arXiv}, + journal = {arXiv}, + year = {2024}, +} + +@Misc{Grattafiori2024, + author = {Grattafiori, Aaron and Dubey, Abhimanyu and Jauhri, Abhinav and Pandey, Abhinav and Kadian, Abhishek and Al-Dahle, Ahmad and Letman, Aiesha and Mathur, Akhil and Schelten, Alan and Vaughan, Alex and Yang, Amy and Fan, Angela and Goyal, Anirudh and Hartshorn, Anthony and Yang, Aobo and Mitra, Archi and Sravankumar, Archie and Korenev, Artem and Hinsvark, Arthur and Rao, Arun and {andere}}, + date = {2024}, + title = {The Llama 3 Herd of Models}, + doi = {10.48550/ARXIV.2407.21783}, + copyright = {arXiv.org perpetual, non-exclusive license}, + keywords = {Artificial Intelligence (cs.AI), Computation and Language (cs.CL), Computer Vision and Pattern Recognition (cs.CV), FOS: Computer and information sciences, FOS: Computer and information sciences}, + publisher = {arXiv}, +} + +@Misc{Talaei2024, + author = {Talaei, Shayan and Pourreza, Mohammadreza and Chang, Yu-Chen and Mirhoseini, Azalia and Saberi, Amin}, + title = {CHESS: Contextual Harnessing for Efficient SQL Synthesis}, + year = {2024}, + copyright = {Creative Commons Attribution Non Commercial Share Alike 4.0 International}, + doi = {10.48550/ARXIV.2405.16755}, + keywords = {Machine Learning (cs.LG), Artificial Intelligence (cs.AI), Databases (cs.DB), FOS: Computer and information sciences, FOS: Computer and information sciences}, + publisher = {arXiv}, +} + +@Online{DeepSeekNL2SQL2024, + author = {Talaei, Shayan and Pourreza, Mohammadreza}, + title = {AI4DS/NL2SQL\_DeepSeek\_33B}, + date = {2024-05-06}, + url = {https://huggingface.co/AI4DS/NL2SQL_DeepSeek_33B}, + urldate = {2025-02-27} +} + +@Online{ChessRepo2024, + author = {Talaei, Shayan and Pourreza, Mohammadreza}, + title = {CHESS}, + subtitle = {README -- CHESS: Contextual Harnessing for Efficient SQL Synthesis}, + date = {2024-11-13}, + url = {https://github.com/ShayanTalaei/CHESS}, + urldate = {2025-02-27} +} + +@online{SpiderLeaderbord, + author = {XLANG Lab}, + title = {{Spider 2.0} Evaluating Language Models on Real-World Enterprise Text-to-SQL Workflows}, + year = 2025, + url = {https://spider2-sql.github.io/}, + urldate = {2025-02-19} +} + +@article{seq2sql, + title={Seq2sql: Generating structured queries from natural language using reinforcement learning}, + author={Zhong, Victor and Xiong, Caiming and Socher, Richard}, + journal={arXiv preprint arXiv:1709.00103}, + doi={10.48550/ARXIV.1709.00103}, + year={2017} +} + +@article{typesql, + title={Typesql: Knowledge-based type-aware neural text-to-sql generation}, + author={Yu, Tao and Li, Zifan and Zhang, Zilin and Zhang, Rui and Radev, Dragomir}, + journal={arXiv preprint arXiv:1804.09769}, + doi={10.48550/ARXIV.1804.09769}, + year={2018} +} + +@article{towardscomplext2s, + title={Towards complex text-to-sql in cross-domain database with intermediate representation}, + author={Guo, Jiaqi and Zhan, Zecheng and Gao, Yan and Xiao, Yan and Lou, Jian-Guang and Liu, Ting and Zhang, Dongmei}, + journal={arXiv preprint arXiv:1905.08205}, + doi={10.48550/ARXIV.1905.08205}, + year={2019} +} + diff --git a/report/content/01Einleitung.tex b/report/content/01Einleitung.tex new file mode 100644 index 0000000000000000000000000000000000000000..ebc272ca1e7ab6c6810e8d95daa0109966b2559e --- /dev/null +++ b/report/content/01Einleitung.tex @@ -0,0 +1,32 @@ +\section{Einleitung} +%\minisec{Introduction} +Diese Arbeit repliziert den Artikel \citetitle{Talaei2024} von \Citeauthor{Talaei2024} \cite{Talaei2024}, welcher sich mit der Generierung von SQL Anfragen aus Fragen in natürlicher Sprache beschäftigt. Im Bereich des Machine Learning existieren bereits viele Arbeiten zu solchen Text-To-SQL Problemen \cite{seq2sql,typesql,towardscomplext2s}. +Durch den immensen Zuwachs an Daten und die steigende Komplexität von Datenbanksystemen können viele dieser Ansätze, selbst mit viel Rechenkapazität, der Problemstellung nicht mehr gerecht werden. In \cite{bird} wurde ein Unterschied in der \textit{Execution accuracy} von $40\%$ zwischen generierten und händisch geschriebenen SQL-Anfragen auf komplexen Datenbanken ermittelt. Aller Voraussicht nach wird die Menge an komplexen Daten in den nächsten Jahren nicht abnehmen. Die replizierte Arbeit stellt einen effektiveren Ansatz zur Lösung dieses Problems vor. + +Neue Text-To-SQL Lösungen müssen den folgenden Herausforderungen gerecht werden \cite[vgl.][]{Talaei2024}: +\begin{enumerate}[label=(\roman*)] + \item Großer Umfang der Daten + \item Generieren der SQL-Anfragen für große Datenbank-Schemata + \item Verifikation der generierten Anfragen + \item Mehrdeutigkeiten in den Fragestellungen auflösen +\end{enumerate} +Zur Lösung dieser Probleme wird in \cite{Talaei2024} ein neues Multi-Agent-Framework präsentiert, welches mithilfe von Large Language Models (LLMs) eine effektivere Generierung der SQL-Anfragen unter den genannten Herausforderungen ermöglichen soll. Zudem wird die Adaptivität dieses Ansatzes hervorgehoben, in Anwendungsszenarien mit unterschiedlichen Budgets und Rechenkapazität der LLMs, verschiedene Systemkonfigurationen zu ermöglichen. Dadurch sollen SQL-Anfragen auch mit limitierten Ressourcen auf komplexen Datenbanken generiert werden können. + +Wir sehen in diesem Ansatz viel Potenzial, neuen Herausforderungen mit aktuellen Technologien zu begegnen. Die experimentellen Untersuchungen in \cite{Talaei2024} erzielen wettbewerbsfähige Ergebnisse bei anerkannten Text-To-SQL Benchmarks. Diese Ergebnisse wollen wir zunächst auf einem kleinen Subsampled Development Set (SDS) basierend auf dem BIRD-Datensatz \cite{bird}, später auf dem Spider-Datensatz \cite{spider1} reproduzieren. + +Aufgrund monetärer Beschränkungen ist es uns nicht möglich, Experimente mit proprietären Modellen, wie sie in \cite{Talaei2024} genutzt wurden, zu replizieren. Dies führt dazu, dass wir den vollständigen BIRD-Datensatz und den synthetisch erzeugten industrial-scale Datensatz aus \cite{Talaei2024} nicht testen können. Außerdem entfallen für unsere Experimente die Tests mit Konfigurationen für leistungsstarke LLMs. Daher möchten wir in dieser Arbeit einen qualitativen Vergleich der Ergebnisse aus \cite{Talaei2024} mit Open-Source Modellen durchführen, wobei wir hoffen, ähnliche Ergebnisse zu erzielen. + +Darüber hinaus testen wir verschiedene Konfigurationen des Candidate Generators, einem der vier Agenten des Frameworks. Dadurch werden wir neue Einblicke über die Konfigurationsparameter der genutzten LLMs erhalten. + +Nachfolgend beschreiben wir in \autoref{sec:Scope} ausführlich den Umfang unserer Replikation und formulieren die untersuchten Behauptungen. In \autoref{sec:methoden} gehen wir detailliert auf den Aufbau der Experimente und die genutzten Ressourcen ein. Die Ergebnisse präsentieren wir schließlich in \autoref{sec:ergebnisse} und diskutieren diese dann in \autoref{sec:diskussion}. % Auf die Kommunikation mit den Autoren + +% TODO +% - Subsampled Spider oder voller Spider (Z. 15) + +%%% Hinneburgs Vorschläge: +%Beschreiben sie mit ein paar Sätzen den Kontext der replizierten/reproduzierten Arbeit. Es werden höchstens drei bis vier Paragraphen erwartet. Sie sollen hinreichend erklären, was das das Problem ist, das der Artikel bearbeitet, warum es ein wichtiges Problem ist. Fassen sie die Beträge des replizierten/reproduzierten Artikels zusammen. Zitieren sie in diesem Abschnitt relevante wissenschaftliche Arbeiten. Beschreiben, warum wir das Paper Replizieren wollen/ warum es spannend ist, dieses Paper zu replizieren. + +% Was ist der Beitrag des replizierten Artikels? +% Welche Teile der Arbeit wurden für die Replikation ausgewählt? Begründen Sie die Auswahl. Warum wurden andere Teile der Arbeit nicht repliziert? +% Welche neuen Erkenntnisse erwarten Sie durch die geplante Reproduktion? Was steht davon nicht in dem replizierten Artikel? +% Was ist der Beitrag bzw. sind die Beiträge Ihres Artikels über die Reproduktion der ausgewählten Arbeit? \ No newline at end of file diff --git a/report/content/02Umfang.tex b/report/content/02Umfang.tex new file mode 100644 index 0000000000000000000000000000000000000000..9598eec1db843c4e6a89f274464628b5d6d0d644 --- /dev/null +++ b/report/content/02Umfang.tex @@ -0,0 +1,87 @@ +\section{Umfang der Replikation/Reproduktion} +\label{sec:Scope} +Zunächst erklären wir das Multi-Agent-Framework und stellen die experimentellen Ergebnisse aus \cite{Talaei2024} vor. Danach motivieren wir die Auswahl der Experimente für unsere Replikation und formulieren schließlich die konkreten Behauptungen, welche wir experimentell untersuchen werden. +% ------------------------------------------------------------------ +% Allgemeine Behauptungen/Hypothesen/Experimente der Arbeit erklären +% ------------------------------------------------------------------ +\subsection{Experimente der Autoren} +In \cite{Talaei2024} wird ein neuer Lösungsansatz für Text-To-SQL Probleme präsentiert, welcher insbesondere für komplexe Datenbanken mit vielen Tabellen und Spalten entwickelt wurde. Dieser Ansatz versucht das Problem mit einem Multi-Agent-Framework und vier spezialisierten Agenten zu lösen. Die vier Agenten übernehmen dabei folgende Aufgaben: +\begin{enumerate} + \item \textbf{Information Retriever (IR)}: + \begin{itemize} + \item Analysieren der gestellten Frage des Nutzers mit LLM-Anfragen + \item Ermitteln der relevanten Entitäten und deren Kontext (DB-Schema, DB-Katalog) + \item Syntaktische- und semantische Ähnlichkeiten mit Lokalitätssensitivem Hashing (LSH) bestimmen % und Vektor-Datenbank + \end{itemize} + \item \textbf{Schema Selector (SS)}: + \begin{itemize} + \item Reduzieren von großen DB-Schemata in leichter zu erfassende Sub-Schemata + \item Auswählen benötigter Tabellen und Spalten mit LLM-Anfragen + \end{itemize} + \item \textbf{Candidate Generator (CG)}: Generieren, ausführen und überarbeiten von Kandidaten mit LLM-Anfragen + \item \textbf{Unit Tester (UT)}: + \begin{itemize} + \item Bewerten der Kandidaten mithilfe generierter Unit-Tests + \item Auswählen der finalen SQL-Anfrage + \end{itemize} +\end{enumerate} + +Text-To-SQL Modelle müssen in realen Anwendungsszenarien mit unterschiedlichen Ressourcenkapazitäten zurecht kommen. Dies schränkt die Nutzung einiger Modelle ein, da diese leistungsstarke LLMs benötigen. Aus diesem Grund bietet das Multi-Agent-Framework verschiedene verschiedene Konfigurationsmöglichkeiten an. Für die experimentellen Untersuchungen werden in \cite{Talaei2024} die folgenden zwei Varianten des Frameworks abgeleitet: +\begin{itemize} + \item $CHESS_{(IR,CG,UT)}$ - Konfiguriert für maximale Genauigkeit (mehr Rechenkapazität und stärkere LLMs) + \item $CHESS_{(IR,SS,CG)}$ - Konfiguriert für maximale Effizienz (limitierte Rechenkapazität und schwächere LLMs) +\end{itemize} +Die Bewertung der erzielten Ergebnisse auf unterschiedlichen Text-To-SQL Benchmarks erfolgt anhand der \textit{Execution accuracy ($EX$)}\footnote{Die Execution accuracy ist eine übliche Metrik für Text-To-SQL Benchmarks. Für jede Frage wird eine Liste von sogenannten \textit{gold-values} bereitgestellt, welche im Ergebnis der generierten Anfrage enthalten sein müssen. Die \textit{EX} stellt den Anteil der korrekt berechneten \textit{gold-values} im Verhältnis zu allen generierten SQL-Anfragen dar.}. Die experimentellen Ergebnisse aus \cite{Talaei2024} sind in \autoref{tab:performance} zusammengefasst. Beide Varianten des Frameworks können in dem jeweiligen Benchmark mit anderen Arbeiten mithalten. +\begin{table}[!tb] + \centering + \begin{tabular}{l|c|c|c} + % width must be set manually bc this cell is not the biggest cell + \diagbox[width=16em,trim=l]{Methode}{Datensätze} & BIRD test & BIRD dev & Spider\\ + \hline + Beste Methode (Stand 03/2025) & 77.14 \cite{bird} & 75.36 \cite{bird} & 91.2 \cite{spider1} \\ + \hline + $CHESS_{(IR,CG,UT)}$ & 68.31 & 71.10 & -\\ + $CHESS_{(IR,SS,CG)}$ + proprietär & 66.69 & 65.00 & 87.2 \\ + $CHESS_{(IR,SS,CG)}$ + Open LLMs & - & 61.5 & -\\ + \hline + $\Delta EX$ = $EX_{\text{proprietär}}$ - $EX_{\text{OpenLLM}}$ & - & 3.5 & - \\ + \end{tabular} + \caption{\textit{Execution accuracy} verschiedener Framework-Konfigurationen auf unterschiedlichen Benchmarks \cite[siehe][Tabelle 1,2,3]{Talaei2024}} + \label{tab:performance} +\end{table} + +% Motivieren und begründen sie ihre Auswahl +\subsection{Motivation} +Das erste Ziel unserer Arbeit soll die Replikation der Ergebnisse aus \autoref{tab:performance} auf den verschiedenen Benchmarks sein. Da wir die Experimente nur mit beschränkten Ressourcen durchführen können und keinen Zugang zu proprietären LLMs haben, sind wir insbesondere an der Replikation der Konfigurationsvariante $CHESS_{(IR,SS,CG)}$ mit quelloffenen LLMs interessiert und müssen andere ressourcenintensive Konfigurationen weitestgehend ausschließen. Zudem wird in \cite{Talaei2024} mehrfach die Adaptivität des vorgestellten Ansatzes an ressourcenbeschränkte Umgebungen hervorgehoben. Daher erwarten wir für die genannte Konfiguration mit quelloffenen LLMs ähnliche Ergebnisse zu erzielen. + +In den Ablations-Studies des replizierten Artikels wird zudem ein signifikanter Einfluss des revise-Tools beschrieben \cite[siehe][Tabelle 4]{Talaei2024}, welches fehlerhaft generierten SQL-Anfragen überarbeitet. Dies wollen wir unter Verwendung quelloffener LLMs verifizieren. + +Für den Spider-Datensatz wird in \cite{Talaei2024} nur ein Ergebnis mit proprietären LLMs angeführt. Wir wollen darüber hinaus auch einen Wert mit quelloffenen LLMs beitragen und erwarten, wie schon bei den proprietären LLMs gezeigt, eine höhere \textit{Execution Accuracy}, als für den BIRD-Datensatz zu erhalten. + +\subsection{Behauptungen und eigener Beitrag} +Mit den beschriebenen Experimenten wollen wir die folgenden Behauptungen überprüfen: +\begin{itemize} + \item \textbf{Behauptung 1:} \textit{Das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ erzielt mit quelloffenen LLMs eine $EX$ auf dem SDS-Datensatz von annähernd $EX=61.5$.} \label{txt:beh1bird} + \item \textbf{Behauptung 2:} \textit{Das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ mit quelloffenen LLMs wird durch das revise-Tool signifikant beeinflusst und erzielt auf dem SDS-Datensatz eine Differenz in der Execution Accuracy ($\Delta EX$) zwischen einmalige Revision und keiner Revision von annähernd $\Delta EX = 61.22 - 57.82 = 3.40$.}\label{txt:beh2revision} + \item \textbf{Behauptung 3:} \textit{Das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ erzielt mit quelloffenen LLMs eine Differenz in der Execution Accuracy ($\Delta EX$) zwischen dem BIRD-dev und Spider-Datensatz von annähernd $\Delta EX = 65.00 - 61.5 = 3.50$.}\label{txt:beh3spider} +\end{itemize} + +\paragraph{Zu Behauptung 1, 2:} Unsere Ressourcenbeschränkung beinhaltet auch eine zeitliche Komponente, weshalb wir nicht den vollen BIRD-dev Datensatz testen können. Daher beschränken wir uns bei \hyperref[txt:beh1bird]{Behauptung 1} und \hyperref[txt:beh2revision]{Behauptung 2} auf den Subsampled Development Set (SDS) aus \cite{Talaei2024} mit 147, statt 1553 Frage-Anfrage Paaren, des BIRD-dev Datensatzes. Neben den unterschiedlichen Datenbanken sind in diesen reduzierten Datensatz auch unterschiedliche Schwierigkeitsgrade enthalten. Dennoch hoffen wir bei der Untersuchung von \hyperref[txt:beh1bird]{Behauptung 1} annähernd die \textit{Execution accuracy} von $EX=61.5$ aus \cite{Talaei2024} auf dem BIRD-dev Datensatz zu erreichen. + +\paragraph{Zu Behauptung 2:} In den Ablations-Studies von \cite{Talaei2024} wurde der Einfluss der verschiedenen Agenten und deren Tools auf die $EX$ der generierten Anfragen untersucht. Demnach soll das revise-Tool des Candidate Generators den größten Einfluss haben. Dieses überarbeitet generierte Anfragen, wenn bei deren Ausführung ein Fehler aufgetreten ist (z.B. Syntaxfehler), das Ergebnis leer oder unerwartet war. Der \texttt{sampling\_count} gibt dabei die Anzahl durchgeführter Revisionen an. Mit \texttt{sampling\_count = 1} konnte in \cite{Talaei2024} eine Verbesserung um $\Delta EX = 3.40$ gegenüber keiner Revision (\texttt{sampling\_count = 0}) erzielt werden. Diese Verbesserung versuchen wir mit quelloffenen LLMs zu replizieren. + +%Bei den beschriebenen Experimenten in \autoref{tab:performance} wurde pro fehlerhafter Anfrage mehrere Überarbeitungen parallel generiert und diese als gemeinsame Stichprobe genutzt. Das führt zu einer höheren Konsistenz der überarbeiteten Anfragen. Für unser Experiment zu \hyperref[txt:beh2revision]{Behauptung 2} beschränken wir die Größe dieser Stichprobe auf 1, um ein vergleichbares Ergebnis zu erhalten. + +\paragraph{Zu Behauptung 3:} In einem dritten Experiment wollen wir \autoref{tab:performance} um einen Wert für $CHESS_{(IR,SS,CG)}$ mit quelloffenen LLMs auf dem Spider-Datensatz ergänzen. Wir erwarten eine Differenz zwischen der $EX$ der proprietären Modelle und der $EX$ der quelloffenen Modelle von annähernd $\Delta EX = 3.50$ zu erreichen, wie es bei dem BIRD-dev Datensatz in \cite{Talaei2024} ermittelt wurde. Die \hyperref[txt:beh3spider]{Behauptung 3} ergibt sich damit nicht aus den Behauptungen des Originalpapers, sondern ist der Beitrag unserer Arbeit. + +%%% Hinneburgs Vorschläge: +%\paragraph{Erkläre Behauptung} +%\enquote{Erklären sie die Behauptungen/Hypothesen/Experimente des Artikels, die sie für ihre Replikation/Reproduktion ausgewählt haben.} +%\paragraph{Motivation/ Begründung der Auswahl} +%\enquote{Motivieren und begründen sie ihre Auswahl. Es ist sinnvoll, wenn sie sich auf die Behauptung konzentrieren, die der Hauptbeitrag des Artikels ist.} +%\paragraph{Umfang Replikation abstecken} +%\enquote{Stecken sie den Umfang ihrer Replikation/Reproduktion so klar wie möglich ab. Die Behauptungen ihres Berichts sollten durch die Ergebnisse ihrer Experimente unterstützt oder widerlegt werden.} +%\paragraph{Behauptungen eindeutig aufführen} +%\enquote{Führen sie eindeutig die Behauptungen auf, die sie in ihrer Arbeit untersuchen.} +%\paragraph{Beschreibung Beiträge unserer Arbeit} +%\enquote{Beschreiben sie was die Beiträge ihrer Arbeit sind.} \ No newline at end of file diff --git a/report/content/03Methoden.tex b/report/content/03Methoden.tex new file mode 100644 index 0000000000000000000000000000000000000000..c4cfa3e13bc0b83800df250b998a7e93131b322b --- /dev/null +++ b/report/content/03Methoden.tex @@ -0,0 +1,158 @@ +\section{Methoden} +\label{sec:methoden} +In diesem Abschnitt beschreiben wir den Aufbau unserer Experimente und die genutzten Ressourcen. Dazu gehen wir zunächst näher auf die einzelnen Agenten des Frameworks und deren Verwendung in den abgeleiteten Varianten ein. + +\subsection{Modellbeschreibung} +%\minisec{Model descriptions} +%\enquote{Beschreiben sie die Modelle, die im Originalartikel genutzt werden, einschließlich der Architektur, der Zielfunktion und der Parameter.} +\paragraph{Multi-Agent-Framework} +Die größte Herausforderung bei Text-To-SQL Problemen auf komplexen Datenbanken ist der Umgang mit den vielen Informationen und verschiedensten Dateiformaten, welche den LLMs zur Verfügung gestellt werden. Hinzu kommen Mehrdeutigkeiten in den Fragestellungen und innerhalb der bereitgestellten Informationen (z.B. Spalte \textit{id}). Aus diesem Grund wird in \cite{Talaei2024} ein Multi-Agent-Framework präsentieren, welches die Aufgabenstellung in vier Teilprobleme zerlegt und diese mit spezialisierten Agenten löst. Dadurch können die vielen Informationen zielgerichteter genutzt und die Komplexität großer Datenbank-Schemata leichter erfasst werden. Jeder Agent bearbeitet die ihm zugeteilten Aufgaben mit speziellen Anfragen an ein LLM \cite[siehe][Anhang C]{Talaei2024}. + +Im folgenden beschreiben wir kurz die Funktionsweise der vier Agenten, deren Aufgaben wir bereits in Kapitel \ref{sec:Scope} ausführlicher dargestellt haben. + +Der \textbf{Information Retriever} extrahiert aus der Fragestellung zunächst wichtige Schlüsselwörter, Entitäten und erwähnte Spaltennamen mit einer \textit{few-shot} Anfrage an ein LLM. Anschließend werden ähnliche Entitäten, Spalten und Werte in der Datenbank gesucht. Dazu wird die syntaktische Ähnlichkeit von Werten mithilfe von Lokalitätssensitivem Hashing (LSH) bestimmt. Semantische Informationen über den Kontext der Daten können dabei helfen, Mehrdeutigkeiten aufzulösen und nur relevante Daten an die anderen Agenten weiterzugeben. Der Kontext der Daten wird mithilfe des Datenbank Katalogs, Metadaten des Schemas und Beschreibungen der Spalten ermittelt. + +Um einen geordneten Informationsfluss zwischen den Agenten zu ermöglichen, wird eine interne Repräsentation der Datenbank erzeugt und beliebig verändert. Der \textbf{Schema Selector} wählt die benötigten Tabellen und Spalten zum Generieren der SQL-Anfrage mit Hilfe von \textit{few-shot} Anfragen aus. Dabei wird die interne DB-Repräsentation stark reduziert. + +Nachdem nun von den vielen Daten vom Anfang nur noch die relevanten Tabellen und Spalten übrig geblieben sind generiert der \textbf{Candidate Generator} mithilfe eines weiterem LLM Aufruf die SQL-Anfrage. Anschließend wird die SQL-Anfrage auf der internen DB-Repräsentation ausgeführt und gegebenenfalls einem revise-Tool übergeben, welches mit einem LLM Aufruf die fehlerhafte Anfrage überarbeitet. + +Der CG kann auch mehrere mögliche SQL-Anfrage generieren. Dann ist es die Aufgabe des \textbf{Unit Tester} die passenste Anfrage auszuwählen. Dazu generiert der Unit Tester für jede Frage $k$ viele Unit Tests, sodass nur eine korrekte SQL-Anfrage diese Tests erfüllt. Dann werden die verschiedenen Kandidaten mithilfe von LLM Aufrufen getestet und bewertet. Schließlich wird die finale SQL-Anfrage ausgewählt. + +\paragraph{Framework Varianten} +In dem replizierten Artikel wird die Notwendigkeit hervorgehoben, Systeme für verschiedene Anwendungsszenarien konfigurieren zu können. Dabei wird vor allem die verfügbare Rechenkapazität und Stärke der LLMs betrachtet. Die Experimente in \cite{Talaei2024} werden mit zwei konträr konfigurierten Varianten des Frameworks durchgeführt: eine für maximale Effektivität ($CHESS_{(IR,CG,UT)}$) und eine für maximale Effizienz ($CHESS_{(IR,SS,CG)}$). Diese unterscheiden sich im wesentlichen darin, dass sie für viel/wenig Rechenkapazität und starke/schwache LLMs ausgelegt sind. Wie die Namen der Varianten bereits erkennen lassen, unterscheiden sie sich auch in den verwendeten Agenten. + +Überraschenderweise nutzt die $CHESS_{(IR,CG,UT)}$ Variante für viel Rechenkapazität nicht den Schema Selector Agent. Dies wird in \cite{Talaei2024} damit erklärt, dass aktuelle Benchmarks wie der BIRD-Datensatz eher kleinere Datenbanken beinhalten, wodurch der Overhead des Schema Selector Agent nicht benötigt wird und sogar zu einer Reduzierung der Leistung führt. Die Bedeutung des Schema-Linkings für komplexe Datenbanken wird in \cite{Talaei2024} mit einem anderen Experiment auf einem synthetisch erzeugten Datensatz gezeigt, für den alle vier Agenten benötigt werden. + +In unserer Replikation nutzen wir nur die $CHESS_{(IR,SS,CG)}$ Variante, bei der auf den Unit Tester verzichtet wurde. Dadurch werden insgesamt weniger LLM Anfragen benötigt, wodurch unsere limitierten Ressourcen besser genutzt werden. Zudem generiert der Candidate Generator nur einen Kandidaten, welcher dann auch als finale SQL-Anfrage genutzt wird. Das revise-Tool innerhalb des CGs wird aber trotzdem verwendet. + +\paragraph{LLM Modelle} +In unserer Konfiguration nutzen wir analog zu \cite{Talaei2024} \textit{Llama-3-70B} \cite{Grattafiori2024} für: +\begin{itemize} + \item Die Agenten Information Retriever, Schema Selector und Candidate Generator selbst, + \item Die Tools \textit{extract\_keywords} und \textit{retrieve\_context} des Information Retrievers, + \item Die Tools \textit{filter\_column}, \textit{select\_tables} und \textit{select\_columns} und + \item Das Tool \textit{revise}. +\end{itemize} +Im Candidate Generator verwenden wir für das Tool \textit{generate\_candidate} das in \cite{Talaei2024} nachtrainierte Modell \textit{NL2SQL\_DeepSeek\_33B} \cite{DeepSeekNL2SQL2024}. + +Zusätzlich werden in der Vorberchnung und im Tool \textit{retrieve\_entity} des Information Retrievers Embedding Modelle verwendet. Diese werden in \cite{Talaei2024} nur für die proprietären Modelle beschrieben, weshalb wir für die quelloffenen Modelle solche nutzen, die mit den Embedding Modellen der proprietären Modellen vergleichbare sind: In der Vorberechnung verwenden wir \textit{mxbai-embed-large} \cite{MxbaiEmbed2024} und für das \textit{retrieve\_entity} Tool \textit{nomic-embed-text} \cite{Nussbaum2024}. + +\subsection{Datenbeschreibung} +%\minisec{Data descriptions} +%\enquote{Beschreiben sie die Datenmengen, die sie genutzt haben und wie sie sie bekommen haben.} + +\paragraph{BIRD} Der BIRD Benchmark (BIg Bench for LaRge-scale Database Grounded Text-to-SQL Evaluation) \cite{bird} beinhaltet $12.751$ einzigartige Fragen, verteilt über $95$ Datenbanken. Die Daten stammen aus realen Anwendungen und enthalten mitunter komplizierte Formate. Zusätzlich werden Kontextinformationen und externes Wissen (Evidence) bereitgestellt, welche für die Generierung der Anfragen genutzt werden darf. Die Datensätze können von der offiziellen Webseite\footnote{BIRD: \url{https://bird-bench.github.io/}} herunter geladen werden. +% https://bird-bench.github.io/ + +\paragraph{Subsampled Development Set} Dieser Datensatz wurde in \cite{Talaei2024} für weitere Experimente aus dem BIRD \textit{development-set} generiert. Er enthält $10\%$ der Fragen aus dem \textit{dev}-Set und hat 147 Frage-Anfrage Paare, wovon $81$ leicht, $54$ moderat und $12$ schwer sind. Diese Daten werden über das offizielle Github-Repository\footnote{SDS: \url{https://github.com/ShayanTalaei/CHESS}} des Artikels bereitgestellt. + +\paragraph{Spider} +Der Spider-Datensatz \cite{spider1} ist eine umfangreiche, komplexe und domänenübergreifende Sammlung für die Text-to-SQL-Forschung. Er umfasst 10.181 natürlichsprachliche Fragen sowie 5.693 einzigartige und anspruchsvolle SQL-Abfragen, die auf 200 verschiedenen Datenbanken basieren. Insgesamt decken diese Datenbanken 138 unterschiedliche Domänen ab. Der Datensatz steht über das offizielle GitHub-Repository\footnote{Spider: \url{https://yale-lily.github.io/spider}} zum Download bereit. Aus dem Spider-Datensatz verwenden wir das \textit{test}-Set. +% https://yale-lily.github.io/spider + +\paragraph{Subsampled Spider} +Bei der Durchführung unserer Experimente mussten wir feststellen, dass wir mit dem kompletten Spider-Datensatz die bereitgestellten Ressourcen über mehrere Tage blockieren würden. Mit Rücksicht auf andere Nutzer haben wir uns dazu entschieden, zunächst nur eine Teilmenge des Datensatzes für unsere Experimente zu nutzen. Dabei haben wir uns an dem SDS-Datensatz orientiert und von allen Datenbanken jeweils $10\%$ der Fragen zufällig ausgewählt. Damit reduziert sich der Datensatz auf 229 Frage-Anfrage Paare. + +\subsection{Hyperparameter} % Hypa-Parameter :) +%\minisec{Hyperparameters} +% \enquote{Beschreiben sie, wie sie Hyperparameter gesetzt haben. Welche Quellen haben sie für die konkreten Werte genutzt (z.B. den Forschungsartikel, Code oder sie hatten eine wohlbegründete Vermutung, educated guess).} +Die standardmäßige Konfiguration von Ollama sieht eine Kontextlänge von 2048 Token vor. Diese haben wir für \textit{Llama-3-70B} auf die maximal mögliche Kontextlänge von 8192 erhöht, basierend auf den Modell-Ablationen der Autoren: \enquote{[...] we can utilize +an open-source LLM with a small context window size, specifically Llama-3 with only 8K token} \cite[Anhang D.2]{Talaei2024} +Die Kontextlänge des \textit{NL2SQL\_DeepSeek\_33B} Modells haben wir auf die im Quellcode beschriebene Länge von 8192 Token gesetzt. + +Im Quellcode der vorhandenen Konfigurationen der Autoren wurden die Temperaturen der Modelle vorgegeben -- für den LLM Aufruf von \textit{extract\_keywords} der Wert $0.2$ und für den LLM Aufruf von \textit{generate\_candidate} der Wert $0.01.$ Die übrigen Temperaturen sind auf den Standardwert $0.0$ gesetzt. + +Als Datentyp für \textit{NL2SQL\_DeepSeek\_33B} haben wir das im Quellcode gegebene \textit{bfloat16} genutzt \cite{ChessRepo2024}. Sonstige Hyperparameter haben wir auf den Standardwerten von \textit{Ollama} und \textit{vLLM} belassen, sofern diese nicht ebenfalls durch den Quellcode der Autoren beeinflusst werden. + +% TODO +% - N-Gramms erwähnen +% - Temperaturen +% --> eventuell 2-3 Sätze ergänzen + +\subsection{Implementierung} +%\minisec{Implementation} +% \enquote{Beschreiben sie, ob sie vorhandenen Code oder eigenen Code genutzt haben Stellen sie Links zum Code bereit und beschreiben sie welche Programmiersprachen und Pakete genutzt wurden.} +Das von den Autoren bereitgestellte GitHub-Repository \cite{ChessRepo2024} wurde für diese Replikation in ein eigenes Repository\footnote{GitLab-Repository: \url{https://gitlab.informatik.uni-halle.de/aktxt/re-chess}} übernommen. Für die lokale Ausführung der Embedding-Modelle und \linebreak\textit{Llama-3-70B} nutzen wir das Framework \textit{Ollama} in der aktuell verfügbaren Version und für \textit{NL2SQL\_DeepSeek\_33B} die Bibliothek \textit{vLLM} in der von den Autoren vorgeschlagenen und mit den übrigen Python-Paketen kompatiblen Version 0.3.3. Dazu mussten wir \textit{LangChain} um das Plugin für \textit{Ollama} ergänzen, wie es in \autoref{lst:embedding} dargestellt ist. + +\input{assets/embedding} + +Neben den Konfigurationen der Framework-Varianten haben wir zusätzlich einige Stellen im Quellcode anpassen müssen, ohne die unsere Experimente nicht mit dem Code der Autoren durchführbar wären. + +Für unsere Experimente mit dem revise-Tool mussten wir dieses konfigurierbar machen, da in der aktuellen Version der Autoren der \texttt{sampling\_count} auf eins festgesetzt ist und die generierte Anfrage stets durch die Überarbeitete ersetzt wird. Unsere Änderungen sind in \autoref{lst:revise} farblich hervorgehoben. Neben der Einführung des Parameters \texttt{sampling\_count}, mussten wir von den generierten Revisionen eine finale Anfrage auswählen. Dazu haben wir die bereits vorhandene Methode \texttt{aggregate\_sqls()} genutzt, welche die Revisionen in ein Cluster einfügt und von dem größtem Cluster die kürzeste Anfrage auswählt. Dieses Verfahren kam in einer älteren Version des CHESS-Frameworks zum Einsatz. + +\input{assets/implRevise} + +Eine weitere Änderung betrifft die Schnittstelle zum Laden der Datensätze der verschiedenen Benchmarks. Hier wird explizit ein \texttt{evidence} Parameter angefordert. Dieser wird aber nur im BIRD-Datensatz genutzt. Für unsere Tests mit dem Spider-Datensatz mussten wir diesem Parameter optional machen. Außerdem wird nun das \textit{Retrieve\_Context} Tool des IR nicht mehr benötigt. Die Änderungen sind in \autoref{lst:evidence} dargestellt. + +\input{assets/evidence} + +Schließlich haben wir aus den geschlossenen Issues des original Repository erfahren, dass es einer Änderung am GC Agenten benötigt, damit dieser das reduzierte Datenbank Schema nutzt und nicht auf das Ursprüngliche zurück greift. Andernfalls wären die Berechnungen des Information Retrievers und Schema Selectors nutzlos. Die Änderungen in \autoref{lst:tentative} sind gering, haben aber einen enormen Einfluss auf die \textit{Execution accuracy}. Erste Testläufe ohne diesen Parameter erreichten eine \textit{Execution accuracy} von ungefähr $EX=30$. Diese fehlerhaften Testläufe haben wir verworfen und nur jene mit gesetztem Parameter in diese Arbeit übernommen. + +\input{assets/tentative} + +% TODO - E: repo aufräumen, verlinken +% Notiz: https://www.acm.org/publications/policies/artifact-review-and-badging-current ACM badges für die Zukunft + +\subsection{Aufbau der Experimente} +%\minisec{Experimental setup} +%\enquote{Erklären sie, wie sie ihre Experimente durchgeführt haben. Was für Ressourcen haben sie verwendet, z.B. GPU/CPU-Ressourcen. Verlinken sie ihren Code und Notebooks. } +Die Experimente führen wir mit der $CHESS_{(IR,SS,CG)}$ Variante durch, welche mithilfe einer yaml-Datei konfiguriert wird. Dort haben wir die zu verwendenden Agenten, deren Tools, sowie die verwendeten LLMs und deren Parameter angegeben. Hier wird unter anderem auch die Anzahl der Kandidaten und Revisionen festgelegt. In allen Experimenten generieren wir nur einen Kandidaten. Zur Überprüfung von \hyperref[txt:beh1bird]{Behauptung 1} und \hyperref[txt:beh3spider]{Behauptung 3} lassen wir wie in \cite{Talaei2024} drei Revisionen durchführen. + +Für die verschiedenen Experimente benötigen wir die folgenden Konfigurationen der\linebreak $CHESS_{(IR,SS,CG)}$ Variante, welche in unserem Repository unter \texttt{\$Re-CHESS/CHESS/run/configs} zur Verfügung stehen: +\begin{itemize} + \item \texttt{CHESS\_IR\_SS\_CG\_BIRD\_OSS.yaml} - BIRD-Datensatz mit quelloffenen LLMs + \item \texttt{CHESS\_IR\_SS\_CG\_SPIDER\_OSS.yaml} - Spider-Datensatz mit quelloffenen LLMs +\end{itemize} + +Die Durchführung der Experimente erfolgt auf einem GPU-Server, welcher in zwei verschiedene Knoten unterteilt ist. Für die Ausführung von \textit{Ollama} und \textit{vLLM} wurde jeweils eine NVIDIA A100-SMX4-80GB Grafikkarte auf einem der Knoten reserviert. Dieser Knoten des GPU-Servers hat weiterhin zwei AMD Epyc 7662 Prozessoren mit je 64 physischen und 128 logischen Kernen, Grundtaktfrequenz von 2 GHz und Boostfrequenz von 3.3 GHz sowie 1024 GB Arbeitsspeicher. Davon haben wir 12 Kerne und 128 GB in unserer Job-Konfiguration mit Slurm reserviert. Der Knoten ist an ein Netzwerklaufwerk für das Cluster mit 1.8 TB Speicherplatz angebunden. Dieses Setup wurde für alle Experimente dieser Replikation verwendet. + +Die Durchführung steuern wir mithilfe selbst geschriebener Skripte, welche unter\linebreak \texttt{\$Re-CHESS/scripts} ebenfalls zur Verfügung stehen. Dabei stellt \texttt{copyrepo.sh} den Einstiegspunkt für einen Durchlauf dar. Dieses Skript downloaded und entpackt sowohl \textit{Ollama}, als auch die verwendeten Datensätze. Anschließend wird das \texttt{runchess.sh} Skript aufgerufen, welches zunächst die Vorverarbeitung und im Anschluss die angegebene Konfiguration startet. + +% TODO - E: Ollama, vLLM für finetuned, je eine, embed noch mit reingequetscht bei Ollama +% F: Ich weiß nicht genau was ich davon hier noch schreiben soll, dass wir diese verwenden wird in +% 3.4 schon geschrieben. Hier müsstest du evtl. noch mal ergänzen wenn dir da noch was fehlt. +% F: Ich habe versucht die wesentliche Funktion der Skripte wiederzugeben. Wenn ich etwas wichtiges vergessen habe +% müsstest du das noch ergänzen. + +\subsection{Ressourcen für Berechnungen} +%\minisec{Computational requirements} +Das verwendete Modell \textit{Llama-3-70B} benötigt mit der genutzten Kontextlänge von 8192 Token etwa 40 GB Grafikspeicher, während \textit{NL2SQL\_DeepSeek\_33B} etwa 70 GB benötigt. Die Embedding-Modelle werden von \textit{Ollama} gleichzeitig im Grafikspeicher gehalten, damit das Laden und Entladen die Ausführung nicht beeinflusst. Mit einer Größe von ca. 300 MB ist dies für \textit{nomic-embed-text} kein Problem, das Embedding Modell aus der Vorberechnung \textit{mxbai-embed-large} benötigt ebenfalls nur etwa 600 MB. Die Verwendung einer kleineren Grafikkarte für \textit{Llama-3-70B} ist mit \textit{Ollama} möglich, jedoch sind kleinere Grafikkarten nicht auf demselben Knoten des Clusters verfügbar. Daher haben wir uns dafür entschieden, den Kommunikationsoverhead zu reduzieren und die zwei Grafikkarten mit 80GB auf demselben Knoten zu nutzen. + +Im Vorfeld der Experimente haben wir damit gerechnet, dass die Laufzeit pro Durchlauf wenige Stunden beträgt, da wir kein \textit{fine tuning} betreiben und auch kein aufwendiges Training durchführen. Jedoch stellten wir fest, dass die Kommunikation zwischen den verschiedenen LLMs und der Einsatz der vielen verschiedenen Agenten zu einer deutlich höheren Laufzeit führen, als ursprünglich von uns angenommen. Für die benötigten CPU/GPU-Stunden bei den verschiedenen Experimenten ergeben sich die folgenden Werte: + +\textbf{Experiment zu \hyperref[txt:beh1bird]{Behauptung 1}:} +% 18:26:42 Laufzeit komplett +% 9 Tage 05:20:24 Laufzeit auf den CPU's +% 1 Kandidat u. 3 Rev. +Bei diesem Experiment wird, wie zuvor beschrieben, der SDS-Datensatz genutzt. Dabei wird pro Anfrage immer ein Kandidat generiert und sollte dieser nicht korrekt sein, drei Revisionen durchgeführt. Die totale Laufzeit betrug hier 18:26:42. Die akkumulierte Laufzeit über alle CPUs betrug bei diesem Experiment 9 Tage 05:20:24. Damit lag die für dieses Experiment benötigte Laufzeit deutlich über der im Vorfeld erwarteten Laufzeit. + +\textbf{Experiment zu \hyperref[txt:beh2revision]{Behauptung 2}:} +% 18:19:26 Laufzeit komplett +% 9 Tage 03:53:12 Laufzeit auf den CPU's +% 1 Kandidat u. 1 Rev. +% 18:22:14 Laufzeit komplett +% 9 Tage 04:26:48 Laufzeit auf den CPU's +% 1 Kandidat u. 0 Rev. +Auch bei den Experimenten zu \hyperref[txt:beh2revision]{Behauptung 2} hatten wir eine große Abweichung zu der erwarteten Zeit. Das Reduzieren der Revisionen brachte keine große Zeitersparnisse. Für das Experiment mit \texttt{sampling\_count = 1} wurden eine Laufzeit von 18:19:26 benötigt. Akkumuliert über alle CPUs beträgt die Laufzeit 9 Tage 03:53:12. Dies ist etwas weniger als zuvor bei Experiment 1, jedoch immer noch deutlich über der von uns erwarteten Laufzeit. Werden keine Revisionen generiert, steigt die Laufzeit sogar wieder leicht an auf 18:22:14, was einer akkumulierten Laufzeit von 9 Tagen 04:26:48 entspricht. + +\textbf{Experiment zu \hyperref[txt:beh3spider]{Behauptung 3}:} +% 09:03:21 Laufzeit komplett +% 4 Tage 12:40:12 Laufzeit auf den CPU's +% STS, mxbai, nomic: 1 Kandidat u. 3 Rev. +% 09:47:04 Laufzeit komplett +% 4 Tage 21:24:48 Laufzeit auf den CPU's +% STS, Llama3-70B: 1 Kandidat u. 3 Rev. +Die Experimente von \hyperref[txt:beh3spider]{Behauptung 3} haben wir zunächst auf dem Subsampled Spider Datensatz durchgeführt, welcher nochmal kleiner als der SDS-Datensatz ist. Deshalb rechneten wir auch mit einer deutlich geringeren Laufzeit als zuvor. Der Ausgang der Experimente bestätigte diese Annahme. Bei einem generierten Kandidaten und drei Revisionen, zusammen mit \textit{Llama-3-70B} als Embedding-Modell, wurde eine Laufzeit von 09:47:04 benötigt, was einer akkumulierten Laufzeit von 4 Tagen 21:24:48 entspricht. Verwendet man die Embedding-Modelle \textit{mxbai-embed-large} und \textit{nomic-embed-text} beträgt die Laufzeit 09:03:21, was einer akkumulierten Laufzeit von 4 Tagen 21:24:48 entspricht. + +% ? Laufzeit komplett +% ? Laufzeit auf den CPU's +% SPIDER, Llama3-70B: 1 Kandidat u. 3 Rev. +Bei den Tests auf dem vollständigen Spider-Datensatz war zu erwarten, dass die Laufzeit bedeutend höher ist, als zuvor. \textbf{\{...Hier muss dann noch die Laufzeit für den Spider Datensatz hin\}} + + +% TODO: Überarbeiten der Abschätzungen von benötigtem Speicher und Laufzeit vor den Experimenten +% (Haben wir das überhaupt gemacht? Ich weiß leider nicht ganz was ich das schreiben soll. +% zumindest bei der Laufzeit habe ich es aber mal versucht) ~ Felix + + +%\enquote{Beschreiben sie die Anforderungen für die Berechnungen für jedes ihrer Experimente, z.B. die Anzahl der CPU/GPU-Stunden oder die Voraussetzungen für den Hauptspeicher und GPU-Speicher. Geben sie für Zeit und Speicher eigene Abschätzungen an, bevor die Experimente gelaufen sind und vergleichen sie diese mit den tatsächlich verbrauchten Ressourcen. Sie müssen vor den Experimenten einplanen, dass diese Informationen auch durch ihren Code gemessen und gespeichert werden.} \ No newline at end of file diff --git a/report/content/04Ergebnisse.tex b/report/content/04Ergebnisse.tex new file mode 100644 index 0000000000000000000000000000000000000000..7b43f16fb34dad4e3c450b81f1700f42c7fa32ae --- /dev/null +++ b/report/content/04Ergebnisse.tex @@ -0,0 +1,86 @@ +\section{Ergebnisse} +\label{sec:ergebnisse} +In diesem Abschnitt beschreiben wir die Ergebnisse unserer experimentellen Untersuchungen. Diese überprüfen die in \autoref{sec:Scope} aufgestellten Behauptungen über den replizierten Artikel. + +%\enquote{Starten sie mit einem Überblick über die Ergebnisse. Bestätigen ihre Ergebnisse die aufgeführten Behauptungen? Dieser Abschnitt sollte hauptsächlich Fakten nennen und so präzise wie möglich geschrieben werden.} +Unsere erste Untersuchung repliziert ein Experiment aus \cite{Talaei2024}, bei dem das CHESS-Framework auf dem BIRD-Datensatz mit quelloffenen LLMs getestet wurde. Wir nutzen dabei die gleiche $CHESS_{(IR,SS,CG)}$ Variante. Während in \cite{Talaei2024} eine \textit{Execution Accuracy} von $EX=61.5$ erreicht wurde, können wir nur einen Wert von $EX=54.42$ erreichen. Folglich kann mit diesem Experiment die \hyperref[txt:beh1bird]{Behauptung 1} nicht bestätigt werden. + +\begin{table}[!tb] + \centering + \begin{tabular}{c|c} + \texttt{sampling\_count} & $EX_{SDS}$\\ + \hline + 0 & 53.74\\ + 1 & 54.42\\ + \end{tabular} + \caption{\textit{Execution Accuracy} für unterschiedliche Werte des $sampling\_count$ im revise-Tools} + \label{tab:resExp2} +\end{table} + +Mit dem zweiten Experiment wurde der Einfluss des revise-Tools untersucht. Dafür wurde das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ mit quelloffenen LLMs auf dem SDS-Datensatz getestet, wobei das revise-Tool mit $sampling\_count \in \{0,1\}$ konfiguriert wurde. Die Ergebnisse sind in \autoref{tab:resExp2} aufgelistet. Die absoluten Werte der $EX$ weichen, wie auch schon im ersten Experiment, von denen aus \cite{Talaei2024} ab. Tatsächlich können wir aber auch einen Anstieg der \textit{Execution Accuracy} bei Verwendung des revise-Tools feststellen. Jedoch ist der Einfluss des Tools mit einer Änderung von $\Delta EX = 0.68$ nicht signifikant, weshalb wir \hyperref[txt:beh2revision]{Behauptung 2} ebenfalls nicht bestätigen können. + +Das dritte Experiment liefert einen Wert für die \textit{Execution Accuracy} des CHESS-Frameworks mit quelloffenen LLMs auf dem Spider-Datensatz. Da die ersten Experimente bereits eine deutlich höhere Laufzeit hatten, als zuvor erwartet, haben wir zunächst nur den Subsampled Spider Datensatz genutzt und zusätzlich zu den von uns gewählten Embedding-Modellen, auch \textit{Llama-3-70B} als Embedding-Modell getestet. Die Ergebnisse auf dem Subsampled Spider Datensatz mit den verschiedenen Embedding-Modellen sind in \autoref{tab:sts} aufgeführt. Im weitere Verlauf konnten wir dann aber auch den vollständigen Spider-Datensatz testen und einen Wert von $EX=???$ ermitteln. Die Differenz zu der \textit{Execution Accuracy} von $CHESS_{(IR,SS,CG)}$ mit proprietären LLMs auf dem Spider-Datensatz beträgt $\Delta EX = 87.2 - ??? = ???$. Diese Abweichung ist deutlich größer, als von uns erwartet. Mit diesem Ergebnis liefern wir aber einen Wert für \autoref{tab:performance2}, bei dem $CHESS_{(IR,SS,CG)}$ mit quelloffenen LLMs auf dem Spider-Datensatz getestet wurde. + +\begin{table}[!tb] + \centering + \begin{tabular}{c|c} + Embedding-Modelle & $EX_{SubSpider}$ \\ + \hline + LLama-3-70B & 62.88\\ + mxbai-embed-large \& nomic-embed-text & 60.70\\ + \end{tabular} + \caption{\textit{Execution Accuracy} mit unterschiedlichen Embedding-Modellen auf dem Subsampled Spider Datensatz} + \label{tab:sts} +\end{table} + +\begin{table}[!tb] + \centering + \begin{tabular}{l|c|c|c} + % width must be set manually bc this cell is not the biggest cell + \diagbox[width=16em,trim=l]{Methode}{Datensätze} & BIRD test & BIRD dev & \textbf{Spider}\\ + \hline + Beste Methode (Stand 03/2025) & 77.14 \cite{bird} & 75.36 \cite{bird} & 91.2 \cite{spider1} \\ + \hline + $CHESS_{(IR,CG,UT)}$ & 68.31 & 71.10 & -\\ + $CHESS_{(IR,SS,CG)}$ + proprietär & 66.69 & 65.00 & 87.2 \\ + \textbf{$CHESS_{(IR,SS,CG)}$ + Open LLMs} & - & 61.5 & \textbf{???}\\ + \hline + $\Delta EX$ = $EX_{\text{proprietär}}$ - $EX_{\text{OpenLLM}}$ & - & 3.5 & \textbf{???} \\ + \end{tabular} + \caption{Überblick verschiedener CHESS-Konfigurationen auf unterschiedlichen Benchmarks} + \label{tab:performance2} +\end{table} + +%\enquote{Beschreiben sie dann detailliert jedes einzelne Ergebnis, das sie haben. Zeigen sie wie es mit einer oder mehreren Behauptungen in Beziehung steht. Erklären sie konkret was der Kern ihres Ergebnis ist. Gruppieren sie die Ergebnisse in logische Abschnitte. Beschreiben sie klar, wo sie über den Originalartikel hinausgegangen sind, wo sie zusätzliche Experimente durchgeführt haben und wie diese mit den ursprünglichen Behauptungen in Beziehung stehen.} Oft kann man nicht die exakt gleiche numerische Zahl als Ergebnis bekommen. Deshalb müssen sie das Ergebnis bewerten, um zu entscheiden, ob ihr Ergebnis die Behauptung der Originalartikels unterstützt. + +Die Ergebnisse unserer Experimente zeigen, dass keine unserer formulierten Behauptungen zutrifft. Jedoch sehen wir verschiedene Hinweise, die für die geringere \textit{Execution Accuracy} verantwortlich sein können. Daher werden wir im Folgenden näher auf die Ergebnisse der Experimente eingehen. + +%\textbf{Behauptung 1:} +%\textit{Das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ erzielt mit quelloffenen LLMs eine $EX$ auf dem SDS-Datensatz von annähernd $EX=61.5$.} \label{txt:beh1bird} +\paragraph{Ergebnisse zu Behauptung 1} Das erste Experiment sollte die allgemeine Leistungsfähigkeit des CHESS-Frameworks zum Bearbeiten von Text-To-SQL-Aufgaben bestätigen. Dazu wurde ein Experiment aus \cite{Talaei2024} replizierten, bei dem die $CHESS_{(IR,SS,CG)}$ Variante mit quelloffenen LLMs getestet wurde. In \cite{Talaei2024} wurde mit dieser Variante auf dem vollständigen BIRD-dev Datensatz ein Wert von $EX=61.5$ erreicht. Mit \hyperref[txt:beh1bird]{Behauptung 1} sollte dieser Wert für den SDS-Datensatz, einer Teilmenge des BIRD-dev Datensatzes, bestätigt werden. Jedoch konnten wir nur einen Wert von $EX=54.42$ erreichen. Die Abweichung führen wir auf die genutzten Embedding-Modellen zurück. Diese werden in der Arbeit für die Experimente mit quelloffenen LLMs nicht genauer benannt. Im Quelltext werden für die Embedding-Modelle nur proprietäre LLMs genutzt. Mit \textit{mxbai-embed-large} und \textit{nomic-embed-text} haben wir versucht ähnliche Modelle zu wählen. Nichtsdestotrotz könnten diese aber für die geringere \textit{Execution Accuracy} verantwortlich sein. + +%\textbf{Behauptung 2:} +%\textit{Das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ mit quelloffenen LLMs wird durch das revise-Tool signifikant beeinflusst und erzielt auf dem SDS-Datensatz eine Differenz in der Execution Accuracy ($\Delta EX$) zwischen einmalige Revision und keiner Revision von annähernd $\Delta EX = 61.22 - 57.82 = 3.40$.} +\paragraph{Ergebnisse zu Behauptung 2} In \cite{Talaei2024} wird dem revise-Tool des CG-Agenten ein signifikanter Einfluss auf die \textit{Execution Accuracy} zugeschrieben. In diesem Experiment wurde der Einfluss dieses Tools genauer untersucht. Die Ergebnisse sind in \autoref{tab:resExp2} aufgelistet. Aus den ermittelten Werten kann geschlussfolgert werden, dass der Einsatz des revise-Tools zu einer höheren \textit{Execution Accuracy} führt. Jedoch konnten nicht der gleiche signifikante Einfluss feststellen werden, wie in \cite{Talaei2024}. Auch hier sehen wir den Einfluss der Embedding-Modelle als mögliche Fehlerquelle. + +Eine weitere interessante Beobachtung bei diesem Experiment ist die Verteilung der korrekten, inkorrekten und fehlerhaften SQL-Anfragen, wie sie in \autoref{tab:scPortion} dargestellt sind. Anhand der absoluten Werte kann festgestellt werden, dass nur eine inkorrekte Anfrage in eine korrekte Anfrage umgewandelt werden konnte und die anderen zu fehlerhafter Anfragen umgewandelt wurden. Das zeigt, dass der Einfluss des revise-Tools wirklich nicht signifikant ist. Andererseits bedeutet das Ergebnis auch, dass durch die Revision neue Syntaxfehler entstehen. Eine Erklärung dieses Phänomens sehen wir in der Auswahl der finalen Anfrage, bei der stets die kürzeste Anfrage ausgewählt wird. Dieses Verfahren erscheint bei komplexen Datenbank-Anfragen nicht besonders erfolgversprechend zu sein. Da bei den Ablation-Studies in \cite{Talaei2024} aber das gleiche Verfahren verwendet wurde, haben wir hier keine Änderungen vorgenommen. + +\begin{table}[tb] + \centering + \begin{tabular}{c|c|c} + & $sc=0$ & $sc=1$ \\ + \hline + correct & 79 & 80\\ + incorrect & 65 & 56\\ + error & 3 & 11\\ + \end{tabular} + \caption{Anteil der korrekten, inkorrekten und fehlerhaften SQL-Anfragen} + \label{tab:scPortion} +\end{table} + +%\textbf{Behauptung 3:} +%\textit{Das CHESS-Framework in der Konfiguration $CHESS_{(IR,SS,CG)}$ erzielt mit quelloffenen LLMs eine Differenz in der Execution Accuracy ($\Delta EX$) zwischen dem BIRD-dev und Spider-Datensatz von annähernd $\Delta EX = 65.00 - 61.5 = 3.50$, wie mit proprietären Modellen.} +\paragraph{Ergebnisse zu Behauptung 3} Zusätzlich zu den in \cite{Talaei2024} durchgeführten Experimenten wurde das CHESS-Framework auf dem Spider-Datensatz getestet. Für die $CHESS_{(IR,SS,CG)}$ Variante gibt es bereits einen Wert für proprietär LLMs. Mit diesem Experiment wird zusätzlich einen Wert für quelloffene LLMs bereitgestellt. Aufgrund von Ressourcenbeschränkungen und Rücksicht auf andere Nutzer des GPU-Servers haben wir zunächst nicht den kompletten Spider-Datensatz getestet, da wir andernfalls den GPU-Server für mehrere Tage blockieren würden. Zudem haben wir aufgrund der Ergebnisse von Experiment 1 und 2 die genutzten Embedding-Modelle hinterfragt und zusätzliche \textit{Llama-3-70B} als Embedding-Modell getestet. Die Ergebnisse in \autoref{tab:sts} zeigen, dass mit \textit{Llama-3-70B} ein leicht höherer $EX$ Wert erreicht werden konnte. Abseits der Arbeit durchgeführte Tests mit \textit{Llama-3-70B} als Embedding-Modell für Experimente auf dem BIRD-Datensatz haben aber keine Verbesserungen ergeben. + +Später konnte dann aber doch der vollständige Spider-Datensatz getestet werden, wobei eine \textit{Execution Accuracy} von $???$ erreicht werden konnte. Die Differenz zu der \textit{Execution Accuracy} von $CHESS_{(IR,SS,CG)}$ mit proprietären LLMs auf dem Spider-Datensatz beträgt $\Delta EX = 87.2 - ??? = ???$. Diese Abweichung ist deutlich größer, als von uns erwartet. Mit den vorangegangenen Tests auf dem Subsampled Spider Datensatz mit unterschiedlichen Embedding-Modellen können wir sicher behaupten, dass die Wahl der Embedding-Modelle einen großen Einfluss auf die ermittelte \textit{Execution Accuracy} hat. Wir gehen davon aus, dass mit einem anderen Embedding-Modell auch noch bessere $EX$ Werte möglich sind. +%\enquote{Beschreiben sie alle zusätzlichen Experimente, die über den Originalartikel hinausgehen. Dies können Experimente zu weiteren Datenmengen sein oder sie probieren andere Methoden bzw. weitere Vereinfachungen des Modells aus oder passen die Hyperparameter an. Beschreiben sie für jedes zusätzliche Experiment, was sie genau durchgeführt haben, was die Ergebnisse sind und diskutieren sie was diese Ergebnisse zeigen. } \ No newline at end of file diff --git a/report/content/05Diskussion.tex b/report/content/05Diskussion.tex new file mode 100644 index 0000000000000000000000000000000000000000..f27722bebfad9a508b950e783cbe8281d6f52dec --- /dev/null +++ b/report/content/05Diskussion.tex @@ -0,0 +1,44 @@ +\section{Diskussion} +\label{sec:diskussion} +%\enquote{Beschreiben sie die weiterführenden Implikationen der experimentellen Ergebnisse. War der Originalartikel replizierbar bzw. reproduzierbar. Falls nicht, welche Faktoren haben dazu geführt, dass die Experimente nicht reproduziert werden konnten. } +Aus unseren experimentellen Untersuchungen können wir eine Reihe von Schlussfolgerungen über den in \cite{Talaei2024} präsentierten Text-To-SQL-Ansatz im Allgemeinen und die Replizierbarkeit dessen im Speziellen ziehen. + +Zunächst möchten wir festhalten, dass der Artikel mit Einschränkungen replizierbar ist. Einerseits werden in dem Artikel ausführliche Erklärungen über die Funktionsweise des Frameworks und den Ablauf der Experimente gegeben. Außerdem ist das Repository gut strukturiert, der Code kommentiert und aussagekräftige Bezeichner verwendet. Andererseits mussten wir aber feststellen, das wichtige Informationen und Parameter zur Replikation der Experimente fehlen und das revise-Tool anders implementiert wurde, als im Artikel beschrieben. Einen Grund für die geringeren $EX$ Werte sehen wir in der Wahl der Embedding-Modelle, welche in \cite{Talaei2024} nicht beschrieben werden. Dies erschwert die Replikation des Artikels deutlich. + +%\enquote{Bewerten sie, ob sie die Evidenz, die sie durch das Durchführen der Experimente erhalten haben, auch überzeugt, dass die Behauptungen des Originalartikels dadurch gestützt werden. Diskutieren sie die Stärken und Schwächen ihres Ansatzes, vielleicht haben sie aus Zeitgründen nicht alle Experimente durchführen können, oder vielleicht haben zusätzliche Experimente durchgeführt, die den Originalartikel weiter stärken.} + +Mithilfe unserer Experimente können wir jedoch die Behauptungen in \cite{Talaei2024} größtenteils stützen. Bessere Replikationen wären durch eine ausführlichere Dokumentation der Experimente möglich. In \cite{Talaei2024} wird nicht darauf eingegangen, wie die einzelnen Ergebnisse ermittelt werden. Zudem stehen nur für ein Experiment die Rohdaten zur Verfügung. Wichtige Informationen wie zum Beispiel die genutzten Embedding-Modelle müssen geraten werden. + +Aufgrund der deutlich geringeren $EX$ Werte unserer Experimente stellen wir die hervorgehobene Adaptivität des Frameworks an ressourcenbeschränkte Umgebungen in Frage. Jedes unserer Experimente zeigt einen qualitativen Unterschied zwischen quelloffenen Modellen und den leistungsstarken proprietären Modellen aus \cite{Talaei2024}. Daher können wir nicht bestätigen, dass das Framework mit limitierten Ressourcen die gleichen Ergebnisse erzielen kann. + +\subsection{Was war einfach?} +%\enquote{Beschreiben sie welche Teile der Replikation/Reproduktion sich leicht umsetzen ließen. Lief der Code der Autoren problemlos? War es aufgrund der Beschreibung im Originalartikel nicht aufwändig die Methoden zu reimplementieren? Dieser Abschnitt soll den Lesenden zeigen, welche Teile des Originalartikels sich leicht für eigene Ansätze verwenden lässt. Tipp: Keine pauschalen Verallgemeinerungen. Kontext und Erklärungen angeben} + +Zu Beginn unserer Arbeit mussten wir zunächst den Artikel erfassen, dessen Kernaussage ermitteln und die Experimente nachvollziehen. All dies war durch die ausführlichen Erklärungen und den übersichtlichen Code gewährleistet. Die Beschreibung der Experimente ermöglichte einen schnellen Überblick über dessen Schwerpunkt und Ergebnisse. + +Bis auf wenige Ausnahmen stellen die Autoren alle nötigen Informationen bereit, um eine Reproduktion der Experimente durchzuführen. Alle genutzten Datensätze sind online verfügbar, oder werden bereitgestellt, wie es bei dem SDS-Datensatz der Fall ist. Eine Setup-Anleitung wird mitgeliefert und der Code ist ausführbar. Die verwendeten Konfigurationen sind ebenfalls im Repository enthalten. + +Da wir in unseren Experimenten andere Modelle genutzt haben, mussten wir die Konfigurationen anpassen. Die entsprechende Schnittstelle ist gut dokumentiert, sodass wir die LLMs schnell einbinden und die Parameter setzen konnten. + +\subsection{Was war schwer?} +%\enquote{Beschreiben sie welche Teile ihrer Replikation/Reproduktion aufwändig oder schwierig waren oder viel mehr Zeit in Anspruch genommen haben, als sie erwarteten. Vielleicht waren Daten nicht verfügbar, so dass sie einige Experimente nicht verifizieren konnten, oder der Code der Autoren funktionierte nicht und musste erst debugged werden. Vielleicht dauerten auch einige Experimente zu lange und sie konnten sie deshalb nicht verifizieren. Dieser Abschnitt soll den Lesenden zeigen, welche Teile des Originalartikels schwer wiederverwendbar sind, bzw. signifikante Zusatzarbeiten und Ressourcen erfordern.} + +Die Experimente in \cite{Talaei2024} wurden bis auf eine Ausnahme ausschließlich auf proprietären LLMs durchgeführt. Für die Reproduktion dieser Arbeit werden also in jedem Fall leistungsstarke LLMs und monetäre Ressourcen benötigt. Dies schränkt die Reproduzierbarkeit im akademischem Umfeld sehr stark ein und hat auch unsere Arbeit nachteilig beeinflusst. Zudem werden nur die Experimente mit proprietären LLMs detailliert beschrieben. Für unsere Replikation mit quelloffenen LLMs fehlten uns wichtige Informationen und Parameter, welche wir deshalb raten mussten. Konkrete Fragen haben sich zu den genutzten Embedding-Modellen ergeben, welche nicht weiter benannt werden. Im Repository konnten wir nur proprietäre Embedding-Modelle finden. Daher stellt sich für uns die Frage, welches leistungsstärkere Embedding-Modell in \cite{Talaei2024} für das Experiment mit den quelloffenen LLMs genutzt wurde, da die Ergebnisse mit unserer Wahl deutlich schlechter ausgefallen sind. + +Bei der genaueren Untersuchung des revise-Tools haben wir gravierende Unterschiede zwischen der Beschreibung des Tools in \cite{Talaei2024} und der Implementierung im Repository entdeckt. Während in dem Artikel beschrieben wird, dass \textit{\enquote{For each faulty candidate, the agent repeatedly attempts to revise the query, until the issue is resolved or a maximum number of allowed revisions is reached.}} \cite{Talaei2024}, stellten wir fest, dass die Implementierung eine parallele Revision, statt einer Wiederholten durchführt. Wir sehen die Autoren in der Pflicht diese Inkonsistenz zu beheben und gegebenenfalls die Experimente neu durchzuführen, da dieses Tools einen signifikanten Einfluss auf die \textit{Execution Accuracy} hat. Zudem ist die Anzahl der durchgeführten Revisionen nicht konfigurierbar, obwohl sie es laut \cite{Talaei2024} sein sollte. Dies führte dazu, dass wir zur Überprüfung von \hyperref[txt:beh2revision]{Behauptung 2} zunächst die Implementierung entsprechend erweitern mussten. + +Bei der Untersuchung von \hyperref[txt:beh3spider]{Behauptung 3} haben wir den Spider-Datensatz verwendet, welcher für Experimente in \cite{Talaei2024} bereits genutzt wurde. Jedoch mussten wir auch hier wieder feststellen, dass dieser nicht ad-hoc verwendet werden kann, da Spider eine andere Schnittstelle als die BIRD-Datensätzen nutzt und die passende Implementierung im Code nicht enthalten ist. Die entsprechenden Anpassungen im Code sind zwar trivial, aber gerade aus diesem Grund sehen wir hier die Autoren in der Pflicht, die Implementierung der Schnittstelle so zu gestalten, dass auch andere Datensätze, wie zum Beispiel die neue Version des Spider-Datensatz \cite{spider2}, nutzbar sind. + +% Ich sehe irgendwie immer noch kein Problem bei den Namen +% Candidate Generator = der Agent +% Generate_candidate_query = dem Tool +% Es wird doch gut getrennt zwischen den beiden Werkzeugen ... +% -Stephan + +% Während die meisten Bezeichner klar formuliert wurden, sind wir in der Diskussion mehrfach über die Bezeichnung des Agenten Candidate Generator und des Tools generate\_candidate gestolpert. + +\subsection{Empfehlungen für die Replizierbarkeit / Reproduzierbarkeit} +%\enquote{Geben sie Empfehlungen, wie die Autoren des Originalartikels oder andere Forschende in diesem Feld die Replizierbarkeit / Reproduzierbarkeit verbessern können.} +Replikationen werden typischerweise im akademischem Umfeld erstellt, in dem häufig nur limitierte Ressourcen zur Verfügung stehen. Zudem können proprietäre Modelle aufgrund von Lizenzrechten nur selten verwendet werden. In \cite{Talaei2024} wird zwar die Adaptivität an ressourcenbeschränkte Umgebungen hervorgehoben und auch ein Experiment mit quelloffenen LLMs durchgeführt, jedoch hat unsere Replikation gezeigt, dass es trotzdem qualitative Unterschiede gibt. Aus diesem Grund sollten Experimente auch mit schwächeren LLMs durchführbar sein. + +Text-To-SQL Ansätze stehen im ständigen Wettbewerb untereinander und eine gute Performance in anerkannten Benchmarks ist entscheidend für deren Verwendung. Aus diesem Grund sollte die Schnittstelle zum Nutzen der Benchmarks mehr Beachtung finden und für verschiedenste Benchmarks genutzt werden können. \ No newline at end of file diff --git a/report/content/06Kommunikation.tex b/report/content/06Kommunikation.tex new file mode 100644 index 0000000000000000000000000000000000000000..468aa065b4038a9d0750dddb7960031bd19ea59b --- /dev/null +++ b/report/content/06Kommunikation.tex @@ -0,0 +1,14 @@ +\section{Kommunikation mit den Autoren} +%\minisec{Communication with original authors} +%\enquote{Dokumentieren sie das Ausmaß (oder das Fehlen) der Kommunikation mit Autoren. Stellen sie sicher, dass der Bericht eine faire Beurteilung der Forschungsarbeiten ist. Versuchen sie deshalb mit den Autoren Kontakt aufzunehmen. Sie können ihnen konkrete Fragen stellen oder falls sie keine Fragen haben, den Bericht zusenden und um Feedback bitten.} + +Es gab den Versuch der Kontaktaufnahme mit den Autoren der Originalarbeit, um einen guten Fortschritt, sowie eine hohe Qualität für die Replikation zu erreichen. Dabei wurde versucht, offene Fragen, welche sich weder mithilfe der Originalarbeit noch der dazugehörigen Dokumentation beantworten ließen, zu klären. Die dafür verfasste E-Mail fokussierte sich auf 3 Fragestellungen, welche das Projekt maßgeblich vorangebracht hätten. + +Zum Einen ist an keiner Stelle dokumentiert, welche \textit{temperatures} für die LLMs bei den Open-Source-Experimenten verwendet wurden. Es gibt lediglich die in der standardmäßigen Konfiguration angegebenen \textit{temperatures}, an denen man sich orientieren kann. Aus diesem Grund wurden die Autoren gefragt, ob sie für ihre Open-Source-Experimente von dem Standard abweichende \textit{temperatures} verwendet haben. Sollte dies der Fall gewesen sein, haben wir die Autoren der Originalarbeit darum gebeten, uns diese weiterzugeben. + +Die zweite Fragestellung bezieht sich auf die in den Open-Source-Experimenten der Originalarbeit verwendeten Embedding-Modelle. Aus \cite{Talaei2024} geht nicht eindeutig hervor, welche Embedding-Modelle für die Experimente der Originalarbeit verwendet wurden. Aus diesem Grund entschieden wir uns dazu, noch einmal nachzufragen, ob tatsächlich \textit{Llama-3-70B} für das Embedding-Modell verwendet wurde, oder doch andere Modelle zum Einsatz kamen. + +Des Weiteren gab es bei den Experimenten zu den Ablation-Studies Probleme, das Framework ohne Revisionen zu nutzen. Dies ist für die Experimente zu den Ablation-Studies zwingend notwendig, weshalb wir die Autoren nach ihrer Lösung für dieses Problem befragten. Leider gab es bis zum aktuellen Zeitpunkt zu keiner gestellten Frage keine Rückmeldung, weshalb unserer Lösungen für die beschriebenen Probleme mit dem Vorgehen aus der Originalarbeit abweichen können. + +% E-Mail als Anhang? +% Würde die Mail bei der Abgabe mit anhängen wenn das geht. ~ F \ No newline at end of file