Optimize DataLoader and enhance README with project details#60
Closed
eamonsippy wants to merge 38 commits into
Closed
Optimize DataLoader and enhance README with project details#60eamonsippy wants to merge 38 commits into
eamonsippy wants to merge 38 commits into
Conversation
Updated project structure section with detailed descriptions for each directory and file.
* chore(deps): bump docker/build-push-action from 6 to 7
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7)
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* tensor: Add OpenMP multi-threading to AVX/SSE (#LMGNU58)
* chore: bump postcss from 8.5.15 to 8.5.19 in /frontend (#29)
Bumps [postcss](https://github.com/postcss/postcss) from 8.5.15 to 8.5.19.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.5.15...8.5.19)
---
updated-dependencies:
- dependency-name: postcss
dependency-version: 8.5.19
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Remove LibTorch C++ inference implementation
* Remove LibTorch C++ inference implementation (#30)
* Delete .env.example
* Delete index.html
* Delete manifest.webmanifest
* Delete postcss.config.js
* Delete icon.svg
* Delete manifest.webmanifest
* Delete sw.js
* Delete chat.ts
* Delete client.ts
* Delete health.ts
* Delete sessions.ts
* Delete App.tsx
* Delete ChatView.tsx
* Delete EmptyState.tsx
* Delete MessageAvatar.tsx
* Delete MessageList.tsx
* Delete torch_bridge.h
* Delete tensor.h
* Delete sampler.h
* Delete MessageRow.tsx
* Delete StarterPrompts.tsx
* Delete ThinkingIndicator.tsx
* Delete CharCounter.tsx
* Delete InputBar.tsx
* Delete AppLayout.tsx
* Delete Sidebar.tsx
* Delete Topbar.tsx
* Delete ModelBadge.tsx
* Delete StatsPanel.tsx
* Delete SessionItem.tsx
* mha: Clean up formatting and remove redundant headers in attention heads
The current code has a bunch of sloppy header duplicates and messy whitespace
in the comments. It’s readable, but it's unnecessarily bloated.
Fix this by:
- Stripping out the duplicate includes for "linear.h" and "tensor.h".
- Cleaning up the constructor formatting for both Head and MultiHeadAttention
so the initializers aren't stretched out across random lines.
- Tidying up the shape tracking comments to keep the documentation consistent
across the forward passes.
No functional changes, just making the code look like it was written with care.
* backward: Clean up formatting and remove redundant divider comments Tidies up the backward pass codebase by removing noisy visual dividers and flattening multi-line constructor initializers.
Fix this by: - Wrapping extended single-line initializers across `GradLinear`, `GradHead`, `GradMHA`, `GradFFN`, and `GradBlock` into single, readable lines. - Stripping out bloated visual comment blocks (`// ===...`) that clutter the file layout. - Cleaning up formatting for primitive backward functions (`backward_linear`, `backward_layernorm`, `backward_bmm`) to enforce consistent horizontal spacing. No logical or structural alterations to the backward operations.
* block: Clean up constructor initialization and comments in Transformer block
Tidies up the `Block` struct implementation by consolidating the member initializer list and adjusting the documentation style.
Fix this by:
- Condensing the multi-line initializer list for `sa`, `ffwd`, `ln1`, and `ln2` into a single, clean line expression.
- Cleaning up the formatting around the constructor's body braces.
- Adjusting whitespace within the forward pass dimension tracking comments to match the surrounding codebase's style.
No functional changes were made to the forward pass execution logic.
* style: Add strict LLVM-based .clang-format configuration
Establishes a unified styling standard across the codebase using a custom
LLVM-derived configuration.
Key rules enforced:
- 6-space indentation width with tabs disabled.
- Allman-style brace breaking for all blocks.
- Column limit capped at 100 characters.
- Line breaks before colons in constructor initializers.
- Disabled argument/parameter bin-packing to keep listings vertical and clean.
* llm: migrate main entry point to Objective-C++
Migrate the primary runtime file to Objective-C++ (.mm) to leverage
native Foundation APIs for high-level operating system interactions.
This transition retains the core C++ machine learning logic and underlying
headers entirely intact while modernizing path manipulation, environment
variable parsing, and command-line argument handling via NSFileManager,
NSString, and NSProcessInfo.
An @autoreleasepool block has been introduced to ensure proper memory
management of the Foundation elements during runtime.
Signed-off-by: Eamon
<eamon112009@gmail.com>
* llm: port C architecture implementation to Objective-C
Port the standalone C inference implementation to Objective-C (.mm)
by integrating native Foundation framework components.
The core matrix arithmetic, neural network layers, tensor reading,
and memory allocations remain unchanged to preserve low-level performance.
File path validation and loading configurations for 'vocab.bin' and
'weights.bin' have been migrated to use NSFileManager.
Wrapped the primary runtime execution and file I/O operations inside
an @autoreleasepool block to manage memory allocations safely within the
Cocoa runtime ecosystem.
* bench: Port the standalone C++ benchmark runner to Objective-C++ (.mm) by re-implementing environment and platform-level operations using the native Cocoa Foundation framework.
The foundational C++ primitives, template architectures, network forwards,
and AdamW backward passes remain unchanged to ensure that the benchmark
metrics and latency tracking are strictly unaltered. Argument parsing
has been migrated from standard char-array loops to NSProcessInfo and
NSArray, while file/directory checks now utilize NSFileManager.
The entire workload execution setup and execution sequence has been
encapsulated within a top-level @autoreleasepool block to manage
Foundation-scoped memory correctly.
Signed-off-by: Eamon
<eamon112009@gmail.com>
* Add CITATION.cff for llm.cpp software This file contains citation metadata for the llm.cpp software, including authors, identifiers, abstract, and keywords.
* Rename executable from quadtrix.exe to llm.exe
* Update executable name in README instructions
* Add new image to README banner for llm.cpp
Added a new image to the README for enhanced visual appeal.
* Delete Makefile
* chore: bump react-dom and @types/react-dom in /frontend (#25)
* chore(deps): bump zustand from 5.0.12 to 5.0.14 in /frontend (#28)
* chore(deps-dev): bump @vitejs/plugin-react from 4.7.0 to 6.0.3 in /frontend (#26)
chore(deps-dev): bump @vitejs/plugin-react in /frontend
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) from 4.7.0 to 6.0.3.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.0.3/packages/plugin-react)
---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
dependency-version: 6.0.3
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: Eamon2009
Co-authored-by: Eamon2009 <eamon112009@gmail.com>
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds (#39)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics (#40)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* maint: Add config.hpp with default model hyperparameters and constants (#41)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* main: Add config.h with default model hyperparameters and constants
* data: Add script to stream and compile TinyStories dataset (#42)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* main: Add config.h with default model hyperparameters and constants
* data: Add script to stream and compile TinyStories dataset
* data: Add script to stream and compile TinyStories dataset Introduce a data preparation script that streams the TinyStories dataset from Hugging Face and extracts stories sequentially into a flat text file. The script is configured to: - Enable dataset streaming mode (`streaming=True`) to minimize local storage and RAM footprints during processing. - Intercept and append structural newline spacing (`\n\n`) between discrete story blocks. - Track exact byte sizing to dynamically enforce an upper threshold limit (defaulting to a 10,000 MB cap) before safely closing out output generation. Saves the compiled corpus to 'input.txt' for downstream tokenization.
* main: Add foundational training and inference libraries to requirements.txt (#43)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* main: Add config.h with default model hyperparameters and constants
* data: Add script to stream and compile TinyStories dataset
* data: Add script to stream and compile TinyStories dataset Introduce a data preparation script that streams the TinyStories dataset from Hugging Face and extracts stories sequentially into a flat text file. The script is configured to: - Enable dataset streaming mode (`streaming=True`) to minimize local storage and RAM footprints during processing. - Intercept and append structural newline spacing (`\n\n`) between discrete story blocks. - Track exact byte sizing to dynamically enforce an upper threshold limit (defaulting to a 10,000 MB cap) before safely closing out output generation. Saves the compiled corpus to 'input.txt' for downstream tokenization.
* main: Add foundational training and inference libraries to requirements.txt
* ci: Add multi-platform automated compilation and release workflow (#44)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* main: Add config.h with default model hyperparameters and constants
* data: Add script to stream and compile TinyStories dataset
* data: Add script to stream and compile TinyStories dataset Introduce a data preparation script that streams the TinyStories dataset from Hugging Face and extracts stories sequentially into a flat text file. The script is configured to: - Enable dataset streaming mode (`streaming=True`) to minimize local storage and RAM footprints during processing. - Intercept and append structural newline spacing (`\n\n`) between discrete story blocks. - Track exact byte sizing to dynamically enforce an upper threshold limit (defaulting to a 10,000 MB cap) before safely closing out output generation. Saves the compiled corpus to 'input.txt' for downstream tokenization.
* main: Add foundational training and inference libraries to requirements.txt
* ci: Add multi-platform automated compilation and release workflow
* docker: Remove development Dockerfile for the frontend (#45)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* main: Add config.h with default model hyperparameters and constants
* data: Add script to stream and compile TinyStories dataset
* data: Add script to stream and compile TinyStories dataset Introduce a data preparation script that streams the TinyStories dataset from Hugging Face and extracts stories sequentially into a flat text file. The script is configured to: - Enable dataset streaming mode (`streaming=True`) to minimize local storage and RAM footprints during processing. - Intercept and append structural newline spacing (`\n\n`) between discrete story blocks. - Track exact byte sizing to dynamically enforce an upper threshold limit (defaulting to a 10,000 MB cap) before safely closing out output generation. Saves the compiled corpus to 'input.txt' for downstream tokenization.
* main: Add foundational training and inference libraries to requirements.txt
* ci: Add multi-platform automated compilation and release workflow
* docker: Remove development Dockerfile for the frontend
* Add mypy configuration with strict settings for .py
* maint: Add lmgnu as a Git submodule in libs/lmgnu (#46)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* docs: Add README covering Python setups, PyTorch inference, and C++ builds
* doc: Add training and validation loss curves to assets (#38)
* Update README with image and quick start section
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets (#35)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Configure GPT-style model hyperparameters and tokenizer (#36)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* V1.3.15 (#37)
* Update README with image and quick start section (#34)
Added an image and updated the quick start section.
* doc: Add training and validation loss curves to assets
Introduce visual plots tracking cross-entropy loss over 6,000 steps
and ~78 minutes of wall-clock training time.
These curves serve as a baseline reference for the model's convergence
behavior. The plots highlight a steady decline in training loss down to
~3.4, while validation loss plateaus early on, achieving its best score
of 4.1319 at step 3900.
Adding these assets to the repository ensures we have a clear, permanent
record of this run's performance to compare against future optimization
and hyperparameter tuning passes.
* main: Config model hyperparameters and tokenizer
* Delete quadtrix_training_report.png
* Delete run.md
* doc: Update training plots with generalization gap and 7k iter metrics
* main: Add config.h with default model hyperparameters and constants
* data: Add script to stream and compile TinyStories dataset
* data: Add script to stream and compile TinyStories dataset Introduce a data preparation script that streams the TinyStories dataset from Hugging Face and extracts stories sequentially into a flat text file. The script is configured to: - Enable dataset streaming mode (`streaming=True`) to minimize local storage and RAM footprints during processing. - Intercept and append structural newline spacing (`\n\n`) between discrete story blocks. - Track exact byte sizing to dynamically enforce an upper threshold limit (defaulting to a 10,000 MB cap) before safely closing out output generation. Saves the compiled corpus to 'input.txt' for downstream tokenization.
* main: Add foundational training and inference libraries to requirements.txt
* ci: Add multi-platform automated compilation and release workflow
* docker: Remove development Dockerfile for the frontend
* main: Add lmgnu as a Git submodule in libs/lmgnu
* maint: Implement comprehensive .gitignore rule suite (#47)
* Add lmgnu as a Git submodule in libs/lmgnu (#48)
* Fix typos and improve wording in README.md
* Delete backward.h
* Delete block.h
* Delete char_level.h
* Delete dataloader.h
* Delete embedding.h
* Delete feedforward.h
* Delete gpt.h
* Delete layernorm.h
* Delete linear.h
* Delete quadtrix.h
* math: Implement fundamental Tensor struct with AVX/SSE acceleration (#49)
* math: Implement fundamental Tensor struct with AVX/SSE acceleration
* Add Python version specification for code
* Update README.md
* Update README to enhance clarity on project purpose
Clarified the purpose of the repository and emphasized the C++ core implementation for learning about GPT construction without framework dependencies.
* Revise README for clarity and additional details
Updated the README to enhance clarity and detail about the project's implementation, performance metrics, and contributions. Added a leaderboard section and improved descriptions of the C++ core and its comparison with PyTorch implementations.
* config: Tune training scale hyperparameters (#50)
* Enhance README with BPE and training instructions
Added token level BPE implementation details and updated training instructions.
* Delete benches/python_benchmark.py no need
* Enhance release badge in README for clarity
Updated release badge to use a versioning shield for better visibility.
* Update README badges and license information
Rearranged badge order in README and added GPL v3 license badge.
* Update README.md with new BPE version of llm.cpp
* Update README.md with license info
* chore(deps-dev): bump vite from 8.0.16 to 8.1.5 in /frontend (#27)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 8.0.16 to 8.1.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite)
---
updated-dependencies:
- dependency-name: vite
dependency-version: 8.1.4
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* chore(deps): bump actions/upload-pages-artifact from 3 to 5 (#24)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 5.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v5)
---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: Eamon<Eamon2009>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eamon2009 <eamon112009@gmail.com>
* Clean up README by removing obsolete sections
Removed various sections related to GitHub configurations, frontend resources, and custom library modules from the README.
* Enhance README with references and citation section
Updated README to include links for references and citation.
* refactor: overhaul logging loop Refactor core Transformer classes and modernize the training execution pass.
* refactor: Rename model modules to MiniQuadtrix and overhaul logging loop Refactor core Transformer classes and modernize the training execution pass.
* infer: Add distributed inference script with multi-GPU response gathering
Introduce `infer.py` to support standalone evaluation and interactive chat
sessions across single-device and distributed (DDP) runtime environments.
Distributed Command Sync: Uses broadcast operations (`dist.broadcast`) to
synchronize user CLI prompts across all GPU worker processes from rank 0.
- Output Gathering: Executes autoregressive token generation across all nodes
and aggregates distinct GPU responses via `dist.all_gather_object`.
- Resource Management: Handles graceful process group teardown and cleanly
manages CLI termination interrupts across cluster ranks.
* train: Add DistributedDataParallel (DDP) training script with CLI chat interface
Introduce an end-to-end PyTorch training and inference script (`train.py`)
featuring multi-GPU DistributedDataParallel (DDP) initialization, mini-GPT
architecture definitions, and interactive post-training CLI generation.
Key highlights:
- Multi-GPU Support: Auto-detects NCCL process groups (`RANK`, `LOCAL_RANK`,
`WORLD_SIZE`) for DDP training; falls back cleanly to single-device CUDA/CPU.
- Architecture: Standard Transformer decoder stack (`MiniQuadtrix`) with
causal self-attention, multi-head projections, layer norms, and weight init.
- Data Pipeline: Tiktoken `o200k_base` tokenization streaming directly from
input datasets with randomized context-window batching (`get_batch`).
- Runtime Monitoring: Calculates gradient L2 norms, tokens-per-second
throughput, and tracks best validation loss checkpoints (`llm.pt`).
- Terminal Interface: Includes a post-training interactive generation loop for
prompt testing via `raw_model.generate()`.
- Teardown: Safely closes out the distributed process group (`dist.destroy_process_group`).
* math: Implement analytical backpropagation routines and activation tracking
Introduce `backward.h` providing full analytical reverse-mode automatic
differentiation across core Transformer modules without third-party frameworks.
Key components:
- Gradient Containers: Define specialized gradient accumulation structures
(`GradLinear`, `GradEmbedding`, `GradLayerNorm`, `GradHead`, `GradMHA`,
`GradFFN`, `GradBlock`, `Grads`) for parameter optimization.
- Activation Checkpointing: Introduce forward-pass state structs (`SavedLN`,
`SavedHead`, `SavedMHA`, `SavedFFN`, `SavedBlock`, `SavedForward`) to retain
intermediate tensors, dropout masks, and LayerNorm scale parameters.
- Backward Operations:
- `backward_cross_entropy`: Scaled Softmax-with-Loss analytical gradient.
- `backward_linear`: Dense matrix multiplication backprop computing `dX`, `dW`,
and bias accumulation.
- `backward_layernorm`: LayerNorm gradient following standard normalization standard.
- `backward_relu` & `backward_dropout`: Mask-based element-wise activation backprop.
- `backward_bmm` & `backward_softmax3d`: Causal self-attention matrix derivatives.
* math: Add Head and MultiHeadAttention causal self-attention modules
* data: improved mm C++ Byte-Pair Encoding (BPE) DataLoader and tokenizer implementation
* main: Add CLI application entry point supporting training, chat, and generation modes
* Fix image attributes in README.md
Updated image attributes in README.md.
* Revise file structure section in README
Updated the file structure section to reflect changes in project organization and added details about new directories and files.
* Delete package-lock.json
* Delete package.json
* Delete SettingsPanel.tsx
* Delete NewChatButton.tsx
* Delete SessionList.tsx
* Delete Badge.tsx
* Delete Button.tsx
* Delete Input.tsx
* Delete Slider.tsx
* Delete Tooltip.tsx
* Delete vite.config.ts
* Delete tsconfig.json
* Delete tailwind.config.ts
* Delete sw.js
* Delete useAutoScroll.ts
* Delete useConnectionStatus.ts
* Delete index.css
* Delete useKeyboardShortcut.ts
* Delete main.tsx
* Delete registerServiceWorker.ts
* Delete sessionStore.ts
* Delete settingsStore.ts
* Delete index.ts
* Delete text.ts
* Delete time.ts
* build: Add Makefile for native compilation and script wrapper targets
* Delete config.h
* Delete attention.h
* Delete backward.h
* Delete dataloader.h
* Delete train.mm
* Delete tensor.h
* build: Makefile for native compilation and script wrapper targets
* cuda: Add CUDATensor container for host/device VRAM memory management
* cuda: Add CUDA and cuBLAS accelerated main entry point Introduce `main.cu` to serve as the CUDA-accelerated driver for dataset loading, GPU initialization, backprop training, chat sessions, and token generation.
* cuda: Add custom CUDA kernels for bias addition, ReLU, LayerNorm, and Softmax
* cuda: Add CUDA_CHECK and CUBLAS_CHECK error handling macros
* cuda: Add gpu_matmul, gpu_layernorm, and gpu_softmax layer wrappers
* main: Add objective-C++/C++ main application entry point
* Revise file structure in README.md reflect changes in project organization and added new directories for CI/CD workflows and assets.
Updated file structure section in README.md to reflect changes in project organization and added new directories for CI/CD workflows and assets.
* Delete engine/fineweb_dataset.py not used anymore
* Delete engine/iGPU directory no longer in use
* backward: Add analytical backprop ops and gradient accumulators
Introduce foundational backpropagation gradient structures and primitive
backward operations for transformer layer components.
Key additions:
- Gradient Accumulation Structures: Define `Grads` root container and child
structs (`GradLinear`, `GradEmbedding`, `GradLayerNorm`, `GradHead`, `GradMHA`,
`GradFFN`, `GradBlock`) equipped with zero-initialization helpers.
- Activation Memory Structs: Define `SavedForward` and layer-specific intermediate
tensors needed for reverse-mode automatic differentiation.
- Primitive Backward Kernels:
- `backward_cross_entropy`: Evaluates softmax derivatives scaled by batch size ($1 / BT$).
- `backward_linear`: Computes input gradients ($dX = dOut \cdot W^T$) and
accumulates weight/bias gradients ($dW$, $db$).
- `backward_layernorm`: Implements full LayerNorm backprop incorporating mean/std
jacobian terms along sequence channels.
- `backward_relu`: Computes element-wise activation derivative masks.
* Delete benches/bech(mm).mm no longer in use
* Update README with OpenMP flag for build command
* model: Add GPT language model architecture, loss function, and AdamW optimizer
* bpe: Add Byte-Pair Encoding (BPE) tokenizer and DataLoader class
* lm: Update GPT language model header with sampler repetition penalty
* Update CI workflow to build and test llm.exe
* attention: Add Head and MultiHeadAttention causal self-attention modules
* Add C/C++ file extensions to workflow checks
* Update CI workflow for consistency and fixes
* Refactor PR comment checks workflow simplify trigger conditions and enhance comment formatting. Adjusted steps for extracting PR and comment metadata, and refined success/failure reporting.
Updated PR comment checks workflow
* Change environment name from 'lmgnu' to 'main'
* tokenizer: Optimize DataLoader with OpenMP parallelization and merges
* Update README.md
* Enhance project structure documentation in README
Updated project structure section with detailed descriptions for each directory and file.
* tensor: Add OpenMP multi-threading to AVX/SSE vector operations
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Eamon
Signed-off-by: Eamon2009
Signed-off-by: Eamon<Eamon2009>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Eamon
Signed-off-by: Eamon2009
Signed-off-by: Eamon<Eamon2009>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Adjusted the height of the image in the README to improve layout consistency.
Added output examples and training details for LLM.
…tive chat Implement the core execution driver in `main.cpp` to coordinate model training, standalone inference, and interactive chat loops using lightweight C++ bindings. Key additions: - Platform Detection (`get_cpu_info`): Added cross-platform hardware detection routing (`/proc/cpuinfo` on Linux, `sysctlbyname` on macOS, and Windows Registry) to log host CPU specifications. - Path Resolution Helpers: Added cross-platform path manipulation routines (`choose_existing_path`, `choose_output_path`) to safely locate input data and save binary model checkpoints. - Command-Line Argument Parsing: Parsed options for `--generate`, `--chat`, `--chat-tokens`, `--system`, `--rep-penalty`, and `--rep-window`. - Interactive Chat Mode (`run_chat`): Built a prompt loop supporting custom system prompts, contextual truncation (`BLOCK_SIZE`), and real-time generation output. - Training & Evaluation Pipeline: Configured an AdamW training step routine, loss estimation iterations (`estimate_loss`), wall-clock timer measurements, and best-model serialization.
Added a new image to the README for better visual representation.
Removed unnecessary HTML header and image from README.
Added hardware support section with details on Apple Silicon, NVIDIA, and AMD hardware.
Updated hardware support section to clarify compatibility with Apple Silicon and NVIDIA. Removed redundant subheadings and improved table formatting.
Removed an image from the README and added another image with GPU model instructions.
Updated section title and clarified GPU migration details.
eamonsippy
requested review from
a team and
Eamon2009
and removed request for
a team and
Eamon2009
July 26, 2026 17:46
Eamon2009
requested review from
a team and
Eamon2009
and removed request for
a team and
Eamon2009
July 26, 2026 17:48
Member
|
oops !! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
No description provided.