Package: lit-nlp
🔥 Learning Interpretability Tool (LIT)The Learning Interpretability Tool (🔥LIT, formerly known as the Language
Interpretability Tool) is a visual, interactive ML model-understanding tool that
supports text, image, and tabular data. It can be run as a standalone server, or
inside of notebook environments such as Colab, Jupyter, and Google Cloud Vertex
AI notebooks.LIT is built to answer questions such as:What kind of examplesdoes my model perform poorly on?Why did my model make this prediction?Can this prediction be attributed
to adversarial behavior, or to undesirable priors in the training set?Does my model behave consistentlyif I change things like textual style,
verb tense, or pronoun gender?LIT supports a variety of debugging workflows through a browser-based UI.
Features include:Local explanationsvia salience maps, attention, and rich visualization
of model predictions.Aggregate analysisincluding custom metrics, slicing and binning, and
visualization of embedding spaces.Counterfactual generationvia manual edits or generator plug-ins to
dynamically create and evaluate new examples.Side-by-side modeto compare two or more models, or one model on a pair
of examples.Highly extensibleto new model types, including classification,
regression, span labeling, seq2seq, and language modeling. Supports
multi-head models and multiple input features out of the box.Framework-agnosticand compatible with TensorFlow, PyTorch, and more.LIT has awebsitewith live demos, tutorials,
a setup guide and more.Stay up to date on LIT by joining thelit-announcements mailing list.For a broader overview, check outour paperand theuser guide.DocumentationDocumentation indexFAQRelease notesDownload and InstallationLIT can be run via container image, installed viapipor built from source.
Building from source is necessary if you update any of the front-end or core
back-end code.Build container imageBuild the image usingdockerorpodman:gitclonehttps://github.com/PAIR-code/lit.git&&cdlit
dockerbuild--fileDockerfile--taglit-nlp.See theadvanced guidefor detailed instructions on using the
default LIT Docker image, running LIT as a containerized web app in different
scenarios, and how to creating your own LIT images.pip installationpipinstalllit-nlpThepipinstallation will install all necessary prerequisite packages for use
of the core LIT package.Itdoes notinstall the prerequisites for the provided demos, so you need to
install those yourself. Seerequirements_examples.txtfor the list of
packages required to run the demos.Install from sourceClone the repo:gitclonehttps://github.com/PAIR-code/lit.git&&cdlitNote: be sure you are running Python 3.10. If you have a different version onyour system, use thecondainstructions below to set up a Python 3.10
environment.Set up a Python environment withvenv:python-mvenv.venvsource.venv/bin/activateOr set up a Python environment usingconda:condacreate--namelit-nlp
condaactivatelit-nlp
condainstallpython=3.10
condainstallpipOnce you have the environment, install LIT's dependencies:python-mpipinstall-rrequirements.txt
python-mpipinstallcudnncupti# optional, for GPU supportpython-mpipinstalltorch# optional, for PyTorch# Build the frontend(cdlit_nlp;yarn&&yarnbuild)Note: Use the-r requirements.txtoption to install every dependency required
for the LIT library, its test suite, and the built-in examples. You can also
install subsets of these using the-r requirements_core.txt(core library),-r requirements_test.txt(test suite),-r requirements_examples.txt(examples), and/or any combination thereof.Note: if you seean errorrunningyarnon Ubuntu/Debian, be sure you have thecorrect version installed.Running LITExplore a collection of hosted demos on thedemos page.Quick-start: classification and regressionTo explore classification and regression models tasks from the popularGLUE benchmark:python-mlit_nlp.examples.glue_demo--port=5432--quickstartOr, usingdocker:dockerrun--rm-eDEMO_NAME=glue_demo-p5432:5432-tlit-nlp--quickstartNavigate tohttp://localhost:5432to access the LIT UI.Your default view will be asmall BERT-based modelfine-tuned on theStanford Sentiment Treebank,
but you can switch toSTS-BorMultiNLIusing the toolbar or the
gear icon in the upper right.Quick-start: language modelingTo explore predictions from a pre-trained language model (BERT or GPT-2), run:python-mlit_nlp.examples.lm_demo--models=bert-base-uncased--port=5432Or, usingdocker:dockerrun--rm-eDEMO_NAME=lm_demo-p5432:5432-tlit-nlp--models=bert-base-uncasedAnd navigate tohttp://localhost:5432for the UI.Notebook usageColab notebooks showing the use of LIT inside of notebooks can be found atlit_nlp/examples/notebooks.We provide a simpleColab demo.
Run all the cells to see LIT on an example classification model in the notebook.More ExamplesSeelit_nlp/examples. Most are run similarly to the
quickstart example above:python-mlit_nlp.examples.<example_name>--port=5432[optional--args]User GuideTo learn about LIT's features, check out theuser guide, or
watch thisvideo.Adding your own models or dataYou can easily run LIT with your own model by creating a customdemo.pylauncher, similar to those inlit_nlp/examples. The
basic steps are:Write a data loader which follows theDatasetAPIWrite a model wrapper which follows theModelAPIPass models, datasets, and any additionalcomponentsto the LIT server classFor a full walkthrough, seeadding models and data.Extending LIT with new componentsLIT is easy to extend with new interpretability components, generators, and
more, both on the frontend or the backend. See ourdocumentationto get
started.Pull Request ProcessTo make code changes to LIT, please work off of thedevbranch andcreate pull requests(PRs) against that branch. Themainbranch is for stable releases, and it is
expected that thedevbranch will always be ahead ofmain.Draft PRsare
encouraged, especially for first-time contributors or contributors working on
complex tasks (e.g., Google Summer of Code contributors). Please use these to
communicate ideas and implementations with the LIT team, in addition to issues.Prior to sending your PR or marking a Draft PR as "Ready for Review", please run
the Python and TypeScript linters on your code to ensure compliance with
Google'sPythonandTypeScriptStyle Guides.# Run Pylint on your code using the following command from the root of this repopushdlit_nlp&pylint&popd# Run ESLint on your code using the following command from the root of this repopushdlit_nlp&yarnlint&popdCiting LITIf you use LIT as part of your work, please citeour EMNLP paper:@misc{tenney2020language,
    title={The Language Interpretability Tool: Extensible, Interactive Visualizations and Analysis for {NLP} Models},
    author={Ian Tenney and James Wexler and Jasmijn Bastings and Tolga Bolukbasi and Andy Coenen and Sebastian Gehrmann and Ellen Jiang and Mahima Pushkarna and Carey Radebaugh and Emily Reif and Ann Yuan},
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
    year = "2020",
    publisher = "Association for Computational Linguistics",
    pages = "107--118",
    url = "https://www.aclweb.org/anthology/2020.emnlp-demos.15",
}DisclaimerThis is not an official Google product.LIT is a research project and under active development by a small team. There
will be some bugs and rough edges, but we're releasing at an early stage because
we think it's pretty useful already. We want LIT to be an open platform, not a
walled garden, and we would love your suggestions and feedback - drop us a line
in theissues.