parser.add_argument("--update-all-extensions",action='store_true',help="launch.py argument: download updates for all extensions when starting the program")
parser.add_argument("--skip-python-version-check",action='store_true',help="launch.py argument: do not check python version")
parser.add_argument("--skip-torch-cuda-test",action='store_true',help="launch.py argument: do not check if CUDA is able to work properly")
parser.add_argument("--reinstall-xformers",action='store_true',help="launch.py argument: install the appropriate version of xformers even if you have some version already installed")
parser.add_argument("--reinstall-torch",action='store_true',help="launch.py argument: install the appropriate version of torch even if you have some version already installed")
parser.add_argument("--skip-install",action='store_true',help="launch.py argument: skip installation of packages")
parser.add_argument("--data-dir",type=str,default=os.path.dirname(os.path.dirname(os.path.realpath(__file__))),help="base path where all user data is stored")
parser.add_argument("--ckpt",type=str,default=sd_model_file,help="path to checkpoint of stable diffusion model; if specified, this checkpoint will be added to the list of checkpoints and loaded",)
parser.add_argument("--no-progressbar-hiding",action='store_true',help="do not hide progressbar in gradio UI (we hide it because it slows down ML if you have hardware acceleration in browser)")
parser.add_argument("--textual-inversion-templates-dir",type=str,default=os.path.join(script_path,'textual_inversion_templates'),help="directory with textual inversion templates")
parser.add_argument("--medvram",action='store_true',help="enable stable diffusion model optimizations for sacrificing a little speed for low VRM usage")
parser.add_argument("--lowvram",action='store_true',help="enable stable diffusion model optimizations for sacrificing a lot of speed for very low VRM usage")
parser.add_argument("--always-batch-cond-uncond",action='store_true',help="disables cond/uncond batching that is enabled to save memory with --medvram or --lowvram")
parser.add_argument("--upcast-sampling",action='store_true',help="upcast sampling. No effect with --no-half. Usually produces similar results to --no-half with better performance while using less memory.")
parser.add_argument("--ngrok-options",type=json.loads,help='The options to pass to ngrok in JSON format, e.g.: \'{"authtoken_from_env":true, "basic_auth":"user:password", "oauth_provider":"google", "oauth_allow_emails":"user@asdf.com"}\'',default=dict())
parser.add_argument("--codeformer-models-path",type=str,help="Path to directory with codeformer model file(s).",default=os.path.join(models_path,'Codeformer'))
parser.add_argument("--gfpgan-models-path",type=str,help="Path to directory with GFPGAN model file(s).",default=os.path.join(models_path,'GFPGAN'))
parser.add_argument("--esrgan-models-path",type=str,help="Path to directory with ESRGAN model file(s).",default=os.path.join(models_path,'ESRGAN'))
parser.add_argument("--bsrgan-models-path",type=str,help="Path to directory with BSRGAN model file(s).",default=os.path.join(models_path,'BSRGAN'))
parser.add_argument("--realesrgan-models-path",type=str,help="Path to directory with RealESRGAN model file(s).",default=os.path.join(models_path,'RealESRGAN'))
parser.add_argument("--force-enable-xformers",action='store_true',help="enable xformers for cross attention layers regardless of whether the checking code thinks you can run it; do not make bug reports if this fails to work")
parser.add_argument("--xformers-flash-attention",action='store_true',help="enable xformers with Flash Attention to improve reproducibility (supported for SD2.x or variant only)")
parser.add_argument("--opt-split-attention",action='store_true',help="prefer Doggettx's cross-attention layer optimization for automatic choice of optimization")
parser.add_argument("--opt-sub-quad-attention",action='store_true',help="prefer memory efficient sub-quadratic cross-attention layer optimization for automatic choice of optimization")
parser.add_argument("--sub-quad-q-chunk-size",type=int,help="query chunk size for the sub-quadratic cross-attention layer optimization to use",default=1024)
parser.add_argument("--sub-quad-kv-chunk-size",type=int,help="kv chunk size for the sub-quadratic cross-attention layer optimization to use",default=None)
parser.add_argument("--sub-quad-chunk-threshold",type=int,help="the percentage of VRAM threshold for the sub-quadratic cross-attention layer optimization to use chunking",default=None)
parser.add_argument("--opt-split-attention-invokeai",action='store_true',help="prefer InvokeAI's cross-attention layer optimization for automatic choice of optimization")
parser.add_argument("--opt-split-attention-v1",action='store_true',help="prefer older version of split attention optimization for automatic choice of optimization")
parser.add_argument("--opt-sdp-attention",action='store_true',help="prefer scaled dot product cross-attention layer optimization for automatic choice of optimization; requires PyTorch 2.*")
parser.add_argument("--opt-sdp-no-mem-attention",action='store_true',help="prefer scaled dot product cross-attention layer optimization without memory efficient attention for automatic choice of optimization, makes image generation deterministic; requires PyTorch 2.*")
parser.add_argument("--disable-opt-split-attention",action='store_true',help="prefer no cross-attention layer optimization for automatic choice of optimization")
parser.add_argument("--disable-nan-check",action='store_true',help="do not check if produced images/latent spaces have nans; useful for running without a checkpoint in CI")
parser.add_argument("--port",type=int,help="launch gradio with given server port, you need root/admin rights for ports < 1024, defaults to 7860 if available",default=None)
parser.add_argument("--gradio-auth",type=str,help='set gradio authentication like "username:password"; or comma-delimit multiple like "u1:p1,u2:p2,u3:p3"',default=None)
parser.add_argument("--gradio-auth-path",type=str,help='set gradio authentication file path ex. "/path/to/auth/file" same auth format as --gradio-auth',default=None)
parser.add_argument("--use-textbox-seed",action='store_true',help="use textbox for seeds in UI (no up/down, but possible to input long seeds)",default=False)
parser.add_argument("--disable-console-progressbars",action='store_true',help="do not output progressbars to console",default=False)
parser.add_argument("--enable-console-prompts",action='store_true',help="print prompts to console when generating with txt2img and img2img",default=False)
parser.add_argument("--api",action='store_true',help="use api=True to launch the API together with the webui (use --nowebui instead for only the API)")
parser.add_argument("--api-auth",type=str,help='Set authentication for API like "username:password"; or comma-delimit multiple like "u1:p1,u2:p2,u3:p3"',default=None)
parser.add_argument("--device-id",type=str,help="Select the default CUDA device to use (export CUDA_VISIBLE_DEVICES=0,1,etc might be needed before)",default=None)
parser.add_argument("--gradio-queue",action='store_true',help="does not do anything",default=True)
parser.add_argument("--no-gradio-queue",action='store_true',help="Disables gradio queue; causes the webpage to use http requests instead of websockets; was the defaul in earlier versions")
parser.add_argument("--no-download-sd-model",action='store_true',help="don't download SD1.5 model even if no model is found in --ckpt-dir",default=False)