          argument_list.append({"opts": ("-sp", "--singleprocess"),
                                "action": "store_true",
                                "default": False,
                                "help": "Don't run extraction in parallel. Will run detection first "
                                        "then alignment (2 passes). Useful if VRAM is at a "
                                        "premium."})
          argument_list.append({"opts": ("-sz", "--size"),
 
</s> remove                                       "then alignment (2 passes). Useful if VRAM is at a premium. "
                                      "Only has an effect if both the aligner and detector use "
                                      "the GPU, otherwise this is automatically off. NB: AMD "
                                      "cards do not support parallel processing, so if both "
                                      "aligner and detector use an AMD GPU this will "
                                      "automatically be enabled."})
 </s> add                                       "then alignment (2 passes). Useful if VRAM is at a "
                                      "premium."}) </s> remove                               "help": "[Nvidia only] To save VRAM some optimizer gradient "
                                      "calculations can be performed on the CPU rather than the "
                                      "GPU. This allows you to increase batchsize at a training "
                                      "speed/system RAM cost."})
 </s> add                               "backend": "nvidia",
                              "help": "To save VRAM some optimizer gradient calculations can be "
                                      "performed on the CPU rather than the GPU. This allows you "
                                      "to increase batchsize at a training speed/system RAM "
                                      "cost."}) </s> remove                               "help": "[Nvidia only] Enable ping pong training. Trains one side "
                                      "at a time, switching sides at each save iteration. "
                                      "Training will take 2 to 4 times longer, with about a "
                                      "30%%-50%% reduction in VRAM useage. NB: Preview won't show "
                                      "until both sides have been trained once."})
 </s> add                               "backend": "nvidia",
                              "help": "Enable ping pong training. Trains one side at a time, "
                                      "switching sides at each save iteration. Training will "
                                      "take 2 to 4 times longer, with about a 30%%-50%% reduction "
                                      "in VRAM useage. NB: Preview won't show until both sides "
                                      "have been trained once."}) </s> remove                               "help": "[Nvidia only] Trades off VRAM usage against computation "
                                      "time. Can fit larger models into memory at a cost of "
                                      "slower training speed. 50%%-150%% batch size increase for "
                                      "20%%-50%% longer training time. NB: Launch time will be "
                                      "significantly delayed. Switching sides using ping-pong "
                                      "training will take longer."})
 </s> add                               "backend": "nvidia",
                              "help": "Trades off VRAM usage against computation time. Can fit "
                                      "larger models into memory at a cost of slower training "
                                      "speed. 50%%-150%% batch size increase for 20%%-50%% longer "
                                      "training time. NB: Launch time will be significantly "
                                      "delayed. Switching sides using ping-pong training will "
                                      "take longer."}) </s> remove             "default": "fan",
            "help": "R|Aligner to use. NB: Unless stated, all aligners will run on CPU for AMD "
                    "GPUs."
 </s> add             "default": default_aligner,
            "help": "R|Aligner to use."
                              "backend": "nvidia",
          argument_list.append({"opts": ("-sp", "--singleprocess"),
                                "action": "store_true",
                                "default": False,
                              "backend": "nvidia",
                                "help": "Don't run extraction in parallel. Will run detection first "
                                        "then alignment (2 passes). Useful if VRAM is at a "
                                        "premium."})
          argument_list.append({"opts": ("-sz", "--size"),
keep keep add keep keep keep keep
 More seamless AMD Integration

- utils.py: Set FS backend if .faceswap config file doesn't exist
- setup.py: set .faceswap config on setup
- Dynamically load options for AMD/CPU/NVIDIA backends 
lib/cli.py