Releases: JohnSnowLabs/spark-nlp
6.0.5
📢 Spark NLP 6.0.5: Enhanced Microsoft Fabric Integration & Markdown Processing
We're thrilled to announce the release of Spark NLP 6.0.5! This version introduces a new Markdown Reader, enabling direct processing of Markdown files into structured Spark DataFrames for more diverse NLP workflows. We have also enhanced Microsoft Fabric integration, allowing for seamless model downloads from Lakehouse containers.
🔥 Highlights
- New Markdown Reader: Introduce the new
MarkdownReader
for effortlessly parsing Markdown files into structured Spark DataFrames, paving the way for advanced content analysis and NLP on Markdown content. - Enhanced Microsoft Fabric Support: Download models directly from Microsoft Fabric Lakehouse containers, streamlining your NLP deployments in the Fabric environment.
🚀 New Features & Enhancements
-
New MarkdownReader Annotator: Introducing the
MarkdownReader
, a powerful new feature that allows you to read and parse Markdown files directly into a structured Spark DataFrame. This enables efficient processing and analysis of Markdown content for various NLP applications. We recommend using this reader automatically in ourPartition
annotator. (Link to notebook)partitioner = Partition(content_type = "text/markdown"").partition(md_directory)
-
Microsoft Fabric Integration: Spark NLP now supports downloading models from Microsoft Fabric Lakehouse containers, providing a more integrated and efficient workflow for users leveraging Microsoft Fabric. This enhancement ensures smoother model access and deployment within the Fabric ecosystem. For example, you can define the path to our pretrained models in Spark like so:
from pyspark import SparkConf conf = SparkConf() conf.set("spark.jsl.settings.pretrained.cache_folder", "abfss://[email protected]/lakehouse_folder.Lakehouse/Files/my_models")
🐛 Bug Fixes
We performed crucial maintenance updates to all of our example notebooks, ensuring that they are reproducible and properly displayed in GitHub.
❤️ Community Support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas, and show off how you use Spark NLP!
- Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
⚙️ Installation
Python
#PyPI
pip install spark-nlp==6.0.5
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.5
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.5
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.5
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.5
Apple Silicon
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.5
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.5
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.5
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.5
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>6.0.5</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>6.0.5</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>6.0.5</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>6.0.5</version>
</dependency>
FAT JARs
- CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-6.0.5.jar
- GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-6.0.5.jar
- M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-6.0.5.jar
- AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-6.0.5.jar
What's Changed
Full Changelog: 6.0.4...6.0.5
6.0.4
📢 Spark NLP 6.0.4: MiniLMEmbeddings, DataFrame Optimization, and Enhanced PDF Processing
We are excited to announce the release of Spark NLP 6.0.4! This version brings advancements in text embeddings with the introduction of the MiniLM family, Spark DataFrame optimizations, and enhanced PDF document parsing. Upgrade to 6.0.4 to leverage these cutting-edge features and expand your NLP capabilities at scale.
Stay updated with our latest examples and tutorials by visiting our Medium - Spark NLP blog!
🔥 Highlights
- Introducing MiniLMEmbeddings: Support for the efficient and powerful MiniLMEmbeddings models, providing state-of-the-art text representations.
- New DataFrameOptimizer: A new DataFrameOptimizer transformer to streamline and optimize Spark DataFrame operations, offering configurable repartitioning, caching, and persistence options.
- Advanced PDF Reader Features: Enhancements to the PDF Reader with extractCoordinates for spatial metadata, normalizeLigatures for improved text consistency, and a new exception column for enhanced fault tolerance.
🚀 New Features & Enhancements
Advanced Text Embeddings
This release introduces a new family of efficient text embedding models:
- MiniLMEmbeddings: Support for the
MiniLMEmbeddings
annotator, enabling the use of MiniLM models for generating highly efficient and effective sentence embeddings. These models are designed to provide strong performance while being significantly smaller and faster than larger alternatives, making them ideal for a wide range of NLP tasks requiring compact and powerful text representations. (Link to notebook)
Spark DataFrame Optimization
- DataFrameOptimizer: Introducing the new DataFrameOptimizer transformer, designed to enhance the performance and manageability of Spark DataFrames within your NLP pipelines. (Link to notebook)
- Configurable Repartitioning: Allows for automatic repartitioning of DataFrames, ensuring optimal data distribution for downstream processing.
- Optional Caching: Supports DataFrame caching (doCache) to significantly speed up iterative computations.
- Persistent Output: Adds robust support for persisting DataFrames to disk in various formats (csv, json, parquet) with custom writer options via outputOptions.
- Schema Preservation: Efficiently preserves the original DataFrame schema, making it a seamless utility for complex Spark NLP pipelines.
Enhanced PDF Document Processing
The PDF Reader and PdfToText transformer have been significantly improved for more comprehensive and fault-tolerant document parsing. (Link to notebook)
- Spatial Metadata Extraction (extractCoordinates): A new configurable parameter extractCoordinates in PdfToText and the PDF Reader. When enabled, this outputs detailed spatial metadata (text position and dimensions) for each character in the PDF.
- Ligature Normalization (normalizeLigatures): When extractCoordinates is enabled, the normalizeLigatures option ensures that ligature characters (e.g., fi, fl, œ) are automatically normalized to their decomposed forms (fi, fl, oe).
- Fault Tolerance with Exception Column: A new exception output column has been introduced to capture and log any processing errors encountered while handling individual PDF documents.
❤️ Community Support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas, and show off how you use Spark NLP!
- Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
⚙️ Installation
Python
#PyPI
pip install spark-nlp==6.0.4
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.4
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.4
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.4
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.4
Apple Silicon
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.4
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.4
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.4
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.4
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>6.0.4</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>6.0.4</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>6.0.4</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>6.0.4</version>
</dependency>
FAT JARs
- CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-6.0.4.jar
- GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-6.0.4.jar
- M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-6.0.4.jar
- AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-6.0.4.jar
What's Changed
- Sparknlp 282 Introducing MiniLMEmbeddings #14610 by @prabod
- [SPARKNLP-1086] Introducing DataFrameOptimizer #14607 by @danilojsl
- [SPARKNLP-1161] Adding features to PDF Reader #14596 by @danilojsl
Full Changelog: 6.0.3...6.0.4
6.0.3
📢 Spark NLP 6.0.3: Multimodal E5-V Embeddings and Enhanced Document Partitioning
We are excited to announce the release of Spark NLP 6.0.3! This version introduces significant advancements in multimodal capabilities and further refines document processing workflows. Upgrade to 6.0.3 to leverage these cutting-edge features and expand your NLP and vision task capabilities at scale.
🔥 Highlights
- Introducing E5-V Universal Multimodal Embeddings: Support for
E5VEmbeddings
, enabling universal multimodal embeddings with Multimodal Large Language Models (MLLMs). It can express semantic similarly between texts, images, or a combination of both. - Enhanced Document Partitioning: Improvements to the
Partition
andPartitionTransformer
annotators with new character and title-based chunking strategies. - New XML Reader: Added
sparknlp.read().xml()
and integrated XML support into thePartition
annotator for streamlined XML document processing.
🚀 New Features & Enhancements
E5-V Multimodal Embeddings
This release further boosts Spark NLP's multimodal processing power with the integration of E5-V.
E5VEmbeddings
is designed to adapt MLLMs for achieving universal multimodal embeddings. It leverages MLLMs with prompts to effectively bridge the modality gap between different types of inputs, demonstrating strong performance in multimodal embeddings even without fine-tuning. (Link to notebook)
Enhanced Unstructured Document Processing
The Partition
and PartitionTransformer
components now include additional chunking strategies and enhancements, which divides content into meaningful units based on the document's structure or number of characters.
- New Chunking Strategies (Link to notebook)
- Character Number Strategy (
maxCharacters
): Split documents by number of characters. - Title-Based Chunking Strategy (
byTitle
): Split documents by titles in the documents. Additional settings: - Soft Chunking Limit (
newAfterNChars
): Allows for early section breaks before reaching themaxCharacters
threshold. - Contextual Overlap (
overlapAll
): Adds trailing context from the previous chunk to the next, improving semantic continuity.
- Character Number Strategy (
- Enhancements
- Page Boundary Splitting: Respects
pageNumber
metadata and starts a new section when a page changes. - Title Inclusion Behavior: Ensures titles are embedded within the following content rather than forming isolated chunks.
- New XML Reader: This release introduces a new feature that enables reading and parsing XML files into a structured Spark DataFrame. (Link to notebook)
- Added
sparknlp.read().xml()
: This method accepts file paths of XML content. - Use in Partition: XML content can now be processed using the
Partition
annotator by settingcontent_type = "application/xml"
.
- Added
- Page Boundary Splitting: Respects
🐛 Bug Fixes
- @thec0dewriter fixed a typo in our excel reader notebook (#14591) Thanks a lot!
❤️ Community Support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas, and show off how you use Spark NLP!
- Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
⚙️ Installation
Python
#PyPI
pip install spark-nlp==6.0.3
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.3
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.3
Apple Silicon
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.3
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.3
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>6.0.3</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>6.0.3</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>6.0.3</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>6.0.3</version>
</dependency>
FAT JARs
- CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-6.0.3.jar
- GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-6.0.3.jar
- M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-6.0.3.jar
- AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-6.0.3.jar
What's Changed
- [SPARKNLP-1138] Adding semantic chunking to partition #14593 by @danilojsl
- [SPARKNLP-1163] Adding title chunking strategy #14594 by @danilojsl
- SparkNLP 1143 - Introducing e5-v universal embeddings with multimodal large language models #14597 by @prabod
- Fix reference copy pasted from Excel reader #14591 by @thec0dewriter
- [SPARKNLP-1119] Adding XML reader #14598 by @danilojsl
Full Changelog: 6.0.2...6.0.3
6.0.2
📢 Spark NLP 6.0.2: Advancing Multimodal Capabilities and Streamlining Document Processing
We are thrilled to announce the release of Spark NLP 6.0.2! This version introduces powerful new multimodal models and significantly enhances document processing workflows. Upgrade to 6.0.2 to leverage these cutting-edge features and expand your NLP and vision task capabilities at scale.
Stay updated with our latest examples and tutorials by visiting our Medium - Spark NLP blog!
🔥 Highlights
- Introducing InternVL: Support for the state-of-the-art
InternVLForMultiModal
model, enabling advanced visual question answering with InternVL 2, 2.5, and 3 series models. - Introducing Florence-2: Integration of Florence-2 in
Florance2Transformer
, a sophisticated vision foundation model for diverse prompt-based vision and vision-language tasks like captioning, object detection, and segmentation. - New Document Partitioning Feature: Added the
Partition
andPartitionTransformer
annotator for a unified and configurable interface with Spark NLP readers, simplifying unstructured data loading.
🚀 New Features & Enhancements
Advanced Multimodal Model Integrations
This release significantly boosts Spark NLP's multimodal processing power with the integration of two new visual language models:
- InternVL:
InternVLForMultiModal
is a powerful multimodal large language model is specifically designed for visual question answering. This annotator is versatile, supporting the InternVL 2, 2.5, and 3 families of models, allowing users to tackle complex visual-linguistic tasks. (Link to notebook) - Florence-2: Introducing
Florance2Transformer
, an advanced vision foundation model. Florence-2 utilizes a prompt-based approach, enabling it to perform a wide array of vision and vision-language tasks. Users can leverage simple text prompts to execute tasks such as image captioning, object detection, and image segmentation with high accuracy. (Link to notebook)
Enhanced Unstructured Document Processing
- Partitioning Documents: This release introduces the new
Partition
andPartitionTransformer
annotator.Partition
provides a unified interface for extracting structured content from various document formats into Spark DataFrames. It supports input from files, URLs, in-memory strings, or byte arrays and handles formats such as text, HTML, Word, Excel, PowerPoint, emails, and PDFs. It automatically selects the appropriate reader based on file extension or MIME type and allows customization via parameters. (Link to notebook)- The
PartitionTransformer
annotator allows you to use thePartition
feature more smoothly within existing Spark NLP workflows, enabling seamless reuse of your pipelines.PartitionTransformer
can be used for extracting structured content from various document types using Spark NLP readers. It supports reading from files, URLs, in-memory strings, or byte arrays, and returns parsed output as a structured Spark DataFrame. (Link to notebook)
- Key Improvements:
- Simplifies integration with Spark NLP readers through a unified interface.
- Adds flexibility by enabling more reader-specific configurations.
- Enhances the maintainability and scalability of data loading workflows.
🐛 Bug Fixes
- Adjusted python type annotations for the
AutoGGUFModel
(#14576)
❤️ Community Support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas, and show off how you use Spark NLP!
- Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
⚙️ Installation
Python
#PyPI
pip install spark-nlp==6.0.2
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.2
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.2
Apple Silicon
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.2
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.2
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>6.0.2</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>6.0.2</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>6.0.2</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>6.0.2</version>
</dependency>
FAT JARs
- CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-6.0.2.jar
- GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-6.0.2.jar
- M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-6.0.2.jar
- AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-6.0.2.jar
What's Changed
- SparkNLP - 1123 Introducing InternVL #14578 by @prabod
- Documentation for SparkNLP Readers and Partition class #14581 by @paulamib123
- Sparknlp-1174 Adding Partitioning Documents Feature #14579 by @danilojsl
- SparkNLP 1131 - Introducing Florance-2 #14585 by @prabod
Full Changelog: 6.0.1...6.0.2
Spark NLP 6.0.1: SmolVLM, PaliGemma 2, Gemma 3, PDF Reader enhancements
📢 Spark NLP 6.0.1: Introducing New State-of-the-Art Vision-Language Models and Enhanced Document Processing
We are pleased to announce the release of Spark NLP 6.0.1, bringing exciting new vision features and continued enhancements. Expand your NLP capabilities at scale for a wide range of tasks by upgrading to 6.0.1 and leverage these powerful new additions and improvements!
We also have been adding blog posts covering various examples for our newest features. Check them out at Medium - Spark NLP!
🔥 Highlights
- Added support for several new State-of-the-Art vision language models (VLM) including Gemma 3, PaliGemma, PaliGemma2, and SmolVLM.
- Introduced new parameter options for the PDF Reader for enhanced document ingestion control.
🚀 New Features & Enhancements
New VLM Implementations
This release adds support for several cutting-edge VLMs, significantly expanding the range of tasks you can tackle with Spark NLP:
- Gemma 3: The latest version of Google's lightweight, state-of-the-art open models. (link to notebook)
- PaliGemma and PaliGemma 2: Integration of the original PaliGemma vision-language model by Gogle. This annotator can also read PaliGemma2 models. (link to notebook)
- SmolVLM: small, fast, memory-efficient, and fully open-source 2B VLM (link to notebook)
PDF Reader Enhancements
The PDF Reader now includes additional parameters and options, providing users with more flexible and controlled ingestion of PDF documents, improving handling of various PDF structures. (link to notebook)
You can now
- Add
splitPage
parameter to identify the correct number of pages - Add
onlyPageNum
parameter to display only the number of pages of the document - Add
textStripper
parameter used for output layout and formatting - Add
sort
parameter to enable or disable sorting lines
🐛 Bug Fixes
This release also includes fixes for several issues:
- Fixed a python error in
RoBERtaMultipleChoice
, preventing these types of annotators to be loaded in Python - Fixed various typos and issues in our Jupyter notebook examples
❤️ Community Support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas, and show off how you use Spark NLP!
- Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
⚙️ Installation
Python
#PyPI
pip install spark-nlp==6.0.1
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.1
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:6.0.1
Apple Silicon
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:6.0.1
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:6.0.1
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>6.0.1</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>6.0.1</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>6.0.1</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>6.0.1</version>
</dependency>
FAT JARs
- CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-6.0.1.jar
- GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-6.0.1.jar
- M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-6.0.1.jar
- AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-6.0.1.jar
What's Changed
- [SPARKNLP-1164] Updating python 3.7 to 3.8 for jobs spark34 and spark33 by @danilojsl #14565
- [SPARKNLP-1177] Solving typo in Python for RoBertaForMultipleChoice by @danilojsl #14567
- Sparknlp 1115 Introducing SmolVLM by @prabod #14552
- Fixing typos in notebooks by @ahmedlone127 #14570
- SparkNLP 1121 Introducing PaliGemma by @prabod #14551
- SparkNLP 1124 Introducing Gemma 3 by @prabod #14556
- Sparknlp-1158 Adding Parameters Options to PDF Reader by @danilojsl #14562
Full Changelog: 6.0.0...6.0.1
Spark NLP 6.0.0: PDF Reader, Excel Reader, PowerPoint Reader, Vision Language Models, Native Multimodal in GGUF, and many more!
📢 Spark NLP 6.0.0: A New Era for Universal Ingestion and Multimodal LLM Processing at Scale
From raw documents to multimodal insights at enterprise scale
With Spark NLP 6.0.0, we are setting a new standard for building scalable, distributed AI pipelines. This release transforms Spark NLP from a pure NLP library into the de facto platform for distributed LLM ingestion and multimodal batch processing.
This release introduces native ingestion for enterprise file types including PDFs, Excel spreadsheets, PowerPoint decks, and raw text logs, with automatic structure extraction, semantic segmentation, and metadata preservation — all in scalable, zero-code Spark pipelines.
At the same time, Spark NLP now natively supports Vision-Language Models (VLMs), loading quantized multimodal models like LLAVA, Phi Vision, DeepSeek Janus, and Llama 3.2 Vision directly via Llama.cpp, ONNX, and OpenVINO runtimes with no external inference servers, no API bottlenecks.
With 6.0.0, Spark NLP offers a complete, distributed architecture for universal data ingestion, multimodal understanding, and LLM batch inference at scale — enabling retrieval-augmented generation (RAG), document understanding, compliance audits, enterprise search, and multimodal analytics — all within the native Spark ecosystem.
One unified framework. Text, vision, documents — at Spark scale. Zero boilerplate. Maximum performance.
🌟 Spotlight Feature: AutoGGUFVisionModel — Native Multimodal Inference with Llama.cpp
Spark NLP 6.0.0 introduces the new AutoGGUFVisionModel
, enabling native multimodal inference for quantized GGUF models directly within Spark pipelines. Powered by Llama.cpp, this annotator makes it effortless to run Vision-Language Models (VLMs) like LLAVA-1.5-7B Q4_0, Qwen2 VL, and others fully on-premises, at scale, with no external servers or APIs required.
With Spark NLP 6.0.0, Llama.cpp vision models are now first-class citizens inside DataFrames, delivering multimodal inference at scale with native Spark performance.
Why it matters
For the first time, Spark NLP supports pure vision-text workflows, allowing you to pass raw images and captions directly into LLMs that can describe, summarize, or reason over visual inputs.
This unlocks batch multimodal processing across massive datasets with Spark’s native scalability — perfect for product catalogs, compliance audits, document analysis, and more.
How it works
- Accepts raw image bytes (not Spark's OpenCV format) for true end-to-end multimodal inference.
- Provides a convenient helper function
ImageAssembler.loadImagesAsBytes
to prepare image datasets effortlessly. - Supports all Llama.cpp runtime parameters like context length (
nCtx
), top-k/top-p sampling, temperature, and repeat penalties, allowing fine control over completions.
Example usage
documentAssembler = DocumentAssembler() \
.setInputCol("caption") \
.setOutputCol("caption_document")
imageAssembler = ImageAssembler() \
.setInputCol("image") \
.setOutputCol("image_assembler")
data = ImageAssembler \
.loadImagesAsBytes(spark, "src/test/resources/image/") \
.withColumn("caption", lit("Caption this image."))
model = AutoGGUFVisionModel.pretrained() \
.setInputCols(["caption_document", "image_assembler"]) \
.setOutputCol("completions") \
.setBatchSize(4) \
.setNPredict(40) \
.setTopK(40) \
.setTopP(0.95) \
.setTemperature(0.05)
pipeline = Pipeline().setStages([documentAssembler, imageAssembler, model])
results = pipeline.fit(data).transform(data)
results.selectExpr("reverse(split(image.origin, '/'))[0] as image_name", "completions.result").show(truncate=False)
📚 A full notebook walkthrough is available here.
🔥 New Features & Enhancements
PDF Reader
Font-aware PDF ingestion is now available with automatic page segmentation, encrypted file support, and token-level coordinate extraction, ideal for legal discovery and document Q&A.
Excel Reader
Spark NLP can now ingest .xls
and .xlsx
files directly into Spark DataFrames with automatic schema detection, multiple sheet support, and rich-text extraction for LLM pipelines.
PowerPoint Reader
Spark NLP introduces a native reader for .ppt
and .pptx
files. Capture slides, speaker notes, themes, and alt text at the document level for downstream summarization and retrieval.
Extractor and Cleaner Annotators
New Extractor and Cleaner annotators allow you to pull structured data (emails, IP addresses, dates) from text or clean noisy text artifacts like bullets, dashes, and non-ASCII characters at scale.
Text Reader
A high-performance TextReader is now available to load .txt
, .csv
, .log
and similar files. It automatically detects encoding and line endings for massive ingestion jobs.
AutoGGUFVisionModel for Multimodal Llama.cpp Inference
Spark NLP now supports vision-language models in GGUF format using the new AutoGGUFVisionModel annotator. Run models like LLAVA-1.5-7B Q4_0 or Qwen2 VL entirely within Spark using Llama.cpp, enabling native multimodal batch inference without servers.
DeepSeek Janus Multimodal Model
The DeepSeek Janus model, tuned for instruction-following across text and images, is now fully integrated and available via a simple pretrained call.
Qwen-2 Vision-Language Model Catalog
Support for Alibaba’s Qwen-2 VL series (0.5B to 7B parameters) is now available. Use Qwen-2 checkpoints for OCR, product search, and multimodal retrieval tasks with unified APIs.
Native Multimodal Support with Phi-3.5 Vision
The new Phi3Vision annotator brings Microsoft’s Phi-3.5 multimodal model into Spark NLP. Process images and prompts together to generate grounded captions or visual Q&A results, all with a model footprint of less than 1 GB.
LLAVA 1.5 Vision-Language Transformer
Spark NLP now supports LLAVA 1.5 (7B) natively for screenshot Q&A, chart reading, and UI testing tasks. Build fully distributed multimodal inference pipelines without external services or dependencies.
Native Cohere Command-R Models
Cohere’s multilingual Command-R models (up to 35B parameters) are now fully integrated. Perform reasoning, RAG, and summarization tasks with no REST API latency and no token limits.
OLMo Family Support
Spark NLP now supports the full OLMo suite of open-weight language models (7B, 1.7B, and more) directly in Scala and Python. OLMo models come with full training transparency, Dolma-sized vocabularies, and reproducible experiment logs, making them ideal for academic research and benchmarking.
Multiple-Choice Heads for LLMs
New lightweight multiple-choice heads are now available for ALBERT
, DistilBERT
, RoBERTa
, and XLM-RoBERTa
models. These are perfect for building auto-grading systems, educational quizzes, and choice ranking pipelines.
AlbertForMultipleChoice
DistilBertForMultipleChoice
RoBertaForMultipleChoice
XlmRoBertaForMultipleChoice
VisionEncoderDecoder Improvements
The Scala API for VisionEncoderDecoder has been fully refactored to expose .generate()
parameters like batch size and maximum tokens, aligning it one-to-one with the Python API.
🐛 Bug Fixes
Better GGUF Error Reporting
When a GGUF file is missing tensors or uses unsupported quantization, Spark NLP now provides clear and actionable error messages, including guidance on how to fix or convert the model.
Fixed MXBAI Typo
A small typo related to the MXBAI integration was corrected to ensure consistency across annotator names and pretrained model references.
VisionEncoderDecoder Alignment
The Scala VisionEncoderDecoder wrapper has been updated to fully match the Python API. It now exposes parameters like batch size and maximum tokens, fixing discrepancies that could occur in cross-language pipelines.
Minor Naming Improvements
Variable naming inconsistencies have been cleaned up throughout the codebase to ensure a more uniform and predictable developer experience.
📝 Models
We have added more than 110,000 new models and pipelines. The complete list of all 88,000+ models & pipelines in 230+ languages is available on our Models Hub.
❤️ Community support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas,
and show off how you use Spark NLP! - Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
Installation
Python
#PyPI
pip install spark-nlp==6.0.0
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:6.0.0
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_...
Spark NLP 5.5.3: Enhanced Embeddings, Fixed Attention Masks, Performance Optimizations, and 100K Free Models
📢 Spark NLP: Enhanced Embeddings, Fixed Attention Masks, and Performance Optimizations
Introduction
We’re excited to introduce the latest release of Spark NLP 5.5.3, featuring critical enhancements and bug fixes for several of our Text Embeddings annotators. These improvements ensure even more reliable and efficient performance for your NLP workflows.
But that’s not all—we’re also celebrating a major milestone: crossing 100,000 truly free and open models on our Models Hub! This achievement underscores our commitment to making state-of-the-art NLP accessible to everyone, forever.
Upgrade today to take advantage of these enhancements, and thank you for being part of the Spark NLP community. Your support and contributions continue to drive innovation forward!
🔥 Highlights
- Enhanced BGE Embeddings with configurable pooling strategies
- Fixed attention mask padding across multiple embedding models
- Major performance optimizations for transformer models
- Improved model default configurations and traits
🚀 New Features
Enhanced BGE Embeddings
Previously, BGE embeddings used a fixed pooling strategy that didn't match all model variants, resulting in suboptimal performance for some models (cosine similarity around 0.97 compared to the original implementation). Different BGE models are trained with different pooling strategies - some use CLS token pooling while others use attention-based average pooling.
- Added new
useCLSToken
parameter to control embedding pooling strategy - Changed default pretrained model from "bge_base" to "bge_small_en_v1.5"
val embeddings = BGEEmbeddings.pretrained("bge_small_en_v1.5")
.setUseCLSToken(true) // Use CLS token pooling (default)
.setInputCols("document")
.setOutputCol("embeddings")
🛠 Improvements & Bug Fixes
Attention Mask Fixes
Fixed incorrect padding in attention mask calculations for multiple models:
- MPNet
- BGE
- E5
- Mxbai
- Nomic
- SnowFlake
- UAE
This fix ensures consistent results between native implementations and ONNX versions.
Other Fixes
- Fixed Llama3 download issues in Python
- Optimized OpenVINO and ONNX inference paths
- Enhanced code cleanup and standardization
🔄 Breaking Changes
BGE Embeddings Updates
-
Default Model Change:
- Old default: "bge_base"
- New default: "bge_small_en_v1.5"
- Action required: Explicitly specify "bge_base" if needed
-
Pooling Strategy:
- New
useCLSToken
parameter defaults to True - May affect embedding calculations
- Action required: Verify existing implementations and set parameter explicitly if needed
- New
💡 Usage Examples
Specifying BGE Model Version
// Using new default
val embeddingsNew = BGEEmbeddings.pretrained()
// Using previous default explicitly
val embeddingsOld = BGEEmbeddings.pretrained("bge_base")
Configuring Pooling Strategy
// Using CLS token pooling
val embeddingsCLS = BGEEmbeddings.pretrained()
.setUseCLSToken(true)
// Using attention-based average pooling
val embeddingsAvg = BGEEmbeddings.pretrained()
.setUseCLSToken(false)
❤️ Community support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas,
and show off how you use Spark NLP! - Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
Installation
Python
#PyPI
pip install spark-nlp==5.5.3
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.3
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.3
Apple Silicon (M1 & M2)
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.3
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.3
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.3
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>5.5.3</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>5.5.3</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>5.5.3</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>5.5.3</version>
</dependency>
FAT JARs
-
CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-5.5.3.jar
-
GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-5.5.3.jar
-
M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-5.5.3.jar
-
AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-5.5.3.jar
What's Changed
- Models hub by @maziyarpanahi in #14490
- LLama3 download fix by @C-K-Loan in #14508
- Bugfix: wrong attention mask calculation resulted in wrong embeddings by @maziyarpanahi in #14496
- Models hub by @maziyarpanahi in #14513
- Release/553 release candidate by @maziyarpanahi in #14511
Full Changelog: 5.5.2...5.5.3
Spark NLP 5.5.2: GGUF Embeddings, New HTML/Email/Word Ingestion, Enhanced OpenVINO Support, a New Q&A Annotator, and More Enhancements & Fixes
📢 Spark NLP 5.5.2
We’re thrilled to introduce the latest enhancements and new features in this release of Spark NLP! These additions bring more powerful model inference capabilities, seamless data ingestion methods, and greater flexibility for scaling your NLP workflows.
Upgrade today to take advantage of these new capabilities and improvements. As always, we look forward to your feedback and contributions, and thank you for being part of the Spark NLP community!
🔥 New Features & Enhancements
🚀 Major New Features
-
OpenVINO Support for Transformers (#14408)
Many popular transformer-based annotators now leverage OpenVINO for faster inference on Intel hardware. Enjoy speedier pipelines across a wide array of models—such as DeBerta, DistilBert, RoBerta, XlmRoBerta, Albert, and more—enabling efficient, production-grade NLP at scale. -
BLIPForQuestionAnswering Transformer (#14422)
Introducing BLIPForQuestionAnswering, a new image-based question-answering transformer. Simply provide an image and a question, and BLIP will deliver contextually relevant answers. Perfect for use cases in image analysis, e-commerce, and beyond. -
AutoGGUFEmbeddings Annotator (#14433)
Seamlessly integrate AutoGGUFModels into your NLP pipeline. The new AutoGGUFEmbeddings annotator provides dense vector embeddings, making it easier than ever to incorporate advanced sentence embeddings into your workflows. We’ve included an end-to-end notebook to help you get started right away.
📜 New Data Ingestions
-
Parsing HTML to DataFrames (#14449)
Need to analyze web content at scale? Use sparknlp.read().html() to parse local or remote HTML files into structured Spark DataFrames. This new feature makes web-scale data analysis and downstream NLP tasks more accessible and scalable. -
Email Content to DataFrames (#14455)
Leveragesparknlp.read().email()
to transform email content into organized DataFrames. Analyze communications, extract insights, and enrich your NLP pipelines with minimal effort. (Requires #14449 to be merged first.) -
Microsoft Word Document Parsing (#14476)
Turn .docx and .doc files into structured Spark DataFrames for streamlined integration into your NLP projects. From enterprise documents to reports, this feature simplifies data preparation and analysis at scale.
🐛 Bug Fixes
-
Microsoft Fabric Integration (#14467)
We’ve added support for Microsoft Fabric to store and retrieve word embeddings efficiently. Leverage your existing infrastructure to scale Spark NLP solutions more effectively. -
cuDNN Upgrade Instructions for Databricks (#14451)
Easily upgrade cuDNN on Databricks to accelerate ONNX model inference on GPU, and take advantage of updated installation instructions for a cleaner setup. -
Metadata Preservation in ChunkEmbeddings (#14462)
ChunkEmbeddings now retain original metadata, ensuring richer context and more meaningful insights in your downstream tasks. -
Default Names and Languages for New Annotators (#14469)
We’ve standardized default names and languages in our seq2seq annotators for better clarity, consistency, and ease of use.
📦 Dependencies
Updated:
- Jsoup has been updated from 1.18.1 to 1.18.2 to ensure compatibility and maintain security and performance standards.
New Additions for Email and Document Parsing:
-
Jakarta Mail (jakarta.mail:jakarta.mail-api:2.1.3): Added to support parsing and processing email content.
-
Angus Mail (org.eclipse.angus:angus-mail:2.0.3): Complementary mail handling library integrated for more robust email parsing capabilities.
-
Apache POI (org.apache.poi:poi-ooxml:4.1.2 & org.apache.poi:poi-scratchpad:4.1.2): Introduced for parsing Word documents (.docx and .doc) into structured DataFrames, enabling seamless integration of document-based data into Spark NLP workflows.
❤️ Community support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas,
and show off how you use Spark NLP! - Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
Installation
Python
#PyPI
pip install spark-nlp==5.5.2
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.2
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.2
Apple Silicon (M1 & M2)
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.2
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.2
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.2
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>5.5.2</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>5.5.2</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>5.5.2</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>5.5.2</version>
</dependency>
FAT JARs
-
CPU on Apache Spark 3.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-5.5.2.jar
-
GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-5.5.2.jar
-
M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-5.5.2.jar
-
AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-5.5.2.jar
What's Changed
- Models hub by @maziyarpanahi in #14458
- Models hub by @maziyarpanahi in #14470
- adding openvino support to all ClassificationForXXX annotators by @ahmedlone127 in #14408
- [SPARKNLP-1068] Introducing BLIPForQuestionAnswering transformer by @danilojsl in #14422
- [SPARKNLP-1091] AutoGGUFModel embeddings support by @DevinTDHa in #14433
- Apache Spark vulnerable Fix by @maziyarpanahi in #14441
- [SPARKNLP-1092] Adding support to read HTML files by @danilojsl in #14449
- [SPARKNLP-1095] Add installation instructions for ONNX GPU on Databricks by @DevinTDHa in #14451
- [SPARKNLP-1093] Adding support to read Email files by @danilojsl in #14455
- Small typos by @svlandeg in #14459
- Addition chunk metadata to ChunkEmbeddings output by @mehmetbutgul in #14462
- [SPARKNLP-1096] Adding support to Microsoft Fabric for WordEmbeddings by @danilojsl in #14467
- Default name updates by @ahmedlone127 in #14469
- SPARKNLP-1094 Adding Support to Read Word Files by @danilojsl in #14476
- ignore html as linguist-vendored by @maziyarpanahi in #14481
- Models hub by @maziyarpanahi in #14482
- Models hub by @maziyarpanahi in #14485
- Spark NLP 5.5.2 Release Candidate by @maziyarpanahi in #14473
New Contributors
Full Changelog: 5.5.1...5.5.2
Spark NLP 5.5.1: Patch release
🔥 Enhancements & Bug Fixes
BertForMultipleChoice
Transformer Added. Enhanced BERT’s capabilities to handle multiple-choice tasks such as standardized test questions and survey or quiz automation.PromptAssembler
Annotator Introduced. Introduced a new annotator that constructs prompts for LLMs using a chat template and a sequence of messages. Accepts an array of tuples with roles (“system”, “user”, “assistant”) and message texts. Utilizes llama.cpp as a backend for template parsing, supporting basic template applications.
Example Notebook
promptAssembler = (
PromptAssembler()
.setInputCol("messages")
.setOutputCol("prompt")
.setChatTemplate(template)
)
- Integrated New Tasks and Documentation. Added support and documentation for the following tasks:
- Automatic Speech Recognition
- Dependency Parsing
- Image Captioning
- Image Classification
- Landing Page
- Question Answering
- Summarization
- Table Question Answering
- Text Classification
- Text Generation
- Text Preprocessing
- Token Classification
- Translation
- Zero-Shot Classification
- Zero-Shot Image Classification
- Resolved Pretrained Model Loading Issue on
DBFS Systems
. - Fixed a bug where pretrained models were not found when running
AutoGGUFModel
pipelines onDatabricks
due to incorrect path handling of gguf files.
📖 Documentation
- Import models from TF Hub & HuggingFace
- Spark NLP Notebooks
- Models Hub with new models
- Spark NLP Articles
- Spark NLP in Action
- Spark NLP Documentation
- Spark NLP Scala APIs
- Spark NLP Python APIs
❤️ Community support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas, and show off how you use Spark NLP!
- Medium Spark NLP articles
- YouTube Spark NLP video tutorials
Installation
Python
#PyPI
pip install spark-nlp==5.5.1
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, 3.4.x, and 3.5.x: (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.1
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.1
Apple Silicon (M1 & M2)
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.1
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.1
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.1
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, 3.4.x, and 3.5.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>5.5.1</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>5.5.1</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon_2.12</artifactId>
<version>5.5.1</version>
</dependency>
spark-nlp-aarch64:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-aarch64_2.12</artifactId>
<version>5.5.1</version>
</dependency>
FAT JARs
-
CPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x/3.5.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-assembly-5.5.1.jar
-
GPU on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x/3.5.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-gpu-assembly-5.5.1.jar
-
M1 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x/3.5.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-silicon-assembly-5.5.1.jar
-
AArch64 on Apache Spark 3.0.x/3.1.x/3.2.x/3.3.x/3.4.x/3.5.x: https://s3.amazonaws.com/auxdata.johnsnowlabs.com/public/jars/spark-nlp-aarch64-assembly-5.5.1.jar
What's Changed
- Models hub by @maziyarpanahi in #14418
- Models hub by @maziyarpanahi in #14420
- Add a new llama_cpp engine by @maziyarpanahi in #14436
- tasks-docs-integration by @AbdullahMubeenAnwar in #14428
- Introducing BertForMultipleChoice transformer by @danilojsl in #14435
- Fix pretrained models not being found on dbfs systems by @DevinTDHa in #14438
- [SPARKNLP-1067] PromptAssembler by @DevinTDHa in #14439
- Release/551 release candidate by @maziyarpanahi in #14437
Full Changelog: 5.5.0...5.5.1
Spark NLP 5.5.0: Launching Llama.cpp Integration, Llama3, QWEN2, Phi-3, StarCoder2, MiniCPM, NLLB, Nomic, Snowflake, MxBai, more ONNX and OpenVino integrations, more than 50,000 new models, and many more!
📢 Spark NLP 5.5.0: Unlocking New Horizons with Llama.cpp Integration and More!
We're thrilled to announce the release of Spark NLP 5.5.0, a groundbreaking update that pushes the boundaries of natural language processing! This release is packed with exciting new features, optimizations, and integrations that will transform your NLP workflows. At the heart of this update is our game-changing integration with Llama.cpp, but that's just the beginning of what's in store!
🌟 Spotlight Feature: Llama.cpp Integration
Introducing Llama.cpp Integration: A New Era of Efficient Language Models!
We're proud to present the centerpiece of Spark NLP 5.5.0: the integration of Llama.cpp! This revolutionary addition brings unparalleled efficiency and performance to large language models within the Spark NLP ecosystem.
- Optimized Performance: Llama.cpp's C/C++ implementation allows for blazing-fast inference on CPUs, making large language models more accessible than ever.
- Reduced Memory Footprint: Enjoy the power of advanced language models with significantly lower RAM requirements.
- Quantization Support: Take advantage of various quantization options to further optimize model size and speed without sacrificing quality.
- Seamless Integration: Easily incorporate Llama.cpp models into your existing Spark NLP pipelines with our new
AutoGGUFModel
annotator.
This integration opens up new possibilities for deploying state-of-the-art language models in resource-constrained environments, making advanced NLP capabilities available to a wider range of applications and users.
We extend our heartfelt thanks to all contributors who made this release possible. Your innovative ideas, code contributions, and feedback continue to drive Spark NLP forward. Our Models Hub now contains over 83,000+ free and truly open-source models & pipelines. 🎉
🔥 New Features & Enhancements
Introducing QWEN2Transformer
We have added the QWEN2Transformer
annotator, supporting the Qwen-2 model architecture known for its efficiency and performance in various NLP tasks like text generation and summarization.
Introducing MiniCPM
The MiniCPM
annotator is now available, providing support for the MiniCPM model designed for efficient language modeling with smaller parameter sizes without compromising performance.
Introducing NLLB (No Language Left Behind)
We are excited to include the NLLB
annotator, supporting No Language Left Behind models aimed at providing high-quality machine translation capabilities for a wide range of languages, especially low-resource languages.
Implementing Nomic Embeddings
Introducing support for Nomic Embeddings, which provide robust semantic representations for downstream tasks like clustering and classification.
Snowflake Integration
We have implemented integration with Snowflake, allowing seamless data transfer and processing between Spark NLP and Snowflake data warehouses.
Introducing CamemBertForZeroShotClassification
The CamemBertForZeroShotClassification
annotator is now available, enabling zero-shot classification capabilities using the CamemBERT model, optimized for French language processing.
Implementing MxBai Embeddings
We have added support for MxBaiEmbeddings
, providing embeddings from the MxBai model designed for multilingual text representation.
ONNX Support for Vision Annotators
We have extended ONNX support to our vision annotators, allowing for optimized and accelerated inference for image-related NLP tasks.
OpenVINO and ONNX Support for Additional Annotators
Building upon our commitment to performance optimization, we have added OpenVINO and ONNX support to several additional annotators, ensuring you can leverage hardware acceleration across a broader range of models.
Introducing AlbertForZeroShotClassification
We are excited to introduce the AlbertForZeroShotClassification
annotator, bringing zero-shot classification capabilities using the ALBERT model known for its parameter efficiency and strong performance.
Introducing Phi-3
We have integrated Phi-3 models into Spark NLP, providing enhanced performance with high-efficiency quantization, supporting INT4 and INT8 quantization for CPUs via OpenVINO.
Introducing StarCoder2 for Causal Language Modeling
The StarCoder2
model is now supported for causal language modeling tasks, enabling advanced code generation and understanding capabilities.
Introducing LLAMA 3
Continuing our support for the latest in language modeling, we have introduced support for LLAMA 3, bringing the latest advancements in the LLaMA model series to Spark NLP.
🐛 Bug Fixes
- OpenVINO Installation Instructions: Updated the installation instructions for OpenVINO to ensure a smoother setup process.
- Fixed Default Auto GGUF Pretrained Model: Addressed issues with the default auto GGUF pretrained model in the Llama.cpp integration.
View Pull Requests, View Pull Request
- Updated Models Hub: Improved the Models Hub for better accessibility and search functionality.
View Pull Requests, View Pull Request, View Pull Request
- Artifact Creation Optimization: Switched to using 7zip instead of
vimtor/action-zip
for creating artifacts to enhance compatibility and performance.
📦 Dependencies
-
Published New OpenVINO Artifacts: Built and published new OpenVINO artifacts for both CPU and GPU to enhance performance and compatibility.
-
Upgraded ONNX Runtime: Updated
onnxruntime
to the latest version for improved stability and performance on both CPU and GPU.
📝 Models
We have added more than 50,000 new models and pipelines. The complete list of all 83,000+ models & pipelines in 230+ languages is available on our Models Hub.
❤️ Community support
- Slack For live discussion with the Spark NLP community and the team
- GitHub Bug reports, feature requests, and contributions
- Discussions Engage with other community members, share ideas,
and show off how you use Spark NLP! - Medium Spark NLP articles
- JohnSnowLabs official Medium
- YouTube Spark NLP video tutorials
Installation
Python
#PyPI
pip install spark-nlp==5.5.0
Spark Packages
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x (Scala 2.12):
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.0
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_2.12:5.5.0
GPU
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.0
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-gpu_2.12:5.5.0
Apple Silicon (M1 & M2)
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.0
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-silicon_2.12:5.5.0
AArch64
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.0
pyspark --packages com.johnsnowlabs.nlp:spark-nlp-aarch64_2.12:5.5.0
Maven
spark-nlp on Apache Spark 3.0.x, 3.1.x, 3.2.x, 3.3.x, and 3.4.x:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp_2.12</artifactId>
<version>5.5.0</version>
</dependency>
spark-nlp-gpu:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-gpu_2.12</artifactId>
<version>5.5.0</version>
</dependency>
spark-nlp-silicon:
<dependency>
<groupId>com.johnsnowlabs.nlp</groupId>
<artifactId>spark-nlp-silicon...