Bug fixes, Runtime & Performance optimization #332
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request includes significant optimizations and bug fixes.
ControlNetModel
Constructor Improvements:
Added type checks and exception handling.
Simplified block creation with loops to reduce redundancy.
Forward Method:
Streamlined the forward pass to enhance performance and clarity.
Ensured efficient tensor operations and minimized unnecessary computations.
General Code Clean-up:
Removed redundant checks and streamlined the logic.
Organized methods and attributes for better readability and maintainability.
BPETokenizer
Initialization Improvements:
Enhanced error handling in the initializer init(mergesAt:vocabularyAt:).
Removed force unwrapping to prevent runtime crashes.
Tokenization Process:
Simplified the tokenization process to improve readability and efficiency.
Optimized the encode function to reduce redundant operations and improve performance.
Pair and Update Functions:
Utilized zip in pairs(for:) to create pairs more efficiently.
Refined update(_:merging:) to handle edge cases better and avoid unnecessary computations.
Helper Functions:
Introduced static helper functions for reading merges and vocabulary, including error handling.
These improvements ensure that the BPETokenizer class is more robust, efficient, and easier to maintain.
The changes address potential runtime errors and enhance the overall performance of the tokenizer.