positional_encoding
positional_encoding
¶
Positional encoding for GPT transformer.
create_positional_encoding
¶
create_positional_encoding(encoding_type, embedding_dimension, maximum_sequence_length, number_of_heads=None, base_frequency=10000.0, learnable_frequencies=False)
Factory function to create positional encoding.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
encoding_type
|
str
|
Type of encoding (use PositionalEncodingType enum values) |
required |
embedding_dimension
|
int
|
Model embedding dimension |
required |
maximum_sequence_length
|
int
|
Maximum sequence length |
required |
number_of_heads
|
int | None
|
Number of attention heads (required for RoPE) |
None
|
base_frequency
|
float
|
Base frequency for RoPE |
10000.0
|
learnable_frequencies
|
bool
|
Whether to make RoPE frequencies learnable |
False
|
Returns:
| Type | Description |
|---|---|
PositionalEncoding1D | RotaryPositionalEncoding1D
|
Positional encoding module |
Raises:
| Type | Description |
|---|---|
ValueError
|
If encoding_type is not supported or required args missing |
Source code in src/versatil/models/layers/transformer/positional_encoding.py
apply_rope_positional_encoding
¶
Apply positional encoding to queries and keys.
Handles both Sinusoidal (added to embeddings) and RoPE (applied via rotation).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
queries
|
Tensor
|
Query tensor (B, number_of_heads, query_len, head_dim) |
required |
keys
|
Tensor
|
Key tensor (B, number_of_heads, key_len, head_dim) including cached keys |
required |
positional_encoding
|
Module
|
Positional encoding module |
required |
cache_position
|
int
|
Starting position for queries (0 for initial forward, cache_len for generation) |
0
|
Returns:
| Type | Description |
|---|---|
tuple[Tensor, Tensor]
|
Tuple of (queries_with_pos, keys_with_pos) |