All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Support models that do not utilize attention masks in FeatureExtractionPipeline
- Bump onnx-gomlx to v0.3.2 for expanded model support in Go sessions.
- Update Go, Tokenizers, OnnxRuntime and GoMLX dependencies
- Compatibility with NHWC and NCHW formats in Image Classification Pipeline
- Update to new goMLX project structure (0.24.0+)
- remove the depency on python when installing goMLX libraries
- Update Go, Tokenizers, and GoMLX dependencies
- XLA now uses StableHLO
- XLA CUDA backend is now CUDA 13
- Fix: use right tokenization and token type IDs for Bert-style sentence pair in cross encoder
- Performance improvement: do not pad inputs to POW2 when using simplego backend
- Apply small input performance fix to goMLX backend
- Fix performance regression for small inputs
- The new TextGenerationPipeline allows you to run generative models such as Gemma and Phi in golang. Kudos to Riley Oh for getting this one over the line!
- Currently only implemented for the ORT backend. Implementations for XLA and GO backend coming soon!
- See the documentation for how to get started
- The CrossEncoderPipeline implements the equivalent of sentence transformers' Cross Encoder. Kudos to Fábio Correia for providing the initial implementation
- The ImageClassificationPipeline implements the equivalent of Hugging Face's Image Classification pipeline
- The training session to fine-tune embeddings now accept TrainEval and Eval datasets to compute in-sample and test statistics
- The training session now implements early stopping based on the loss on the Eval dataset. Early stopping is evaluated at the end of each training epoch.
- The training session now accepts a layer freezing configuration to specify which layers of the transformer will be frozen during fine-tuning
- The go tokenizer now supports unigram tokenization
- Updated go to 1.25.0
- Upgraded GoMLX to 0.22.1
- Upgraded to latest Rust and Go tokenizers
- Generalised output tensor types, added int64 support (preparation for text generation pipeline)
- Dependency updates and go 1.24.5
- Tokenizers obey max_position_embeddings, closing issue #73
- Provided default ORT path in darwin/mac
- Dependency updates and go 1.24.4
- Run inference and fine-tuning, all from native Go!
- Added
NewGoSession()backend, enabling Hugot to run in pure Go environments without C dependencies - Implements our most requested community feature using SimpleGo from GoMLX
- Optimized for simpler workloads and environments where cgo is restricted
- Works best with smaller models like all-MiniLM-L6-v2
- Performance sweet spot: batches of approximately 32 inputs per call
- The Go backend currently performs 5-20x slower than C backends
- For performance-critical applications, we recommend using C backends (XLA or ORT)
- Significant speed improvements expected with the introduction of SIMD in Go 1.25
- The Go backend and tokenizer currently lack support for certain operators
- If you encounter compatibility issues, please open an issue
- As a temporary workaround, use a C backend until the issue is resolved
- Build Tag Requirements Updated:
- For
NewORTSession(): Add-tags "ORT"or-tags "ALL"to your build arguments - For
NewXLASession(): Add-tags "XLA"or-tags "ALL"to your build arguments
- For
- SimpleGo backend and SugarMe tokenizers for running Hugot without C dependencies
- Upgraded CUDA libraries to 12.9
- Upgraded GoMLX for performance improvements and bugfixes.