Distributed coordinator for multi-node LLM inference.
static constexpr int TAG_SHUTDOWN
std::atomic< int > total_requests_
std::atomic< int > completed_requests_
~DistributedCoordinator()
InferenceResult process_inference_locally(const InferenceRequest &request)
Process inference request locally.
bool send_result_to_master(const InferenceResult &result)
Send result back to master.
void discover_cluster()
Discover cluster topology and node capabilities.
static constexpr int TAG_NODE_INFO
void shutdown()
Shutdown MPI and cleanup resources.
static constexpr int TAG_REQUEST
bool receive_and_process_request()
Receive and process request (worker node)
bool initialize()
Initialize MPI and discover network topology.
std::vector< char > serialize_request(const InferenceRequest &request)
Serialize request for MPI transmission.
int get_size() const
Get the total number of nodes.
static constexpr int TAG_RESULT
bool submit_request(const InferenceRequest &request, std::function< void(const InferenceResult &)> callback)
Submit an inference request (master node only)
bool receive_result_from_worker()
Receive result from worker (master node)
void run_worker()
Process requests as a worker node This function blocks and processes incoming requests.
std::vector< NodeInfo > cluster_nodes_
void handle_heartbeat(int source_rank)
Handle heartbeat from other nodes.
std::string tokenizer_path_
bool send_request_to_worker(int worker_rank, const InferenceRequest &request)
Send request to worker node.
void send_heartbeat()
Send heartbeat to all nodes.
std::atomic< int > failed_requests_
std::map< std::string, std::function< void(const InferenceResult &)> > pending_callbacks_
LoadStats get_load_stats() const
std::vector< NodeInfo > get_cluster_info() const
Get information about all nodes in the cluster.
static constexpr int TAG_HEARTBEAT
int get_rank() const
Get the rank of this node.
std::vector< char > serialize_result(const InferenceResult &result)
Serialize result for MPI transmission.
InferenceRequest deserialize_request(const std::vector< char > &data)
Deserialize request from MPI transmission.
void run_master()
Run as master node, coordinating requests This function blocks and coordinates the distributed system...
int select_optimal_node(const InferenceRequest &request)
Select optimal node for processing request.
InferenceResult deserialize_result(const std::vector< char > &data)
Deserialize result from MPI transmission.
bool is_mpi_available() const
Check if MPI is available and initialized.
std::string system_prompt
std::string error_message
std::string generated_text
Get load balancing statistics.
float average_response_time_ms
std::map< int, int > requests_per_node
std::atomic< bool > is_busy
std::atomic< int > active_requests