Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/600 release candidate #14534

Open
wants to merge 126 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
1ea76c3
[SPARKNLP-1105] Introducing AlbertForMultipleChoice
danilojsl Dec 27, 2024
9e67d89
[SPARKNLP-1105] Addiong test tags
danilojsl Dec 27, 2024
3b86715
[SPARKNLP-1106] Introducing DistilBertForMultipleChoice
danilojsl Dec 31, 2024
191c78b
[SPARKNLP-1106] Adding notebook examples for DistilBertForMultipleChoice
danilojsl Jan 2, 2025
52e4cd4
[SPARKNLP-1107] Introducing RoBertaForMultipleChoice
danilojsl Jan 3, 2025
4d2c06e
[SPARKNLP-1107] Adding example notebooks for RobertaForMultipleChoice
danilojsl Jan 3, 2025
873e224
[SPARKNLP-1108] Introducing XlmRoBertaForMultipleChoice
danilojsl Jan 6, 2025
6c3e9cc
[SPARKNLP-1108] Adding notebooks example for XlmRoBertaForMultipleChoice
danilojsl Jan 8, 2025
4cd472d
[SPARKNLP-1098] Adding PDF reader support
danilojsl Jan 8, 2025
f3583d1
[SPARKNLP-1098] Adding docs and notebook example for PDF reader
danilojsl Jan 15, 2025
d7be7f0
Merge release/600
DevinTDHa Jan 18, 2025
208bb75
Refactor automatic gpu support
DevinTDHa Oct 25, 2024
e5c24f5
[SPARKNLP-1079] AutoGGUFVisionModel Scala Side
DevinTDHa Dec 14, 2024
544f722
[SPARKNLP-1079] AutoGGUFVisionModel Python Side
DevinTDHa Jan 18, 2025
ac80d3f
[SPARKNLP-1079] AutoGGUFVisionModel documentation and end-to-end example
DevinTDHa Jan 18, 2025
0f5d073
[SPARKNLP-1079] Bump jsl-llamacpp version
DevinTDHa Jan 18, 2025
998d1f5
[SPARKNLP-1079] AutoGGUFVisionModel pretrained model
DevinTDHa Jan 24, 2025
73cd3ad
fixing typo in MXBAI notebook
ahmedlone127 Jan 29, 2025
cdab6bb
Janus Scala API
prabod Feb 6, 2025
195c097
Janus Scala Documentation
prabod Feb 6, 2025
082db05
Janus Python API
prabod Feb 6, 2025
4d8bf47
[SPARKNLP-1079] AutoGGUFVisionModel pretrained model
DevinTDHa Jan 24, 2025
deb3952
[SPARKNLP-1079] Fix loadImagesAsBytes path creation
DevinTDHa Jan 24, 2025
f2be057
[SPARKNLP-1079] Fix batch inference for AutoGGUFVisionModel
DevinTDHa Feb 9, 2025
3d31759
[SPARKNLP-1079] Add note that only CLIP models are supported
DevinTDHa Feb 9, 2025
c3dca2d
update config values on the instance
prabod Feb 12, 2025
f9bd02d
added OLMo scala api
prabod Apr 22, 2024
32635d2
added OLMo scala api
prabod Apr 22, 2024
d52d4e0
added OLMo python API and tests
prabod Apr 24, 2024
2eedcb3
OlMo Notebook and bug fixes
prabod Feb 12, 2025
05cbe8b
update default name and documentation
prabod Feb 12, 2025
408958a
update default name
prabod Feb 12, 2025
a369ce9
Phi3V preprocessing utils
prabod Sep 19, 2024
6896a02
added phi3v
prabod Oct 23, 2024
621411b
add phi3v scala API
prabod Oct 28, 2024
c047188
Added tests
prabod Oct 29, 2024
59e596c
Phi3V python api and tests
prabod Oct 29, 2024
d0ad585
added byte fallback
prabod Oct 29, 2024
c12713d
changed to pretrained
prabod Oct 29, 2024
d12ae3d
export notebook
prabod Oct 30, 2024
5040468
updated testes
prabod Oct 30, 2024
27140d7
update default name and documentation
prabod Feb 13, 2025
9752516
update documentation and resource downloader entry
prabod Feb 13, 2025
1af39be
LLAVA Scala API and Tests
prabod Nov 1, 2024
b5872e7
LLAVA Test
prabod Nov 1, 2024
6f7c4d6
LLAVA python api
prabod Nov 6, 2024
6f2f3a9
LLAVA notebook
prabod Nov 7, 2024
64b6b20
Add custom model requirements
prabod Nov 8, 2024
2661bfb
update documentation and resource downloader entry
prabod Feb 13, 2025
af28bf2
cohere scala and python api
prabod Nov 13, 2024
133b326
Cohere Notebook
prabod Nov 14, 2024
028ca67
update documentation and resource downloader entry
prabod Feb 13, 2025
db48372
update documentation and resource downloader entry
prabod Feb 13, 2025
b967682
Qwen2VL scala API
prabod Dec 9, 2024
e5017e2
QWEN2VL python api
prabod Dec 10, 2024
16c9716
QWEN2VL Notebook
prabod Dec 10, 2024
934af90
update default_model and resource downloader entry
prabod Feb 14, 2025
d19b9f7
update documentation
prabod Feb 14, 2025
2cd2cae
update model
prabod Feb 14, 2025
7052361
added preprocessing utils for MLLama
prabod Dec 25, 2024
89c1803
MLLama tokenizers and utils
prabod Jan 8, 2025
58e309b
MLLama scala api
prabod Jan 20, 2025
46fe907
MLLama scala api changes
prabod Jan 21, 2025
c19f4eb
MLLama python api
prabod Jan 23, 2025
1e0500f
update default model, notebook and documentation
prabod Feb 14, 2025
0f9d4d9
[SPARKNLP-1098] Enabling getStoreSplittedPdf parameter to PDF reader
danilojsl Feb 21, 2025
3815c20
Merge branch 'master' of github.com:JohnSnowLabs/spark-nlp into featu…
danilojsl Feb 21, 2025
638d26b
[SPARKNLP-1098] Adding PdfToText notebook example
danilojsl Feb 24, 2025
ffe4e21
added image generation scala API
prabod Feb 26, 2025
dd2a400
Update HuggingFace_OpenVINO_in_Spark_NLP_MLLama.ipynb
prabod Feb 26, 2025
b4dc462
Update HuggingFace_OpenVINO_in_Spark_NLP_MLLama.ipynb
prabod Feb 26, 2025
c92a544
Update HuggingFace_OpenVINO_in_Spark_NLP_MLLama.ipynb
prabod Feb 26, 2025
f7d5893
Update HuggingFace_OpenVINO_in_Spark_NLP_MLLama.ipynb
prabod Feb 26, 2025
afd7338
added image generation python API and tests
prabod Mar 4, 2025
8eeccf7
[SPARKNLP-1117] Adding storeContent to HTML, Word and Email readers
danilojsl Mar 6, 2025
9386b44
[SPARKNLP-1117] Refactoring documentation for readers
danilojsl Mar 6, 2025
649c862
[SPARKNLP-1102] Adding support to read Excel files
danilojsl Dec 17, 2024
60a8521
[SPARKNLP-1102] Adding notebook example to read Excel files
danilojsl Dec 19, 2024
4bb3ad5
[SPARKNLP-1102] Refactoring documentation for excel reader
danilojsl Mar 6, 2025
af7b13e
[SPARKNLP-1117] Adding storeContent param
danilojsl Mar 6, 2025
1999ae5
[SPARKNLP-1103] Adding support to read PowerPoint files and adds loca…
danilojsl Dec 24, 2024
6dc756e
[SPARKNLP-1103] Adding documentation and notebook example for PowerPo…
danilojsl Dec 24, 2024
26e023e
[SPARKNLP-1117] Adding storeContent param
danilojsl Mar 6, 2025
8710011
[SPARKNLP-1113] Adding Text Reader
danilojsl Feb 17, 2025
30502cc
[SPARKNLP-1113] Adding txt reader notebook example
danilojsl Feb 17, 2025
cdb8f36
[SPARKNLP-1117] Adding storeContent param
danilojsl Mar 7, 2025
19d2dd4
added notebook
prabod Mar 11, 2025
d7bbb51
Improved Error Handling for AutoGGUF models
DevinTDHa Mar 14, 2025
489af7e
Add setNParallel for AutoGGUF models on python side
DevinTDHa Mar 14, 2025
9247f0d
Merge branch 'bug/gguf-embeddings-context' into feature/SPARKNLP-1079…
DevinTDHa Mar 14, 2025
9df68a7
Improved Error Handling and setNParallel alias for batch size
DevinTDHa Mar 14, 2025
f3d353c
Fix notebook error format
DevinTDHa Mar 14, 2025
05000ab
Merge pull request #14242 from JohnSnowLabs/SPARKNLP-1006-Implement-OLMo
maziyarpanahi Mar 16, 2025
6d71770
Merge branch 'release/600-release-candidate' into SPARKNLP-1060-Imple…
maziyarpanahi Mar 16, 2025
44fb92a
Merge pull request #14444 from JohnSnowLabs/SPARKNLP-1060-Implement-P…
maziyarpanahi Mar 16, 2025
f33ce00
Merge branch 'release/600-release-candidate' into SPARKNLP-1033-Imple…
maziyarpanahi Mar 16, 2025
7b65030
Merge pull request #14450 from JohnSnowLabs/SPARKNLP-1033-Implement-L…
maziyarpanahi Mar 16, 2025
92c7e12
Merge branch 'release/600-release-candidate' into SPARKNLP-1032-CoHere
maziyarpanahi Mar 16, 2025
2c867de
Merge pull request #14457 from JohnSnowLabs/SPARKNLP-1032-CoHere
maziyarpanahi Mar 16, 2025
39ed5e7
Merge branch 'release/600-release-candidate' into SPARKNLP-1077-Imple…
maziyarpanahi Mar 16, 2025
c31306f
Merge pull request #14474 from JohnSnowLabs/SPARKNLP-1077-Implementin…
maziyarpanahi Mar 16, 2025
5417d91
updating python and scala model names (#14488)
ahmedlone127 Mar 16, 2025
b35c90c
Merge pull request #14489 from JohnSnowLabs/feature/SPARKNLP-1102-Add…
maziyarpanahi Mar 16, 2025
e7a79fb
Merge pull request #14491 from JohnSnowLabs/feature/SPARKNLP-1103-Add…
maziyarpanahi Mar 16, 2025
dd57c97
Merge pull request #14492 from JohnSnowLabs/feature/SPARKNLP-1105-Imp…
maziyarpanahi Mar 16, 2025
d7e2851
Merge branch 'release/600-release-candidate' into feature/SPARKNLP-11…
maziyarpanahi Mar 16, 2025
cbbca68
Merge pull request #14493 from JohnSnowLabs/feature/SPARKNLP-1106-Imp…
maziyarpanahi Mar 16, 2025
06ef557
Merge branch 'release/600-release-candidate' into feature/SPARKNLP-11…
maziyarpanahi Mar 16, 2025
7bd3ca0
Merge pull request #14495 from JohnSnowLabs/feature/SPARKNLP-1107-Imp…
maziyarpanahi Mar 16, 2025
c737a27
Merge branch 'release/600-release-candidate' into feature/SPARKNLP-11…
maziyarpanahi Mar 16, 2025
0420d04
Merge pull request #14497 from JohnSnowLabs/feature/SPARKNLP-1108-Imp…
maziyarpanahi Mar 16, 2025
2b363e2
Merge branch 'release/600-release-candidate' into feature/SPARKNLP-10…
maziyarpanahi Mar 16, 2025
3999409
Merge pull request #14499 from JohnSnowLabs/feature/SPARKNLP-1098-Add…
maziyarpanahi Mar 16, 2025
7673843
Merge branch 'release/600-release-candidate' into SPARKNLP-1078-Imple…
maziyarpanahi Mar 16, 2025
6283a8f
Merge pull request #14502 from JohnSnowLabs/SPARKNLP-1078-Implement-L…
maziyarpanahi Mar 16, 2025
6194f03
Merge branch 'release/600-release-candidate' into feature/SPARKNLP-10…
maziyarpanahi Mar 16, 2025
3def1a0
Merge pull request #14505 from DevinTDHa/feature/SPARKNLP-1079-AutoGG…
maziyarpanahi Mar 16, 2025
e4f1961
Merge pull request #14510 from JohnSnowLabs/Fixing-MXBAI-Embedding-no…
maziyarpanahi Mar 16, 2025
a9d7980
SPARKNLP-1109 Adding Extractor to Sparknlp (#14519)
danilojsl Mar 16, 2025
94290cc
Merge pull request #14524 from JohnSnowLabs/feature/SPARKNLP-1113-Add…
maziyarpanahi Mar 16, 2025
d807b49
Merge branch 'release/600-release-candidate' into SPARKNLP-1088-Imple…
maziyarpanahi Mar 16, 2025
6b80b40
Merge pull request #14532 from JohnSnowLabs/SPARKNLP-1088-Implement-D…
maziyarpanahi Mar 16, 2025
39e60e3
Merge pull request #14533 from DevinTDHa/bug/gguf-embeddings-context
maziyarpanahi Mar 16, 2025
0dc22eb
Adding missing bracket in SparkNLPReader and formatting some files
danilojsl Mar 17, 2025
311f988
Adding misssing return dataframe for PDF reader in Python
danilojsl Mar 18, 2025
9e7c2fc
Updating reader notebooks
danilojsl Mar 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Janus Scala Documentation
Signed-off-by: Prabod Rathnayaka <prabod@rathnayaka.me>
  • Loading branch information
prabod committed Feb 6, 2025
commit 195c097fb60db9b69a0d024ac63a490f9836f483
Original file line number Diff line number Diff line change
@@ -39,80 +39,68 @@ import org.apache.spark.ml.param.{IntArrayParam, IntParam}
import org.apache.spark.ml.util.Identifiable
import org.apache.spark.sql.SparkSession

/** JanusForMultiModal can load Janus Vision models for visual question answering. The model
* consists of a vision encoder, a text encoder as well as a text decoder. The vision encoder
* will encode the input image, the text encoder will encode the input question together with the
* encoding of the image, and the text decoder will output the answer to the question.
/** JanusForMultiModal can load Janus models for unified multimodal understanding and generation.
* The model consists of a vision encoder, a text encoder, and a text decoder. Janus decouples
* visual encoding for enhanced flexibility, leveraging a unified transformer architecture for
* both understanding and generation tasks.
*
* Pretrained models can be loaded with `pretrained` of the companion object:
* {{{
* val visualQA = JanusForMultiModal.pretrained()
* .setInputCols("image_assembler")
* .setOutputCol("answer")
* }}}
* The default model is `"Janus"`, if no name is provided.
* Janus uses SigLIP-L as the vision encoder, supporting 384 x 384 image inputs. For image
* generation, it utilizes a tokenizer with a downsample rate of 16. The framework is based on
* DeepSeek-LLM-1.3b-base, trained on approximately 500B text tokens.
*
* For available pretrained models please see the
* Pretrained models can be loaded with `pretrained` from the companion object: {{ val visualQA =
* JanusForMultiModal.pretrained() .setInputCols("image_assembler") .setOutputCol("answer") }}
* The default model is "Janus" if no name is provided.
*
* For available pretrained models, please refer to the
* [[https://sparknlp.org/models?task=Question+Answering Models Hub]].
*
* Models from the HuggingFace 🤗 Transformers library are also compatible with Spark NLP 🚀. To
* see which models are compatible and how to import them see
* [[https://github.com/JohnSnowLabs/spark-nlp/discussions/5669]] and to see more extended
* examples, see
* Models from the HuggingFace 🤗 Transformers library are also compatible with Spark NLP 🚀. For
* compatibility details and import instructions, see
* [[https://github.com/JohnSnowLabs/spark-nlp/discussions/5669]]. For extended examples, refer
* to
* [[https://github.com/JohnSnowLabs/spark-nlp/blob/master/src/test/scala/com/johnsnowlabs/nlp/annotators/cv/JanusForMultiModalTest.scala]].
*
* ==Example==
* {{{
* import spark.implicits._
* import com.johnsnowlabs.nlp.base._
* import com.johnsnowlabs.nlp.annotator._
* import org.apache.spark.ml.Pipeline
* {{ import spark.implicits._ import com.johnsnowlabs.nlp.base._ import
* com.johnsnowlabs.nlp.annotator._ import org.apache.spark.ml.Pipeline
*
* val imageDF: DataFrame = ResourceHelper.spark.read
* .format("image")
* .option("dropInvalid", value = true)
* .load(imageFolder)
* val imageDF: DataFrame = ResourceHelper.spark.read .format("image") .option("dropInvalid",
* value = true) .load(imageFolder)
*
* val testDF: DataFrame = imageDF.withColumn("text", lit("USER: \n <|image|> \nWhat is unusual on this picture? \n ASSISTANT:\n"))
* val testDF: DataFrame = imageDF.withColumn("text", lit("USER: \n <image_placeholder> \nWhat is
* unusual in this picture? \n ASSISTANT:\n"))
*
* val imageAssembler: ImageAssembler = new ImageAssembler()
* .setInputCol("image")
* .setOutputCol("image_assembler")
* val imageAssembler: ImageAssembler = new ImageAssembler() .setInputCol("image")
* .setOutputCol("image_assembler")
*
* val visualQAClassifier = JanusForMultiModal.pretrained()
* .setInputCols("image_assembler")
* .setOutputCol("answer")
* val visualQAClassifier = JanusForMultiModal.pretrained() .setInputCols("image_assembler")
* .setOutputCol("answer")
*
* val pipeline = new Pipeline().setStages(Array(
* imageAssembler,
* visualQAClassifier
* ))
* val pipeline = new Pipeline().setStages(Array( imageAssembler, visualQAClassifier ))
*
* val result = pipeline.fit(testDF).transform(testDF)
*
* result.select("image_assembler.origin", "answer.result").show(false)
* +--------------------------------------+------+
* |origin |result|
* +--------------------------------------+------+
* |[file:///content/images/cat_image.jpg]|[The unusual aspect of this picture is the presence of two cats lying on a pink couch]|
* +--------------------------------------+------+
* }}}
* | origin | result |
* |:---------------------------------------|:----------------------------------------------------------------------------------------|
* | [file:///content/images/cat_image.jpg] | [The unusual aspect of this picture is the presence of two cats lying on a pink couch.] |
* }}
*
* @see
* [[CLIPForZeroShotClassification]] for Zero Shot Image Classifier
* [[CLIPForZeroShotClassification]] for Zero Shot Image Classification
* @see
* [[https://sparknlp.org/docs/en/annotators Annotators Main Page]] for a list of transformer
* based classifiers
* [[https://sparknlp.org/docs/en/annotators Annotators Main Page]] for a list of
* transformer-based classifiers
* @param uid
* required uid for storing annotator to disk
* Required UID for storing the annotator to disk
* @groupname anno Annotator types
* @groupdesc anno
* Required input and expected output annotator types
* @groupname Ungrouped Members
* @groupname param Parameters
* @groupname setParam Parameter setters
* @groupname getParam Parameter getters
* @groupname Ungrouped Members
* @groupprio param 1
* @groupprio anno 2
* @groupprio Ungrouped 3
@@ -325,7 +313,7 @@ class JanusForMultiModal(override val uid: String)
val imageText =
if (annotationImage.text.nonEmpty) annotationImage.text
else
"<|user|> \n <|image|> This is an image\n <|end|>\n <|assistant|>\n" // default question
"<|user|> \n <|image_placeholder|> This is an image\n <|end|>\n <|assistant|>\n" // default question
Annotation(imageText)
})

@@ -395,7 +383,7 @@ trait ReadablePretrainedJanusForMultiModal
extends ParamsAndFeaturesReadable[JanusForMultiModal]
with HasPretrained[JanusForMultiModal] {

override val defaultModelName: Some[String] = Some("Janus")
override val defaultModelName: Some[String] = Some("janus_1.3b_int4")

/** Java compliant-overrides */
override def pretrained(): JanusForMultiModal = super.pretrained()
@@ -417,24 +405,6 @@ trait ReadJanusForMultiModalDLModel extends ReadOpenvinoModel {
override val openvinoFile: String = "Janus_openvino"
def readModel(instance: JanusForMultiModal, path: String, spark: SparkSession): Unit = {
instance.getEngine match {
// VISION_EMBEDDINGS = "openvino_vision_embeddings_model.xml"
// TEXT_EMBEDDINGS = "openvino_text_embeddings_model.xml"
// LANGUAGE_MODEL = "openvino_language_model.xml"
// LM_HEAD = "openvino_lm_head_model.xml"
// MERGE_MULTIMODAL = "openvino_multimodal_merge_model.xml"
// GEN_HEAD = "openvino_gen_head_model.xml"
// GEN_EMBEDDINGS = "openvino_gen_embeddings_model.xml"
// GEN_DECODER = "openvino_gen_decoder_model.xml"

// JanusWrappers(
// languageModel: OpenvinoWrapper,
// lmHeadModel: OpenvinoWrapper,
// visionEmbeddingsModel: OpenvinoWrapper,
// textEmbeddingsModel: OpenvinoWrapper,
// mergeModel: OpenvinoWrapper,
// genHeadModel: OpenvinoWrapper,
// genEmbeddingsModel: OpenvinoWrapper,
// genDecoderModel: OpenvinoWrapper)
case Openvino.name =>
val languageModelWrappers =
readOpenvinoModels(path, spark, Seq("openvino_language_model.xml"), suffix)