Skip to content

Releases: deepjavalibrary/djl

DJL v0.13.0 release

12 Oct 19:17
Compare
Choose a tag to compare

DJL v0.13.0 brings the new TensorRT and Python engines, and updates the engines PyTorch to 1.9.0, ONNXRuntime to 1.9.0, PaddlePaddle to 2.0.2, and introduces several new features:

Key Features

Enhancement

  • Introduces several new features in djl-serving:
    • Improves djl-serving API to make it easy to get HTTP headers (#1134)
    • Loads models on all GPUs at startup for djl-serving (#1132)
    • Enables asynchronous logging for djl-serving
    • Makes djl-serving access log in separate log file (#1150)
    • Adds configuration to support number worker threads for GPU inference (#1153)
    • Improves auto-scale algorithm for djl-serving (#1149)
  • Introduces several new features in djl-bench:
    • Adds a command line option to djl-bench to generate NDList file (#1155)
    • Adds warmup to benchmark (#1152)
    • Improves djll-bench to support djl:// urls (#1146)
    • Adds support to benchmark on multiple GPUs (#1144)
    • Adds support to benchmark onnx on GPU machines (#1148)
    • Adds support to benchmark TensorRT models (#1257)
    • Adds support to benchmark Python models (#1267)
  • Introduces several new features in PyTorch engine:
    • Supports PyTorch custom input data type with IValue (#1208)
  • Introduces several new features in OnnxRuntime:
    • Adds UINT8 support for OnnxRuntime (#1271)
  • Introduces several new features in PaddlePaddle:
    • Adds more model loading options for PaddlePaddle (#1173)
    • Adds load functionalities to PaddlePaddle (#1140)
    • Adds remove pass option to PaddlePaddle (#1141)
  • Introduces several API improvements:
    • Adds missing NDList.get(String) API (#1194)
    • Adds support to directly load models from a TFHub url (#1231)
    • Improves repository API to support passing argument in the URL query string (#1139)
    • Avoids loading the default engine if it is not being used (#1136)
    • Improves IO by adding a buffer to read/write (#1135)
    • Improves NDArray.toString() debug mode performance (#1142)
    • Makes GPU device detection engine specific to avoid confusion when using multiple engines (#1138)

Documentation and examples

  • Adds Style Transfer example with CycleGAN (#1180)

Breaking change

  • Removes support for Apache MXNet 1.6.0
  • Deprecates Device.getDevices() API - Use Engine.getDevices() instead
  • Renames SimpleVocabulary to DefaultVocabulary

Bug Fixes

  • Fixes broken link in documents
  • Fixes TensorFlow NDArray was created on CPU instead of GPU bug (#1279)
  • Fixes default image processing pipeline (#1268)
  • Fixed XGBoost NDArray multiple read bug (#1239)
  • Fixes platform matching bug (#1167)
  • Fixes NullPointerException in NDArray.toString() (#1157)
  • Fixes PaddlePaddle crash due to GC (#1162)
  • Fixes NDArrayAdapter.getSparseFormat() unsupported bug (#1151)
  • Fixes mixed device issue in multiple engine use case (#1123)
  • Fixes handle duplicate plugin issue for djl-serving (#1108)
  • Fixes XGBoost NDArray creation bug (#1109)
  • Fixes runtime exception running benchmark arm machine(#1107)
  • Fixes unregister model regression (#1101)

Contributors

This release is thanks to the following contributors:

DJL v0.12.0 release

09 Jul 17:58
Compare
Choose a tag to compare

DJL v0.12.0 added GPU support to PaddlePaddle and ONNXRuntime, and introduces several new features:

Key Features

  • Updates PaddlePaddle engine with GPU support.
  • Updates ONNXRuntime engine with GPU support.
  • Upgrades ONNXRuntime engine to 1.8.0.
  • Upgrades XGBoost engine to 1.4.1.
  • Introduces AWS Inferentia support, see our example for detail.
  • Adds FLOAT16 datatype support in NDArray.
  • Support UTF16 surrogate characters in NLP tokenization.
  • Makes benchmark as a standalone tool.
  • Releases djl-serving docker image to docker hub.

Enhancement

  • DJL Benchmark now can benchmark any datatype as input.
  • Makes Grayscale image processing match openCV’s behavior (#965)
  • Improves PyTorch engine to load extra shared library for custom operators (#983)
  • Improves djl-serving REST API to support load model on specified engine (#977)
  • Improves djl-serving to support load multiple version of a model on the same endpoint (#1052)
  • Improves djl-serving to support auto-scale workers based on traffic (#986)
  • Implements several operators:
    • Adds the truncated normal operator (#1005)
    • Adds the one hot operator for PyTorch (#1014)
    • Adds the LayerNorm operator in PyTorch (#1069)
  • Introduces several API improvements
    • Improves Criteria.loadModel() API (#1018)
    • Refactors ModleLoader and TranslatorFactory (#712)
    • Improves BlockFactory API (#1045)
    • Makes SpProcessor public API (#1060)

Documentation and examples

Breaking change

  • Direct access ModelZoo ModelLoader is no longer supported, use Criteria API instead.
  • Deprecates ModelZoo.loadModel() API in favor of using Criteria.loadModel().

Bug Fixes

  • Fixes missing softmax in action_recognition model zoo model (#969)
  • Fixes saveModel NPE bug (#989)
  • Fixes NPE bug in block.toString() function (#1076)
  • Adds back String tensor support to TensorFlow engine (lost in 0.11.0 during refactor) (#1040)
  • Sets ai.djl.pytorch.num_interop_threads default value for djl-serving (#1059)

Known issues

Contributors

This release is thanks to the following contributors:

DJL v0.11.0 release note

04 May 02:32
Compare
Choose a tag to compare

DJL v0.11.0 brings the new engines XGBoost 1.3.1, updates PyTorch to 1.8.1, TensorFlow to 2.4.1, Apache MXNet 1.8.0, PaddlePaddle to 2.0.2 and introduces several new features:

Key Features

  • Supports XGBoost 1.3.1 engine inference: now you can run prediction using models trained in XGBoost.
  • Upgrades PyTorch to 1.8.1 with CUDA 11.1 support.
  • Upgrades TensorFlow to 2.4.1 with CUDA 11.0 support.
  • Upgrades Apache MXNet to 1.8.0 with CUDA 11.0 support.
  • Upgrades PaddlePaddle to 2.0.2.
  • Upgrades SentencePiece to 0.1.95.
  • Introduces the djl-serving brew package: now you can install djl-serving with brew install djl-serving.
  • Introduces the djl-serving plugins.
  • Introduces Amazon Elastic Inference support.

Enhancement

  • Improves TensorFlow performance by reducing GC and fixed memory leaking issue (#892)
  • djl-serving now can run all the engines out-of-box (#886)
  • Improves DJL training by using multi-threading on each GPU (#743)
  • Implements several operators:
    • Adds boolean set method to NDArray (#784)
    • Adds batch dot product operator (#849)
    • Adds norm operator to PyTorch (#692)
    • Adds one hot operator (#684)
    • Adds weight decay to Loss (#788)
  • Adds setGraphExecutorOptimize option for PyTorch engine. (#904)
  • Introduces String tensor support for ONNXRuntime (#724)
  • Introduces several API improvements
    • Creates ObjectDetectionDataset (#683)
    • Improves Block usability (#712)
    • Adds BlockFactory feature in model loading (#805)
    • Allows PyTorch stream model loading (#729)
    • Adds NDList decode from InputStream (#734)
    • Adds SymbolBlock Serialization (#687)
  • Introduces model searching feature in djl central (#799)

Documentation and examples

Breaking change

  • Renames CheckpointsTrainingListener to SaveModelTrainingListener (#686)
  • Removes erroneous random forest application (#726)
  • Deletes DataManager class (#691)
  • Classes under ai.djl.basicdataset packages has been moved into each sub-packages.

Bug Fixes

  • Fixes BufferOverflowException when handling handling subimage (#866)
  • Fixes ONNXRuntime 2nd engine dependency from IrisTranslator (#853)
  • Fixes sequenceMask error when n dimension is 2 (#828)
  • Fixes TCP port range buf in djl-serving (#773)
  • Fixes one array case for concat operator (#739)
  • Fixes non-zero operator for PyTorch (#704)

Known issues

Contributors

This release is thanks to the following contributors:

DJL v0.10.0 Release

24 Feb 20:10
Compare
Choose a tag to compare

DJL v0.10.0 brings the new engines PaddlePaddle 2.0 and TFLite 2.4.1, updates PyTorch to 1.7.1, and introduces several new features:

Key Features

  • Supports PaddlePaddle 2.0 engine inference: now you can run prediction using models trained in PaddlePaddle.

  • Introduces the PaddlePaddle Model Zoo with new models. Please see examples for how to run them.

  • Upgrades TFLite engine to v2.4.1. You can convert TensorFlow SavedModel to TFLite using this converter.

  • Introduces DJL Central to easily browse and view models available in DJL’s ModelZoo.

  • Introduces generic Bert Model in DJL (#105)

  • Upgrades PyTorch to 1.7.1

Enhancement

  • Enables listing input and output classes in ModelZoo lookup (#624)
  • Improves PyTorch performance by using PyTorch index over engine agnostic solution (#638)
  • Introduces various fixes and improvements for MultiThreadedBenchmark (#617)
  • Makes the default engine deterministic when multiple engines are in dependencies(#603)
  • Adds norm operator (similar to numpy.linalg.norm.html) (#579)
  • Refactors the DJL Trackers to use builder patterns (#562)
  • Adds the NDArray stopGradient and scaleGradient functions (#548)
  • Model Serving now supports scaling up and down (#510)

Documentation and examples

  • Introduces DJL 101 Video Series on DJL Youtube Channel
  • Adds the documentation for Applications (#673)
  • Adds an introduction for Engines (#660)
  • Adds documents for DJL community and forums (#646)
  • Adds documents on community leaders (#572)
  • Adds more purpose to the block tutorial and miscellaneous docs (#607)
  • Adds a DJL Paddle OCR Example (#568)
  • Adds a TensorFlow amazon review Jupyter notebook example

Breaking change

  • Renames DJL-Easy to DJL-Zero (#519)
  • Makes RNN operators generic across engines (#554)
  • Renames CheckpointsTrainingListener to SaveModelTrainingListener (#573)
  • Makes Initialization optional in training (#533)
  • Makes SoftmaxCrossEntropyLoss's fromLogit flag mean inputs are un-normalized (#639)
  • Refactors the Vocabulary builder API
  • Refactors the SymbolBlock with AbstractSymbolBlock (#491)

Bug Fixes

  • Fixes the benchmark rss value #656
  • Fixes the recurrent block memory leak and the output shape calculation (#556)
  • Fixes the NDArray slice size (#550)
  • Fixes #493: verify-java plugin charset bug (#496)
  • Fixes #484: support arbitrary URL scheme for repository
  • Fixes AbstractBlock inputNames and the inputShapes mismatch bug

Known issues

  • The training tests fail on GPU and Windows CPU if 3 engines(MXNet, PyTorch, TensorFlow) are loaded and run together

Contributors

This release is thanks to the following contributors:

DJL v0.8.0 release note

23 Sep 21:20
Compare
Choose a tag to compare

DJL 0.8.0 is a release closely following 0.7.0 to fix a few key bugs along with some new features.

Key Features

  • Search model zoo with criteria
  • Standard BERT transformer and WordpieceTokenizer for more BERT tasks
  • Simplify MRL and Remove Anchor
  • Simplify and Standardize CV Model
  • Improve Model describe input and output
  • String NDArray support (only for TensorFlow Engine)
  • Add erfinv operator support
  • MXNet 1.6.0 backward compatibility, now you can switch MXNet versions (1.6 and 1.7) using DJL 0.8.0
  • Combined pytorch-engine-precxx-11 and pytorch-engine package
  • Upgrade onnx runtime from 1.3.1 to 1.4.0

Documentation and examples

  • Object Detection with TensorFlow saved model example
  • Text Classification with TensorFlow BERT model example
  • Added more documentation on TensorFlow engine.

Bug Fixes

  • Fixed MXNet multithreading bug and updated multi-threading documentation
  • Fixed TensorFlow 2.3 native binaries for Windows platform

Known issues

  • You need to add your own Translator when loading image classification models(ResNet, MobileNet) from TensorFlow model Zoo, refer to the example here.

Contributors

Thank you to the following community members for contributing to this release:

Dennis Kieselhorst, Frank Liu, Jake Cheng-Che Lee, Lai Wei, Qing Lan, Zach Kimberg, uniquetrij

DJL v0.6.0 release notes

25 Jun 03:04
Compare
Choose a tag to compare

DJL 0.6.0 brings stable Android support, ONNX Runtime experimental inference support, experimental training support for PyTorch.

Key Features

  • Stable Android inference support for PyTorch models
    • Provide abstraction for Image processing using ImageFactory
  • Experimental support for inference on ONNX models
  • Initial experimental training and imperative inference support for PyTorch engine
  • Experimental support for using multi-engine
  • Improved usage for NDIndex - support for ellipsis notation, arguments
  • Improvements to AbstractBlock to simplify custom block creation
  • Added new datasets

Documentation and examples

Breaking changes

  • ModelZoo Configuration changes
  • ImageFactory changes
  • Please refer to javadocs for minor API changes

Known issues

  • Issue with training with MXNet in multi-gpu instances

Contributors

Thank you to the following community members for contributing to this release:

Christoph Henkelmann, Frank Liu, Jake Lee, JonTanS, Keerthan Vasist, Lai Wei, Qing, Qing Lan, Victor Zhu, Zach Kimberg, ai4java, aksrajvanshi

DJL v0.5.0 release notes

12 May 20:49
Compare
Choose a tag to compare

DJL 0.5.0 release brings TensorFlow engine inference, initial NLP support and experimental Android inference with PyTorch engine.

Key Features

  • TensorFlow engine support with TensorFlow 2.1.0
    • Support NDArray operations, TensorFlow model zoo, multi-threaded inference
  • PyTorch engine improvement with PyTorch 1.5.0
  • Experimental Android Support with PyTorch engine
  • MXNet engine improvement with MXNet 1.7.0
  • Initial NLP support with MXNet engine
    • Training LSTM models
    • Support various text/word embedding, Seq2Seq use cases
    • Added NLP datasets
  • New AWS-AI toolkit to integrate with AWS technologies
    • Load model from s3 buckets directly
  • Improved model-zoo with more models

Documentation and examples

Breaking changes

  • We moved our repository module under api module. There will be no 0.5.0 version for ai.djl.repository, use ai.djl.api instead.
  • Please refer to DJL Java Doc for some minor API changes.

Know issues:

DJL v0.4.1 release notes

06 Apr 21:38
Compare
Choose a tag to compare

DJL 0.4.1 release includes an important performance Improvement on MXNet engine:

Performance Improvement:

  • Cached MXNet features. This will avoid MxNDManager.newSubManager() to repeatedly calling getFeature() which will make JNA calls to native code.

Known Issues:

Same as v0.4.0 release:

  • PyTorch engine doesn't fully support multithreaded inference. You may see random crashes. Single-threaded inference is not impacted. We expect to fix this issue in a future release.
  • We saw random crash on mac for “transfer Learning on CIFAR-10 Dataset” example on Jupyter Notebook. Command line all works.

DJL v0.4.0 release notes

30 Mar 18:05
Compare
Choose a tag to compare

DJL 0.4.0 brings PyTorch and TensorFlow 2.0 inference support. Now you can use these engines directly from DJL with minimum code changes.

Note: TensorFlow 2.0 currently is in PoC stage, users will have to build from source to use it. We expect TF Engine finish in the future releases.

Key Features

  • Training improvement
    • Add InputStreamTranslator
  • Model Zoo improvement
    • Add LocalZooProvider
    • Add ListModels API
  • PyTorch Engine support
    • Use the new ai.djl.pytorch:pytorch-native-auto dependency for automatic engine selection and a simpler build/installation process
    • 60+ methods supported
  • PyTorch ModelZoo support
    • Image Classification models: ResNet18 and ResNet50
    • Object Detection model: SSD_ResNet50
  • TensorFlow 2.0 Engine support
    • Support on Eager Execution for imperative mode
    • 30+ methods support
  • TensorFlow ModelZoo support
    • Image Classification models: ResNet50, MobileNetV2

Breaking Changes

There are a few changes in API and ModelZoo packages to adapt to multi-engine support. Please follow our latest examples to update your code base from 0.3.0 to 0.4.0.

Known Issues

  1. PyTorch engine doesn't fully support multithreaded inference. You may see random crashes. Single-threaded inference is not impacted. We expect to fix this issue in a future release.
  2. We saw random crash on mac for “transfer Learning on CIFAR-10 Dataset” example on Jupyter Notebook. Command line all works.

DJL v0.3.0 release notes

24 Feb 22:55
Compare
Choose a tag to compare

This is the v0.3.0 release of DJL

Key Features

  • Use the new ai.djl.mxnet:mxnet-native-auto dependency for automatic engine selection and a simpler build/installation process
  • New Jupyter Notebook based tutorial for DJL
  • New Engine Support for:
    • FastText Engine
    • Started implementation on a PyTorch Engine
  • Simplified training experience featuring:
    • TrainingListeners to easily provide full featured training
    • DefaultTrainingConfig now contains a default optimizer and initializer
    • Easier to transfer from examples to your own code
  • Specify the random seed for reproducible training
  • Run with multiple engines and specify the default using the "DJL_DEFAULT_ENGINE" environment variable or "ai.djl.default_engine" system property
  • Updated ModelZoo design to support unified loading with Criteria
  • Simple random Hyperparameter optimization

Breaking Changes

DJL is working to further improve the ease of use and correctness of our API. To that end, we have made a number of breaking changes for this release. Here are a few of the areas that had breaking changes:

  • Renamed TrainingMetrics to Evaluator
  • CompositeLoss replaced with AbstractCompositeLoss and SimpleCompositeLoss
  • Modified MLP class
  • Remove Matrix class
  • Updates to NDArray class

Known Issues

  1. RNN operators do not working with GPU on Windows.
  2. Only CUDA_ARCH 37, 70 are supported for Windows GPU machine.