@@ -592,7 +592,7 @@ int main(int argc, char** argv)
592592 const long num_layers = 3 ;
593593 const long num_heads = 6 ;
594594 const long embedding_dim = 192 ;
595- const long max_seq_len = 128 ;
595+ long max_seq_len = 128 ;
596596
597597 // Define transformer configuration with MoE
598598 using my_transformer = transformer_config<
@@ -933,21 +933,20 @@ int main(int argc, char** argv)
933933 cout << " Randomly selected segment #" << segment_idx << " (out of "
934934 << tokenized_segments.size () << " ) for generation\n " ;
935935 const auto & selected_segment = tokenized_segments[segment_idx];
936-
937- long prompt_seq_len = max_seq_len;
938936 if (selected_segment.size () < (size_t )max_seq_len) {
939- cerr << " Warning : Selected segment has only " << selected_segment.size ()
937+ cerr << " Error : Selected segment has only " << selected_segment.size ()
940938 << " tokens, need at least " << max_seq_len << " .\n " ;
941- prompt_seq_len = (selected_segment.size () * 2 ) / 3 ;
939+ // return 1;
940+ max_seq_len = (selected_segment.size () * 2 ) / 3 ;
942941 }
943942
944- // Extract prompt tokens (first prompt_seq_len tokens of the segment)
943+ // Extract prompt tokens (first max_seq_len tokens of the segment)
945944 std::vector<int > prompt_tokens (selected_segment.begin (),
946- selected_segment.begin () + prompt_seq_len );
945+ selected_segment.begin () + max_seq_len );
947946 cout << " Using " << prompt_tokens.size () << " tokens for initial prompt.\n " ;
948947
949948 // Setup inference context
950- inference_context llm_context (max_seq_len* 2 , 4 , tokenizer.get_special_token_id (" <pad>" ));
949+ inference_context llm_context (max_seq_len, 4 , tokenizer.get_special_token_id (" <pad>" ));
951950 llm_context.add_tokens (prompt_tokens);
952951 auto input_seq = llm_context.get_input_window ();
953952
@@ -966,7 +965,7 @@ int main(int argc, char** argv)
966965 cout << " Starting autoregressive generation...\n " ;
967966
968967 // Generation parameters
969- const size_t tokens_to_generate = selected_segment.size () - prompt_seq_len ;
968+ const size_t tokens_to_generate = selected_segment.size () - max_seq_len ;
970969 std::vector<int > generated_tokens;
971970 generated_tokens.reserve (tokens_to_generate);
972971
@@ -1018,7 +1017,7 @@ int main(int argc, char** argv)
10181017 cout << " \n === Validation: comparing generated vs. original segment ===\n " ;
10191018
10201019 // Extract reference tokens (the part we tried to regenerate)
1021- std::vector<int > reference_tokens (selected_segment.begin () + prompt_seq_len ,
1020+ std::vector<int > reference_tokens (selected_segment.begin () + max_seq_len ,
10221021 selected_segment.end ());
10231022
10241023 // Limit comparison to the length of generated tokens
@@ -1075,14 +1074,6 @@ int main(int argc, char** argv)
10751074 * randomization and augment_training_dataset() for noise injection. These techniques
10761075 * improve model robustness and generalization, enabling effective training on large
10771076 * volumes of information.
1078- *
1079- * - Transformer model configuration:
1080- * + vocabulary size: 3500
1081- * + layers: 4
1082- * + attention heads: 6
1083- * + embedding dimension: 228
1084- * + max sequence length: 100
1085- * - Number of parameters: 5,970,554 (training) - 5,432,738 (inference)
1086- *
1087- * After training, the model achieves excellent memorization of all internal datasets.
1077+ * After a complete training, the model achieves excellent memorization of all
1078+ * internal datasets.
10881079 */
0 commit comments