paper-ParallelPython-Short/sections/isolation.tex
Boris Glavic 4c98ca952d updates
2022-04-01 21:00:20 -05:00

29 lines
2.2 KiB
TeX

%!TEX root=../main.tex
An isolated cell execution notebook (ICE) isolates cells by executing each in a fresh kernel.
In this section, we review key differences between the ICE model used in systems like Vizier~\cite{brachmann:2020:cidr:your} or Nodebook~\cite{nodebook}, and the monolithic approach of Jupyter.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tinysection{Communication Model}
As in a monolithic kernel notebook, an ICE notebook maintains a shared global state that is manipulated by each individual cell.
However, these manipulations are explicit: for a variable defined in one cell (the writer) to be used in a subsequent cell (the reader): (i) the writer must explicitly export the variable into the global state, and (ii) the reader must explicitly import the variable from the global state.
For example, Vizier provides explicit setter and getter functions (respectively) on a global state variable, while Nodebook inspects the Python interpreter's global scope dictionary in between cell executions.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tinysection{State Serialization}
When a state variable is exported, it is serialized by the Python interpreter and exported into a versioned state management system.
We refer to the serialized state as an \emph{artifact}.
Each cell executes in the context of a scope, a mapping from variable names to artifacts that can be imported by the cell.
By default, Vizier serializes state through Python's native \texttt{pickle} library, although it can be easily extended with codecs for specialized types that are either unsupported by \texttt{pickle}, or for which it is not efficient:
(i) Python code (e.g., import statements, and function or class definitions) is exported as raw Python code and imported with \texttt{eval}.
(ii) Pandas dataframes are exported in parquet format and are exposed to subsequent cells through Apache Arrow. % direct access.
% We note the need to support transitive dependencies like functions that invoke other functions.
% Exporting (resp., importing) the former function requires exporting (importing) the latter.
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../main"
%%% End: