ONE - On-device Neural Engine
Loading...
Searching...
No Matches
ggma::ModelConfig Struct Reference

#include <Config.h>

Public Member Functions

 ModelConfig ()
 
void load_from_file (const std::string &config_path)
 
void load_from_json (const Json::Value &root)
 
bool is_valid () const
 
std::string to_string () const
 

Data Fields

int n_layers
 
int hidden_size
 
int num_attention_heads
 
int vocab_size
 
int max_position_embeddings
 
std::optional< int > bos_token_id
 
std::optional< int > eos_token_id
 

Detailed Description

Definition at line 36 of file Config.h.

Constructor & Destructor Documentation

◆ ModelConfig()

ggma::ModelConfig::ModelConfig ( )

Definition at line 58 of file Config.cc.

58{}

Member Function Documentation

◆ is_valid()

bool ggma::ModelConfig::is_valid ( ) const

Definition at line 100 of file Config.cc.

101{
102 // Check required fields are positive
103 if (n_layers <= 0)
104 return false;
105 if (hidden_size <= 0)
106 return false;
107 if (num_attention_heads <= 0)
108 return false;
109 if (vocab_size <= 0)
110 return false;
112 return false;
113
114 // Check token IDs are non-negative (only if they have values)
115 if (bos_token_id.has_value() && bos_token_id.value() < 0)
116 return false;
117 if (eos_token_id.has_value() && eos_token_id.value() < 0)
118 return false;
119
120 return true;
121}
std::optional< int > eos_token_id
Definition Config.h:45
int max_position_embeddings
Definition Config.h:43
int num_attention_heads
Definition Config.h:41
std::optional< int > bos_token_id
Definition Config.h:44

References bos_token_id, eos_token_id, hidden_size, max_position_embeddings, n_layers, num_attention_heads, and vocab_size.

◆ load_from_file()

void ggma::ModelConfig::load_from_file ( const std::string &  config_path)

Definition at line 61 of file Config.cc.

62{
63 std::ifstream config_file(config_path);
64
65 if (!config_file.is_open())
66 throw std::runtime_error(
67 "config.json not found in package. This file is required for ggma_context.");
68
69 try
70 {
71 Json::Value root;
72 Json::Reader reader;
73
74 if (!reader.parse(config_file, root, false))
75 throw std::runtime_error("Failed to parse JSON: " + reader.getFormattedErrorMessages());
76
77 load_from_json(root);
78 }
79 catch (const std::exception &e)
80 {
81 // Re-throw the exception to ensure session creation fails
82 throw std::runtime_error("Failed to load config.json: " + std::string(e.what()));
83 }
84}
Op * root(Op *)
Return the root Op from a given Op node.
Definition Op.cpp:144
void load_from_json(const Json::Value &root)
Definition Config.cc:87

References load_from_json().

◆ load_from_json()

void ggma::ModelConfig::load_from_json ( const Json::Value &  root)

Definition at line 87 of file Config.cc.

88{
89 // Load model configuration from Hugging Face config.json
90 load_config_field(root, "num_hidden_layers", n_layers);
91 load_config_field(root, "hidden_size", hidden_size);
92 load_config_field(root, "num_attention_heads", num_attention_heads);
93 load_config_field(root, "vocab_size", vocab_size);
94 load_config_field(root, "max_position_embeddings", max_position_embeddings);
95 load_config_field(root, "bos_token_id", bos_token_id);
96 load_config_field(root, "eos_token_id", eos_token_id);
97}
void load_config_field(const Json::Value &root, const std::string &field_name, T &target, bool is_optional=false)
Definition Config.cc:28

References bos_token_id, eos_token_id, hidden_size, ggma::load_config_field(), max_position_embeddings, n_layers, num_attention_heads, and vocab_size.

Referenced by load_from_file().

◆ to_string()

std::string ggma::ModelConfig::to_string ( ) const

Definition at line 124 of file Config.cc.

125{
126 std::ostringstream oss;
127 oss << "ModelConfig {\n";
128 oss << " n_layers: " << n_layers << "\n";
129 oss << " hidden_size: " << hidden_size << "\n";
130 oss << " num_attention_heads: " << num_attention_heads << "\n";
131 oss << " vocab_size: " << vocab_size << "\n";
132 oss << " max_position_embeddings: " << max_position_embeddings << "\n";
133 oss << " bos_token_id: "
134 << (bos_token_id.has_value() ? std::to_string(bos_token_id.value()) : "undefined") << "\n";
135 oss << " eos_token_id: "
136 << (eos_token_id.has_value() ? std::to_string(eos_token_id.value()) : "undefined") << "\n";
137 oss << "}";
138 return oss.str();
139}

References bos_token_id, eos_token_id, hidden_size, max_position_embeddings, n_layers, num_attention_heads, and vocab_size.

Field Documentation

◆ bos_token_id

std::optional<int> ggma::ModelConfig::bos_token_id

Definition at line 44 of file Config.h.

Referenced by is_valid(), load_from_json(), and to_string().

◆ eos_token_id

std::optional<int> ggma::ModelConfig::eos_token_id

Definition at line 45 of file Config.h.

Referenced by ggma::Context::generate(), is_valid(), load_from_json(), and to_string().

◆ hidden_size

int ggma::ModelConfig::hidden_size

◆ max_position_embeddings

int ggma::ModelConfig::max_position_embeddings

Definition at line 43 of file Config.h.

Referenced by is_valid(), load_from_json(), and to_string().

◆ n_layers

int ggma::ModelConfig::n_layers

◆ num_attention_heads

int ggma::ModelConfig::num_attention_heads

Definition at line 41 of file Config.h.

Referenced by ggma::Context::generate(), is_valid(), load_from_json(), and to_string().

◆ vocab_size

int ggma::ModelConfig::vocab_size

Definition at line 42 of file Config.h.

Referenced by is_valid(), load_from_json(), ggma::Context::sample(), and to_string().


The documentation for this struct was generated from the following files: