LAVIS: One Interface for BLIP-2, InstructBLIP and a Dozen Vision-Language Tasks
LAVIS - A One-stop Library for Language-Vision Intelligence
At a glance
- What is it?
- Salesforce's LAVIS wraps image-language and video-language models behind a single loader, config and task split. It is a research library first, and the release cadence shows it.
- Who is it for?
- Adopt LAVIS if you need to run or fine-tune published Salesforce vision-language checkpoints (BLIP-2, InstructBLIP, BLIP-Diffusion, PNP-VQA, Img2LLM-VQA) through one loader and one config format, and you are willing to treat the repository as the source of truth rather than the PyPI package.
- Can I use it commercially?
- Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 105 days ago.
- What is it written in?
- Mainly Jupyter Notebook, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem LAVIS is aimed at: one loader instead of one script per model
Vision-language research produces a new checkpoint every few months, and each one historically arrived with its own inference script, its own preprocessing, and its own way of naming things. LAVIS's stated goal is to be a "one-stop comprehensive library" with a "unified interface" for image-language and video-language models and common datasets, per its ACL 2023 system demonstration paper. The intended user is someone who wants to compare or apply several of these checkpoints without rewriting the plumbing each time.
That framing matters for adoption. LAVIS is not a product SDK with a narrow, stable surface. It is a collection of research implementations (the README announces BLIP-2, InstructBLIP, BLIP-Diffusion, X-InstructBLIP, PNP-VQA and Img2LLM-VQA as separate releases) that share infrastructure. If your need is one specific model and nothing else, the shared infrastructure is overhead. If your need is three of them, or a benchmark across them, it is the reason to use the library at all.
The model, dataset, task split that defines the architecture
The design principle the technical report describes is a separation between models, datasets and tasks. A model class handles the network and its preprocessing; a dataset class handles loading and annotation format; a task class ties them together for training, evaluation or benchmarking. The README lists the task families the library covers: multimodal classification, retrieval, captioning, visual question answering, dialogue and pre-training.
This is the part of LAVIS worth understanding before you commit. Because the three pieces are separate, swapping a dataset does not require touching the model, and adding a task does not require reimplementing the model. The cost is indirection: to find out what a given checkpoint actually expects as input, you trace a config through the model, dataset and task registrations rather than reading a single function. The paper describes the library as "highly extensible and configurable", which is accurate, and also the source of the learning curve.
A second architectural layer sits on top: the projects/ directory. Each named release (blip2, instructblip, blip-diffusion, pnp-vqa, img2llm-vqa, xinstructblip) has its own subdirectory with a project page and, in several cases, a Colab notebook. So there are two ways to use LAVIS: through the core library interface, or by running a project's own notebook. The notebooks are the fastest path to seeing output; the core interface is the path to reusing anything.
Installing LAVIS and running a first model
The README states that LAVIS became available on PyPI in January 2023 under the package name salesforce-lavis, which gives the basic install as pip install salesforce-lavis. The repository also ships Jupyter notebook examples under examples/, and the README links Colab notebooks for specific projects, including examples/blip2_instructed_generation.ipynb and projects/xinstructblip/demo/run_demo.ipynb.
What the supplied material does not give is a full configuration reference: the README does not list config keys, model identifiers or dataset paths, and it points to the documentation site (opensource.salesforce.com/LAVIS) and the examples directory for those. Anyone planning an install should read the docs rather than work from the README alone, because the README is a release announcement page, not a setup guide. The Colab notebooks are the most reliable way to learn the expected call sequence, since they exercise the library end to end.
The practical implication: budget time for reading the docs site and one notebook before writing code. The install command is one line; knowing which model identifier and which config to pass is not, and that information lives outside the README.
Release cadence versus model announcements
This is the sharpest constraint in the supplied material. The most recent release listed is v1.0.2, dated 2023-03-06, following v1.0.1 on 2023-03-03 and v1.0.0 on 2023-01-30. The README's "What's New" section announces model releases through November 2023, including InstructBLIP in May 2023, BLIP-Diffusion in July 2023 and X-InstructBLIP in November 2023.
So the tagged releases stop in March 2023 while the announced models continue for another eight months. That does not mean the models are absent; it means they may exist only on the main branch rather than in a versioned release. For anyone pinning a dependency, that distinction is the whole decision. Installing salesforce-lavis from PyPI gives you whatever the package version contains, which may not include the later projects. Cloning the repository at a specific commit gives you the code the README describes, but without a release tag to anchor to.
The repository is not archived and the last push date is 2026-06-02, so the project is not dormant. But activity on the default branch and a published release are different things, and LAVIS's release history is the evidence for that gap.
Where LAVIS is the wrong tool
Three cases stand out from the material. First, production inference on a fixed model: if you have settled on one checkpoint and need a small, stable dependency, LAVIS brings an entire research framework, its dataset abstractions and its config system along with it. The unified interface is a benefit when you use more than one model and a liability when you use one.
Second, environments that require a maintained release channel. With the newest tag at v1.0.2 from March 2023, a team that upgrades only through tagged releases will not receive the model implementations announced later in 2023 without tracking the default branch. There is no deprecation or support policy described in the supplied material, and the library's own documentation is the only compatibility reference.
Third, work that depends on a stable API surface. A library whose headline feature is a unified interface across many research models will change that interface as new models are added. The README's history (six announced model releases across roughly a year) is a reasonable proxy for how often the surrounding code moves. If your integration cannot tolerate that, LAVIS is the wrong layer to build on.
The alternative: a single-model repository
The clearest contrast is not another library but the opposite structure: a repository that implements one model and nothing else. BLIP-2's own paper and project page exist independently of LAVIS, and the same is true for InstructBLIP, BLIP-Diffusion and the rest. A single-model repository typically ships one inference path, one set of weights, and one preprocessing routine, with no task registry or dataset abstraction in between.
The difference in approach is scope versus coupling. A single-model repository has a smaller surface to learn and a narrower set of things that can break when you upgrade, but you pay for each additional model separately: a second repository, a second environment, a second set of conventions. LAVIS trades that repetition for a shared interface and a shared config format, and accepts the indirection and the branch-versus-release gap as the price. Neither is strictly better; the choice depends on whether you are comparing models or shipping one.
If you are evaluating a single checkpoint, start with its own project page (LAVIS hosts these under projects/) and only pull in the wider library when you need a second model or a benchmark.
Licence and maintenance cost
LAVIS is BSD-3-Clause, per the repository and the licence badge in the README. That is a permissive licence, which generally means you can use, modify and redistribute the code with the copyright notice and disclaimer retained, and without a copyleft obligation on your own code. This is not legal advice, and the licence covers the LAVIS code, not necessarily the model weights or datasets that the library loads. Those may carry their own terms, and the supplied material does not state what they are. Check each checkpoint's and dataset's terms separately before commercial use.
The maintenance cost has two parts. The first is version drift: because the newest tag predates the newest announced models, you either pin to a release and forgo the later projects, or track the default branch and accept that your dependency is a moving target. The second is the cost of the abstraction itself. Working with LAVIS means learning its config format and the model/dataset/task split well enough to debug when something does not line up, and that knowledge is specific to this library. The technical report and the documentation site are the places that knowledge lives; the README is not.
Editorial conclusion
Adopt LAVIS if you need to run or fine-tune published Salesforce vision-language checkpoints (BLIP-2, InstructBLIP, BLIP-Diffusion, PNP-VQA, Img2LLM-VQA) through one loader and one config format, and you are willing to treat the repository as the source of truth rather than the PyPI package. Do not adopt it if you need a stable, frequently released dependency with a documented deprecation policy; the newest release is v1.0.2 from March 2023 while the README announces models through November 2023, so verify which of those model releases are actually present on the branch or tag you pin before planning work around them.
Community notes