81 std::cout <<
"\n=== TinyLlama Distributed Inference (Master Node) ===" << std::endl;
82 std::cout <<
"Type 'quit' to exit, 'status' for cluster status, or enter prompts for inference." << std::endl;
83 std::cout <<
"Cluster info:" << std::endl;
87 std::cout <<
" Node " <<
node.rank <<
" (" <<
node.hostname <<
"): ";
89 case DistributedCoordinator::NodeRole::MASTER:
90 std::cout <<
"MASTER";
92 case DistributedCoordinator::NodeRole::WORKER:
93 std::cout <<
"WORKER";
95 case DistributedCoordinator::NodeRole::HYBRID:
96 std::cout <<
"HYBRID";
99 std::cout <<
", GPU: " << (
node.has_gpu ?
"yes" :
"no")
100 <<
", Layers: " <<
node.gpu_layers << std::endl;
102 std::cout << std::endl;
108 std::cout <<
"tinyllama> ";
109 std::getline(std::cin, input);
111 if (input.empty())
continue;
113 if (input ==
"quit" || input ==
"exit") {
117 if (input ==
"status") {
119 std::cout <<
"Cluster Status:" << std::endl;
120 std::cout <<
" Total requests: " <<
stats.total_requests << std::endl;
121 std::cout <<
" Completed: " <<
stats.completed_requests << std::endl;
122 std::cout <<
" Failed: " <<
stats.failed_requests << std::endl;
123 std::cout <<
" Active requests per node:" << std::endl;
124 for (
const auto&
pair :
stats.requests_per_node) {
125 std::cout <<
" Node " <<
pair.first <<
": " <<
pair.second << std::endl;
140 std::cout <<
"Processing request..." << std::endl;
141 auto start_time = std::chrono::high_resolution_clock::now();
146 auto end_time = std::chrono::high_resolution_clock::now();
149 std::cout <<
"\n--- Response ---" << std::endl;
151 std::cout <<
result.generated_text << std::endl;
152 std::cout <<
"\nStats:" << std::endl;
153 std::cout <<
" Tokens: " <<
result.tokens_generated << std::endl;
154 std::cout <<
" Inference time: " <<
result.inference_time_ms <<
"ms" << std::endl;
155 std::cout <<
" Total time: " <<
total_time.count() <<
"ms" << std::endl;
156 std::cout <<
" Processed by node: " <<
result.processing_node << std::endl;
158 std::cout <<
"Error: " <<
result.error_message << std::endl;
160 std::cout <<
"tinyllama> ";
165 std::cout <<
"Failed to submit request!" << std::endl;
169 std::this_thread::sleep_for(std::chrono::milliseconds(100));
int main(int argc, char *argv[])
std::atomic< bool > shutdown_requested
void run_interactive_master(DistributedCoordinator &coordinator)
void signal_handler(int signal)
void print_usage(const char *program_name)
DistributedCoordinator::NodeRole parse_role(const std::string &role_str)