Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Transformer Model from Scratch

A complete PyTorch implementation of the Transformer architecture proposed in the paper "Attention Is All You Need" by Vaswani et al. This repository focuses on building the Transformer from first principles, implementing every major component without relying on high-level libraries such as torch.nn.Transformer.

The project is intended for learning the internal workings of Transformers, including self-attention, positional encoding, multi-head attention, encoder-decoder architecture, masking, and training.

Overview

This implementation follows the original research paper as closely as possible and provides a modular codebase where each component is implemented independently. The objective is to understand how Transformer models work internally rather than using pre-built implementations.

The repository includes:

  • Input Embeddings
  • Positional Encoding
  • Layer Normalization
  • Residual Connections
  • Multi-Head Self Attention
  • Feed Forward Networks
  • Encoder
  • Decoder
  • Encoder-Decoder Transformer
  • Source and Target Masks
  • Training Pipeline
  • Greedy Decoding for Inference

Architecture

The implemented architecture consists of:

  • Input Embedding Layer
  • Positional Encoding
  • N Encoder Blocks
  • N Decoder Blocks
  • Multi-Head Attention
  • Position-wise Feed Forward Networks
  • Layer Normalization
  • Residual Connections
  • Final Linear Projection to Vocabulary

The implementation closely follows the architecture presented in the original paper.

Repository Structure

Transformer-Model/
│
├── config.py # Training configuration
├── dataset.py # Dataset loading and preprocessing
├── model.py # Transformer architecture implementation
├── train.py # Training script
├── translate.py # Inference and translation
├── tokenizer_*.json # Tokenizers
├── weights/ # Saved model checkpoints
└── README.md

Implemented Components

Embedding Layer

Converts token indices into dense vector representations and scales them by √d_model.

Positional Encoding

Implements sinusoidal positional encodings to provide positional information without recurrence.

Multi-Head Attention

Implements:

  • Query
  • Key
  • Value projections
  • Scaled Dot-Product Attention
  • Multi-Head concatenation
  • Output projection

Feed Forward Network

Each Transformer block contains a position-wise feed-forward network consisting of two linear layers with ReLU activation.

Residual Connections

Residual connections are applied around every attention and feed-forward block, followed by Layer Normalization.

Encoder

Each encoder layer contains:

  • Multi-Head Self Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Decoder

Each decoder layer contains:

  • Masked Multi-Head Self Attention
  • Cross Attention
  • Feed Forward Network
  • Layer Normalization
  • Residual Connections

Output Projection

Projects decoder outputs to vocabulary size for token prediction.

Training

The training pipeline includes:

  • Dataset preparation
  • Tokenization
  • Padding and masking
  • Teacher forcing
  • Cross Entropy Loss
  • Adam Optimizer
  • Checkpoint saving
  • Validation after each epoch

Run training using:

python train.py

Inference

Generate translations using:

python model.py

The decoder performs autoregressive generation using greedy decoding.

Technologies Used

  • Python
  • PyTorch
  • TorchText
  • Hugging Face Tokenizers

Learning Objectives

This project was developed to gain a deep understanding of:

  • Transformer architecture
  • Self-attention mechanism
  • Multi-head attention
  • Encoder-decoder models
  • Sequence-to-sequence learning
  • Positional encoding
  • Training neural machine translation models
  • PyTorch model implementation from scratch

Reference

Attention Is All You Need Paper: https://arxiv.org/abs/1706.03762

Acknowledgements

This implementation is based on the concepts introduced in the paper Attention Is All You Need and was developed as an educational project to understand Transformer architecture at a low level by implementing every component from scratch.

About

A PyTorch implementation of the Transformer architecture from the "Attention Is All You Need" research paper, built entirely from scratch. The project implements core components such as multi-head attention, positional encoding, encoder-decoder blocks, and the complete training pipeline.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages