          argument_list.append({"opts": ("-msg", "--memory-saving-gradients"),
                                "action": "store_true",
                                "dest": "memory_saving_gradients",
                                "default": False,
                                "help": "Trades off VRAM useage 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         argument_list.append({"opts": ("-pp", "--ping-pong"),
                              "action": "store_true",
                              "dest": "pingpong",
                              "default": False,
                              "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> add  </s> remove                    "\n3) Try Memory Saving Gradients and/or Ping Pong Training."
 </s> add                    "\n3) Try 'Memory Saving Gradients' and/or 'Optimizer Savings' and/or 'Ping "
                   "Pong Training'."
                              "help": "Trades off VRAM usage against computation time. Can fit "
          argument_list.append({"opts": ("-msg", "--memory-saving-gradients"),
                                "action": "store_true",
                                "dest": "memory_saving_gradients",
                                "default": False,
                              "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."})
keep keep keep keep replace keep keep keep keep keep
 Training improvements

Add Optimizer Savings option to offload some optimizer calculations to the CPU
Add output_shape to NNMeta class for referencing when building models 
lib/cli.py