@@ -89,6 +89,10 @@ struct CommandLineArgs {
8989 std::string embeddings_dir;
9090 std::string controlnet_dir;
9191 std::string text_encoder_dir;
92+ bool vae_on_cpu = false ;
93+ bool vae_tiling = false ;
94+ bool offload_to_cpu = false ;
95+ bool diffusion_fa = false ;
9296};
9397
9498void print_usage (const char * program_name) {
@@ -109,6 +113,10 @@ void print_usage(const char* program_name) {
109113 std::cerr << " --embeddings-dir <path> Embeddings directory" << std::endl;
110114 std::cerr << " --controlnet-dir <path> ControlNet models directory" << std::endl;
111115 std::cerr << " --text-encoder-dir <path> Text encoder models directory" << std::endl;
116+ std::cerr << " --vae-on-cpu Keep VAE on CPU (default: false)" << std::endl;
117+ std::cerr << " --vae-tiling Enable VAE tiling (default: false)" << std::endl;
118+ std::cerr << " --offload-to-cpu Offload parameters to CPU (default: false)" << std::endl;
119+ std::cerr << " --diffusion-fa Enable diffusion flash attention (default: false)" << std::endl;
112120}
113121
114122CommandLineArgs parse_args (int argc, char * argv[]) {
@@ -155,6 +163,14 @@ CommandLineArgs parse_args(int argc, char* argv[]) {
155163 args.controlnet_dir = argv[++i];
156164 } else if (arg == " --text-encoder-dir" && i + 1 < argc) {
157165 args.text_encoder_dir = argv[++i];
166+ } else if (arg == " --vae-on-cpu" ) {
167+ args.vae_on_cpu = true ;
168+ } else if (arg == " --vae-tiling" ) {
169+ args.vae_tiling = true ;
170+ } else if (arg == " --offload-to-cpu" ) {
171+ args.offload_to_cpu = true ;
172+ } else if (arg == " --diffusion-fa" ) {
173+ args.diffusion_fa = true ;
158174 } else if (arg == " --help" || arg == " -h" ) {
159175 print_usage (argv[0 ]);
160176 exit (0 );
@@ -225,8 +241,17 @@ int main(int argc, char* argv[]) {
225241 }
226242
227243 try {
244+ // Create server parameters
245+ ServerParams server_params;
246+ server_params.port = args.port ;
247+ server_params.model_manager = model_manager;
248+ server_params.vae_on_cpu = args.vae_on_cpu ;
249+ server_params.vae_tiling = args.vae_tiling ;
250+ server_params.offload_to_cpu = args.offload_to_cpu ;
251+ server_params.diffusion_fa = args.diffusion_fa ;
252+
228253 // Create and start the server
229- g_server = std::make_unique<Server>(args. port , model_manager );
254+ g_server = std::make_unique<Server>(server_params );
230255 g_server->run ();
231256 } catch (const std::exception& e) {
232257 std::cerr << " Server error: " << e.what () << std::endl;
0 commit comments