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
learningpackage (~94k lines of code cleanup) - Consolidated training logic into the unified
trainerpackage - 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.gofiles) 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/v2from v2.2.8 to v2.2.3 - Replaced NumToWordsGo with
yousifnimah/NumToWordsGov1.2.1 - Updated quaternary package to v0.2.4
- Removed unnecessary dependencies (Google UUID, pkg/errors)
ποΈ Project Structure Changes
Removed Legacy Components
- Eliminated
learningpackage 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
learningpackage removed - migrate totrainerpackage- 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
- Replace
learningpackage usage withtrainerpackage - Update training scripts to use new unified training functions
- Remove CUDA dependencies from your projects
- Update Go version to 1.18+ if not already done
- 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