From 9321539ee726639d07bde9bbfece9cd74af10b0f Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 1 Oct 2022 11:15:28 +0200 Subject: [PATCH] Add final fixes --- docs/thesis/chapters/0_abstract.tex | 2 +- docs/thesis/chapters/3_methods.tex | 2 +- docs/thesis/chapters/5_cases/naive-bayes.tex | 4 ++-- docs/thesis/chapters/5_cases/scibert.tex | 16 ++++++++-------- docs/thesis/chapters/6_results.tex | 8 ++++---- docs/thesis/chapters/appendix.tex | 4 ++-- docs/thesis/main.pdf | Bin 5701142 -> 5701142 bytes 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/thesis/chapters/0_abstract.tex b/docs/thesis/chapters/0_abstract.tex index a7d61c7..a76c581 100644 --- a/docs/thesis/chapters/0_abstract.tex +++ b/docs/thesis/chapters/0_abstract.tex @@ -4,7 +4,7 @@ Despite its long-standing history, artificial intelligence (AI) has only recently started enjoying widespread industry awareness and adoption, partly thanks to the prevalence of libraries that accessibly expose state-of-the-art models. However, the transition from prototypes to production-ready AI applications is still a source of struggle across the industry. Even though professionals already have access to frameworks for deploying AI, case studies and developer surveys have found that many deployments do not follow best practices. \absdiv{Objective} -This thesis investigates the causes of and presents a possible solution to the asymmetry between the adoption of libraries for \textit{applying} and those for \textit{deploying} AI. The potential solution is validated through designing a software framework called \textit{GreatAI}, which aims to facilitate \underline{G}eneral \underline{R}obust \underline{E}nd-to-end \underline{A}utomated \underline{T}rustworthy deployments while attempting to overcome the practical drawbacks of earlier similar tools e.g., \textit{Seldon Core}, \textit{AWS SageMaker}, and \textit{TensorFlow Extended}. +This thesis investigates the causes of and presents a possible solution to the asymmetry between the adoption of libraries for \textit{applying} and those for \textit{deploying} AI. The potential solution is validated through designing a software framework called \textit{GreatAI}, which aims to facilitate \underline{G}eneral \underline{R}obust \underline{E}nd-to-end \underline{A}utomated \underline{T}rustworthy deployments while attempting to overcome the practical drawbacks of earlier similar tools, e.g., \textit{Seldon Core}, \textit{AWS SageMaker}, and \textit{TensorFlow Extended}. \absdiv{Methods} \textit{GreatAI} serves as a proxy for exploring the proposed design decisions; moreover, its initial focus is limited to the domain of natural language processing (NLP). Its design is created by applying the principles of design science methodology through iteratively shaping it in two case studies of a commercial NLP pipeline. Subsequently, interviews are conducted with ten practitioners to assess its applicability and generalisability. diff --git a/docs/thesis/chapters/3_methods.tex b/docs/thesis/chapters/3_methods.tex index 25d6ab7..c3f512c 100644 --- a/docs/thesis/chapters/3_methods.tex +++ b/docs/thesis/chapters/3_methods.tex @@ -16,7 +16,7 @@ The problem context is the difficulty of responsibly transitioning (while follow The practical cases used for the evaluation are further elaborated in Chapter \ref{chapter:case}. In short, they focus on individual components of a growing commercial platform which aims to find tech-transfer opportunities in academic publications. The primary input of the system as a whole is a set PDF files, while the output is a list of metrics describing various aspects of each paper, such as interesting sentences, scientific domains, and contributions. The result also includes a predicted score used for ranking. This ranking is subsequently processed by the business developers of Technology Transfer Offices (TTOs) of multiple Dutch and German universities, who later give feedback on the results. -Overall, this problem context carries the properties of typical industry use cases: it utilises a wide range of natural language processing methods, contains complex interactions between the services, benefits from the integration of end-to-end feedback, and has to provide the clients with a platform that they can rely on within their organisation's core processes. Since the final ranking affects real people, explainability and robustness are also central questions. +Overall, this problem context carries the properties of typical industry use cases: it utilises a wide range of natural language processing (NLP) methods, contains complex interactions between the services, benefits from the integration of end-to-end feedback, and has to provide the clients with a platform that they can rely on within their organisation's core processes. Since the final ranking affects real people, explainability and robustness are also central questions. \begin{figure} \centering diff --git a/docs/thesis/chapters/5_cases/naive-bayes.tex b/docs/thesis/chapters/5_cases/naive-bayes.tex index 10536c6..610fcf1 100644 --- a/docs/thesis/chapters/5_cases/naive-bayes.tex +++ b/docs/thesis/chapters/5_cases/naive-bayes.tex @@ -135,7 +135,7 @@ In line with the findings of John et al. \cite{john2020architecting} on the SOTA Based on personal experiences, three types of software artifacts are identified (in the context of Python) for which a wide range of established practices exist. WSGI server\footnote{\href{https://peps.python.org/pep-3333/}{peps.python.org/pep-3333}} compatible applications, executable scripts, and Docker Images\footnote{\href{https://docs.docker.com/registry/spec/manifest-v2-2/}{docs.docker.com/registry/spec/manifest-v2-2}}. To achieve this, \textit{GreatAI} provides a compatibility layer between simple Python inference functions and all the abovementioned common artifacts. Taking functions as input for the first step also satisfies the requirement to be \textbf{General}. Nevertheless, to also allow customisation, additional configuration, metadata, and behavioural specification can be given as well. -\begin{listing}[!ht] +\begin{listing}[h] \begin{minted}[ frame=lines, framesep=2mm, @@ -155,7 +155,7 @@ def greeter(name: str) -> str: The main advantage of the wrapping approach is that it does not require any input from the clients (by default). We opted for a decorator \cite{gamma1995design}, which lets users wrap their function by adding a single additional line of code as shown in Listing \ref{listing:hello-world}. After which, the created WSGI application can be accessed through the \texttt{greeter.app} property where \texttt{greeter} is the identifier of the user-defined function. A CLI script (\texttt{great-ai}), along with a \texttt{Dockerfile} are also provided to cover the other two deployment artifacts. -\begin{listing}[!ht] +\begin{listing}[h] \begin{minted}[ frame=lines, framesep=2mm, diff --git a/docs/thesis/chapters/5_cases/scibert.tex b/docs/thesis/chapters/5_cases/scibert.tex index 10af01e..6600681 100644 --- a/docs/thesis/chapters/5_cases/scibert.tex +++ b/docs/thesis/chapters/5_cases/scibert.tex @@ -21,9 +21,9 @@ A formulaic expression is a phrase with zero or more ``slots'' which, when fille \subsection{Methods} -In order to compile a new dataset, experts are asked to judge sentences that passed an \textit{intention check}. This pooling approach is commonly used in information retrieval \cite{schutze2008introduction}. The filtering is expected to sieve out sentences that are probably not relevant from a technology-transfer perspective using Iwatsuki's formulaic expression intention classes. Subsequently, relevance judgements --- in the form of \textit{interesting} or \textit{not interesting} labels --- are gathered for the remaining sentences. This method turns the extractive summarisation into a binary classification task for which a SciBERT model \cite{beltagy2019scibert} can be fine-tuned. Ultimately, the summaries are derived from sentences selected by the classifier trained on the experts' annotations. +In order to compile a new dataset, experts are asked to judge sentences that passed an \textit{intention check}. This pooling approach is commonly used in information retrieval \cite{schutze2008introduction}. The filtering is expected to sieve out sentences that are probably not relevant from a technology-transfer perspective using Iwatsuki's formulaic expression intention classes. Subsequently, relevance judgements --- in the form of \textit{interesting} or \textit{not interesting} labels --- are gathered for the remaining sentences. Figure \ref{fig:annotator} shows an example of the annotation task. Our method turns the extractive summarisation into a binary classification task for which a SciBERT model \cite{beltagy2019scibert} can be fine-tuned. Ultimately, the summaries are derived from sentences selected by the classifier trained on the experts' annotations. -\begin{figure}[!ht] +\begin{figure}[h] \centering \includegraphics[width=0.75\linewidth]{figures/annotator.png} \captionsetup{width=.9\linewidth} @@ -35,7 +35,7 @@ We have to note two possible shortcomings of this setup: firstly, the FE intenti \subsection{Results} -For the first iteration, 1500 sentences were selected for two experts to annotate in a binary fashion according to strict guidelines. An example is shown in Figure \ref{fig:annotator}. Afterwards, for measuring the interrater agreement, we calculated Cohen's kappa \cite{cohen1960coefficient} as shown in Equation \ref{equation:kappa}, which turned out to be \textbf{0.43} for the two annotators. This happens to be just above the lower end of \textit{moderate agreement}. Even though the original quality ranges are sometimes criticised for being too relaxed for the medical domain \cite{mchugh2012interrater}, some leniency is acceptable for many NLP tasks due to their subjectiveness. Regardless, in the case of summarisation, Verberne et al. \cite{verberne2018creating} argue that reasonable end-quality can be reached even when the interrater agreement is relatively low. The ground truth is determined by taking the logical disjunction of the annotations. This is reasonable because the annotators have dissimilar backgrounds and likely judged slightly different aspects of the sentences. +For the first iteration, 1500 sentences were selected for two experts to annotate in a binary fashion according to strict guidelines. Afterwards, for measuring the interrater agreement, we calculated Cohen's kappa \cite{cohen1960coefficient} as shown in Equation \ref{equation:kappa}, which turned out to be \textbf{0.43} for the two annotators. This happens to be just above the lower end of \textit{moderate agreement}. Even though the original quality ranges are sometimes criticised for being too relaxed for the medical domain \cite{mchugh2012interrater}, some leniency is acceptable for many NLP tasks due to their subjectiveness. Regardless, in the case of summarisation, Verberne et al. \cite{verberne2018creating} argue that reasonable end-quality can be reached even when the interrater agreement is relatively low. The ground truth is determined by taking the logical disjunction of the annotations. This is reasonable because the annotators have dissimilar backgrounds and likely judged slightly different aspects of the sentences. \begin{equation} \label{equation:kappa} \kappa_{agreement} \equiv \frac{p_{observed} - p_{expected}}{1 - p_{expected}} = 1 - \frac{1 - p_{observed}}{1 - p_{expected}} @@ -45,7 +45,7 @@ For the first iteration, 1500 sentences were selected for two experts to annotat \textbf{Reproducibility} Reproducible experiments are generally preferred. It is easy to forget to set some seed values and, for example, end up with different data points in the test-train splits during training and validation in a Continuous Integration (CI) pipeline, thus, data leakage. For facilitating reproducibility, it would be useful to reset the seeds of each imported library's random number generators (RNGs) when \textit{GreatAI} is configured. Thus, a feature has been added to detect and reset RNGs of installed and imported libraries. This certainly will not solve the reproducibility crisis \cite{hutson2018artificial} on its own; however, in some cases, it can result in one fewer step to miss. \end{displayquote} -\begin{figure}[!ht] +\begin{figure}[h] \centering \includegraphics[width=0.7\linewidth]{figures/scibert-confusion.png} \captionsetup{width=.9\linewidth} @@ -59,7 +59,7 @@ The next step is fine-tuning SciBERT with the help of Hugging Face \texttt{trans \textbf{Utility of LargeFiles} For the purposes of the documentation, the fine-tuning was conducted in the Google Colab online environment, which is excellent for providing anyone with GPU time for free. However, notebook environments are ephemeral, resulting in the need to manually upload and download all relevant data whenever a new virtual machine instance is granted. The \texttt{LargeFile} implementation alleviated this problem by automatically handling the uploads and downloads. Of course, first, backwards compatibility had to be solved for Python 3.7, the only available environment in Colab. \end{displayquote} -\begin{table}[!ht] +\begin{table}[ht] \centering \begin{threeparttable} \caption{Accuracty metrics of the fine-tuned SciBERT model on the \textit{summary candidate sentences} dataset.} @@ -77,7 +77,7 @@ The next step is fine-tuning SciBERT with the help of Hugging Face \texttt{trans Let us check how well the selected sentences correspond with the tech-transfer potential. Users and in-house experts can rate publications (from a tech-transfer perspective) by assigning them to one of four categories: \texttt{A}, \texttt{B}, \texttt{C}, and \texttt{D} with \texttt{A} being the most and \texttt{D} the least promising. This feedback is stored and used for analytic and training purposes. Since both the feedback grade and the relevant (summary candidate) sentences are supposed to reflect the same aspect of papers, we can reasonably expect some correlation between the grades and relevant sentence counts. -\begin{figure}[!ht] +\begin{figure}[h] \centering \includegraphics[width=0.9\linewidth]{figures/highlights-histograms.png} \captionsetup{width=.9\linewidth} @@ -89,7 +89,7 @@ The best validation results were achieved after eight epochs which is slightly m Figure \ref{fig:histograms} shows the ratio of summary candidate sentences as predicted by the fine-tuned model in 4 categories (grades) of papers. This dataset does not overlap with the training data; hence, the results come solely from the model's ability to generalise. It is interesting to see that the Spearman's rank correlation coefficient \cite{spearman1961proof} between the normalised ``highlights'' counts and the ratings of papers is \textbf{0.4784} and is statistically significant ($P = 5.4 \times 10^{-74}$). This proves the presence of a monotonic association. For context, the correlation between the grades and the number of sentences chosen by the baseline approach is 0.06597 ($P = 0.03$). We can conclude that the classifier's output is indicative of publications' tech-transfer potential. -\begin{figure}[!ht] +\begin{figure}[t] \centering \includegraphics[width=\linewidth]{figures/dashboard-highlights.png} \captionsetup{width=.9\linewidth} @@ -121,7 +121,7 @@ Sustainability is an increasingly crucial concern of ethical AI \cite{van2021sus \subsection{Revisiting \texttt{parallel\_map}} -Even though most inference functions are CPU-bound, it turns out that sometimes they involve IO, especially when relying on the results of other remote models. This means a significant performance improvement can be achieved by implementing some inference functions asynchronously \cite{tilkov2010node}. Thus, \textit{GreatAI} also has to support decorating both regular (synchronous) and asynchronous functions. One notable consequence is that the batch processing feature must also be compatible with \texttt{async} inference functions. Batch processing is still a helpful feature since it is likely that async inference functions are both IO (remote calls) and CPU (local evaluation) constrained at the same time. Thus, they can benefit from multi-core parallelisation. +Even though most inference functions are CPU-bound (or GPU-bound), it turns out that sometimes they involve IO, especially when relying on the results of other remote models. This means a significant performance improvement can be achieved by implementing some inference functions asynchronously \cite{tilkov2010node}. Thus, \textit{GreatAI} also has to support decorating both regular (synchronous) and asynchronous functions. One notable consequence is that the batch processing feature must also be compatible with \texttt{async} inference functions. Batch processing is still a helpful feature since it is likely that async inference functions are both IO (remote calls) and CPU (local evaluation) constrained at the same time. Thus, they can benefit from multi-core parallelisation. However, the standard library's \texttt{multiprocessing}, the third party \texttt{multiprocess} \cite{mckerns2012building}, and, another popular library, \texttt{joblib}\footnote{\href{https://joblib.readthedocs.io/en/latest/}{joblib.readthedocs.io/en/latest}} all lack the support for efficiently parallelising async functions. For this reason, \texttt{parallel\_map} was reimplemented to create an event-loop in each worker process to keep the efficiency of non-blocking IO while also providing parallelisation for the CPU-bound sections of code. diff --git a/docs/thesis/chapters/6_results.tex b/docs/thesis/chapters/6_results.tex index 8a38ee2..c5c6480 100644 --- a/docs/thesis/chapters/6_results.tex +++ b/docs/thesis/chapters/6_results.tex @@ -71,10 +71,10 @@ Apply automation to trigger model retraining\textsuperscript{2} % Employ Agile, DevOps-style workflows, allow automatic rollback\textsuperscript{2} & Docker Image, WSGI application & \checkmark \\\hline % Deploy different versions of same application\textsuperscript{2} & Complex versioning support & $\sim$ \\\hline Allow experimentation with the inference code\textsuperscript{3} & Development mode \& auto-reload & \checkmark\checkmark \\\hline -Keep the model's API and documentation together\textsuperscript{3} & Dashboard and Swagger & \checkmark\checkmark \\\hline +Keep the model and its documentation together\textsuperscript{3} & Dashboard and Swagger & \checkmark\checkmark \\\hline Parallelise feature extraction\textsuperscript{3} & \texttt{parallel\_map} & \checkmark\checkmark \\\hline Cache predictions\textsuperscript{3} & \texttt{@GreatAI.create} & \checkmark\checkmark \\\hline -Support asynchronous top-down chaining of models\textsuperscript{3} & All decorators support async & \checkmark\checkmark \\\hline +Allow robustly composing inference functions\textsuperscript{3} & All decorators support async & \checkmark\checkmark \\\hline Implement standard schemas for common prediction tasks\textsuperscript{3} & \texttt{views} & \checkmark \\\hline \end{tabular}} @@ -181,10 +181,10 @@ Secondly, the survey answers and, in general, the interviewees may be subject to \section{Future work} The primary purpose of the library was to serve as a proxy through which its design decisions could be tested and evaluated in their practical context. For this reason, its design aimed to be a proof-of-principle for validating hypotheses and answering research questions. After successfully doing that, it has been turned into a practical software library suitable for production-use\footnote{Available at \href{https://pypi.org/project/great-ai/}{pypi.org/project/great-ai} and \href{https://hub.docker.com/repository/docker/schmelczera/great-ai}{hub.docker.com/repository/docker/schmelczera/great-ai}.}. - + The library's main limitations come from its bias toward NLP deployments. This is not unreasonable given the design's exploratory nature and the context of the case studies. Nevertheless, future work must focus on introducing and balancing support for many more fields' deployments. Although \textit{GreatAI} has already proved its utility, it has also shown that generalising and extending its functionality would be worthwhile. Therefore, many potential improvements are presented below. -\subsection{More ML fields} +\subsection{More ML domains and modalities} The cases presented in Chapter \ref{chapter:case} revolved around NLP. This, of course, heavily influenced the design process. The two most notable effects can be found in the REST API's \texttt{/predict} endpoint and some \texttt{utilities} functions. The former is streamlined to accept JSON-compatible data (which caters to textual and tabular data), while the latter gives robust feature extraction support only for textual input. However, in practice, sound, image, and video are also widely taken as input. Furthermore, with the rise of multimodal models \cite{gao2020survey}, even different combinations of them may be simultaneously taken as input. diff --git a/docs/thesis/chapters/appendix.tex b/docs/thesis/chapters/appendix.tex index 9c66ead..5c724f8 100644 --- a/docs/thesis/chapters/appendix.tex +++ b/docs/thesis/chapters/appendix.tex @@ -18,10 +18,10 @@ Similarly to the approach of \cite{serban2020adoption}, participants are asked a \item Integration with existing data infrastructure \item Querying, visualising and understanding metrics and event logging \item Allow experimentation with the inference code -\item Keep the model's API and documentation together +\item Keep the model and its documentation together \item Parallelise feature extraction \item Cache predictions -\item Support asynchronous top-down chaining of models +\item Allow robustly composing inference functions \end{enumerate} \chapter{TAM questionnaire} \label{appendix:questions} diff --git a/docs/thesis/main.pdf b/docs/thesis/main.pdf index da64355e5fcc96a32cbd6d45a7c62b7438d0f273..32bdc11786a3295d6c6a2b88f81c6bce8edadf4f 100644 GIT binary patch delta 24637 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 A1^@s6