Skip to content

v0.3.0

Latest

Choose a tag to compare

@neurlang neurlang released this 31 Dec 15:21
· 2 commits to master since this release

Release Notes - Neurlang Classifier v0.3.0

πŸš€ Major Refactoring and Architecture Improvements

This release represents a significant evolution of the Neurlang Classifier with major architectural improvements, code cleanup, and enhanced functionality. The codebase has been substantially refactored to improve maintainability, performance, and usability.

✨ New Features

Multi-bit Output Support

  • Enhanced feedforward networks with multi-bit output capabilities
  • Improved training logic with Hamming distance calculations for multi-bit outputs
  • Better bit extraction logic for handling complex output scenarios

New Phonemizer Architecture

  • Utterance-level transformer implementation (train_phonemizer_ulevel)
  • Improved phonemizer models with better token attenuation logic
  • Enhanced grapheme-to-phoneme conversion capabilities

Perfect Prediction Detection

  • Training recoil prevention through perfect prediction detection
  • Intelligent training thresholds with dual cell mode activation at 100% accuracy
  • Improved convergence for complex learning tasks

πŸ”§ Major Refactoring

Training System Overhaul

  • Removed legacy learning package (~94k lines of code cleanup)
  • Consolidated training logic into the unified trainer package
  • Simplified training scripts across all demo programs
  • Unified model output paths for consistent file organization

Code Quality Improvements

  • Comprehensive code cleanup removing unreachable code paths
  • Eliminated unused variables and function assignments
  • Removed unnecessary nil checks and unused receiver variables
  • Project-wide Go formatting applied consistently

Architecture Simplification

  • Streamlined network architectures with consolidated output handling
  • Simplified tally logic removing complex multi-bit Hamming distance calculations
  • Improved layer implementations with better error handling

πŸ› Bug Fixes

Critical Fixes

  • Fixed feedforward neuron positioning bug that was affecting training accuracy
  • Corrected multi-cell output handling for better prediction reliability
  • Fixed dataset length calculations preventing training errors
  • Resolved French language option handling (empty option support)

Signal Handling

  • Replaced SIGKILL with SIGTERM in pprof signal handlers for graceful shutdown
  • Improved process management in training scripts

πŸ“š Documentation & Testing

Enhanced Documentation

  • Comprehensive README expansion with detailed library documentation
  • Updated Go version requirement to 1.18
  • Added package documentation (doc.go files) across all modules
  • Clarified Unicode codepoint hashing behavior in hash package

Testing Improvements

  • Added comprehensive hash function tests for vectorized implementations
  • Enhanced test coverage for core functionality
  • Improved validation of training and inference pipelines

πŸ”„ Dependency Updates

Simplified Dependencies

  • Removed CUDA dependencies (gorgonia.org/cu) for lighter installation
  • Updated klauspost/cpuid/v2 from v2.2.8 to v2.2.3
  • Replaced NumToWordsGo with yousifnimah/NumToWordsGo v1.2.1
  • Updated quaternary package to v0.2.4
  • Removed unnecessary dependencies (Google UUID, pkg/errors)

πŸ—‚οΈ Project Structure Changes

Removed Legacy Components

  • Eliminated learning package and all CUDA-related code
  • Removed legacy phonemizer commands (train_phonemizer, train_phonemizer2)
  • Cleaned up obsolete training scripts and unused implementations

Enhanced Command Structure

  • Consolidated training commands with unified interfaces
  • Improved inference scripts with better error handling
  • Added comprehensive shell scripts (trainall.sh, runall.sh) for batch operations

🎯 Performance Improvements

Training Optimization

  • Faster CPU-based training with improved integer arithmetic
  • Better memory usage through code cleanup and optimization
  • Enhanced parallel processing with improved concurrency utilities

Hash Function Enhancements

  • Optimized vectorized hash functions with assembly improvements
  • Better hash distribution for improved model performance
  • Reduced computational overhead in core operations

πŸ”„ Breaking Changes

⚠️ Important: This release includes breaking changes due to the major refactoring:

  • learning package removed - migrate to trainer package
  • Legacy phonemizer commands removed - use new train_phonemizer_ulevel
  • CUDA support removed - CPU-only training (was already the recommended approach)
  • Some API signatures changed due to multi-bit output support

πŸš€ Migration Guide

From v0.2.0 to v0.3.0

  1. Replace learning package usage with trainer package
  2. Update training scripts to use new unified training functions
  3. Remove CUDA dependencies from your projects
  4. Update Go version to 1.18+ if not already done
  5. Review model output paths as they may have changed

πŸ“Š Statistics

  • 94,110 lines removed (primarily legacy CUDA code)
  • 1,356 lines added (new features and improvements)
  • 94 files changed across the entire codebase
  • Major dependency cleanup reducing installation complexity

πŸ™ Acknowledgments

This release represents months of careful refactoring and improvement work, focusing on making Neurlang Classifier more maintainable, performant, and user-friendly while preserving all core functionality.


Full Changelog: v0.2.0...v0.3.0