diff --git a/backends/trtllm/src/errors.rs b/backends/trtllm/src/errors.rs index 8ec6e1af..812fd6e3 100644 --- a/backends/trtllm/src/errors.rs +++ b/backends/trtllm/src/errors.rs @@ -1,9 +1,14 @@ +use std::path::PathBuf; use thiserror::Error; use text_generation_router::server; #[derive(Debug, Error)] pub enum TensorRtLlmBackendError { + #[error("Provided engine folder {0} doesn't exist")] + EngineFolderDoesntExists(PathBuf), + #[error("Provided executorWorker binary path {0} doesn't exist")] + ExecutorWorkerNotFound(PathBuf), #[error("TensorRT-LLM Runtime error: {0}")] Runtime(String), #[error("Tokenizer error: {0}")] diff --git a/backends/trtllm/src/looper.rs b/backends/trtllm/src/looper.rs index 487c0457..b6a18ca2 100644 --- a/backends/trtllm/src/looper.rs +++ b/backends/trtllm/src/looper.rs @@ -257,6 +257,33 @@ impl TensorRtLlmBackendV2 { let engine_folder = engine_folder.as_ref(); let executor_worker_path = executor_worker_path.as_ref(); + // Ensure the engine folder exists + if !engine_folder.exists() { + let err = + TensorRtLlmBackendError::EngineFolderDoesntExists(engine_folder.to_path_buf()); + + error!( + err, + engine_folder = engine_folder.display(), + executor_worker_path = executor_worker_path.display() + ); + + return Err(err); + } + + // Ensure executor worker binary exists + if !executor_worker_path.exists() { + let err = TensorRtLlmBackendError::ExecutorWorkerNotFound(engine_folder.to_path_buf()); + + error!( + err, + engine_folder = engine_folder.display(), + executor_worker_path = executor_worker_path.display() + ); + + return Err(err); + } + let engine_folder = String::from( engine_folder .to_str()