def main(): try: print(''' ▄▄▄▓▓▓▓ ╓▓▓▓▓▓▓█▓▓▓▓▓ ,▄▄▄m▀▀▀' ,▓▓▓▀▓▓▄ ▓▓▓ ▓▓▌ ▄▓▓▓▀' ▄▓▓▀ ▓▓▓ ▄▄ ▄▄ ,▄▄ ▄▄▄▄ ,▄▄ ▄▓▓▌▄ ▄▄▄ ,▄▄ ▄▓▓▓▀ ▄▓▓▀ ▐▓▓▌ ▓▓▌ ▐▓▓ ▐▓▓▓▀▀▀▓▓▌ ▓▓▓ ▀▓▓▌▀ ^▓▓▌ ╒▓▓▌ ▄▓▓▓▓▓▄▄▄▄▄▄▄▄▓▓▓ ▓▀ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▄ ▓▓▌ ▀▓▓▓▓▀▀▀▀▀▀▀▀▀▀▓▓▄ ▓▓ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▐▓▓ ^█▓▓▓ ▀▓▓▄ ▐▓▓▌ ▓▓▓▓▄▓▓▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▓▄ ▓▓▓▓` '▀▓▓▓▄ ^▓▓▓ ▓▓▓ └▀▀▀▀ ▀▀ ^▀▀ `▀▀ `▀▀ '▀▀ ▐▓▓▌ ▀▀▀▀▓▄▄▄ ▓▓▓▓▓▓, ▓▓▓▓▀ `▀█▓▓▓▓▓▓▓▓▓▌ ¬`▀▀▀█▓ ''') except: print('\n\n\tUnity Technologies\n') logger = logging.getLogger('mlagents.trainers') _USAGE = ''' Usage: mlagents-learn <trainer-config-path> [options] mlagents-learn --help Options: --env=<file> Name of the Unity executable [default: None]. --curriculum=<directory> Curriculum json directory for environment [default: None]. --keep-checkpoints=<n> How many model checkpoints to keep [default: 5]. --lesson=<n> Start learning from this lesson [default: 0]. --load Whether to load the model or randomly initialize [default: False]. --run-id=<path> The directory name for model and summary statistics [default: ppo]. --num-runs=<n> Number of concurrent training sessions [default: 1]. --save-freq=<n> Frequency at which to save model [default: 50000]. --seed=<n> Random seed used for training [default: -1]. --slow Whether to run the game at training speed [default: False]. --train Whether to train model, or only run inference [default: False]. --worker-id=<n> Number to add to communication port (5005) [default: 0]. --docker-target-name=<dt> Docker volume to store training-specific files [default: None]. --no-graphics Whether to run the environment in no-graphics mode [default: False]. ''' options = docopt(_USAGE) logger.info(options) num_runs = int(options['--num-runs']) seed = int(options['--seed']) if options['--env'] == 'None' and num_runs > 1: raise TrainerError( 'It is not possible to launch more than one concurrent training session ' 'when training from the editor.') jobs = [] run_seed = seed # options['--env'] = None # options[] run_training(1, run_seed, options, None)
def load_state(path: str) -> None: """ Load a JSON file that contains saved state. :param path: Path to the JSON file containing the state. """ try: with open(path) as f: loaded_dict = json.load(f) # Compare the metadata _metadata = loaded_dict[StatusType.STATS_METADATA.value] StatusMetaData.from_dict(_metadata).check_compatibility(StatusMetaData()) # Update saved state. GlobalTrainingStatus.saved_state.update(loaded_dict) except FileNotFoundError: logger.warning( "Training status file not found. Not all functions will resume properly." ) except KeyError: raise TrainerError( "Metadata not found, resuming from an incompatible version of ML-Agents." )
def main(): try: print(""" ▄▄▄▓▓▓▓ ╓▓▓▓▓▓▓█▓▓▓▓▓ ,▄▄▄m▀▀▀' ,▓▓▓▀▓▓▄ ▓▓▓ ▓▓▌ ▄▓▓▓▀' ▄▓▓▀ ▓▓▓ ▄▄ ▄▄ ,▄▄ ▄▄▄▄ ,▄▄ ▄▓▓▌▄ ▄▄▄ ,▄▄ ▄▓▓▓▀ ▄▓▓▀ ▐▓▓▌ ▓▓▌ ▐▓▓ ▐▓▓▓▀▀▀▓▓▌ ▓▓▓ ▀▓▓▌▀ ^▓▓▌ ╒▓▓▌ ▄▓▓▓▓▓▄▄▄▄▄▄▄▄▓▓▓ ▓▀ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▄ ▓▓▌ ▀▓▓▓▓▀▀▀▀▀▀▀▀▀▀▓▓▄ ▓▓ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▐▓▓ ^█▓▓▓ ▀▓▓▄ ▐▓▓▌ ▓▓▓▓▄▓▓▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▓▄ ▓▓▓▓` '▀▓▓▓▄ ^▓▓▓ ▓▓▓ └▀▀▀▀ ▀▀ ^▀▀ `▀▀ `▀▀ '▀▀ ▐▓▓▌ ▀▀▀▀▓▄▄▄ ▓▓▓▓▓▓, ▓▓▓▓▀ `▀█▓▓▓▓▓▓▓▓▓▌ ¬`▀▀▀█▓ """) except Exception: print("\n\n\tUnity Technologies\n") _USAGE = """ Usage: mlagents-learn <trainer-config-path> [options] mlagents-learn --help Options: --env=<file> Name of the Unity executable [default: None]. --curriculum=<directory> Curriculum json directory for environment [default: None]. --sampler=<file> Reset parameter yaml file for environment [default: None]. --keep-checkpoints=<n> How many model checkpoints to keep [default: 5]. --lesson=<n> Start learning from this lesson [default: 0]. --load Whether to load the model or randomly initialize [default: False]. --run-id=<path> The directory name for model and summary statistics [default: ppo]. --num-runs=<n> Number of concurrent training sessions [default: 1]. --save-freq=<n> Frequency at which to save model [default: 50000]. --seed=<n> Random seed used for training [default: -1]. --slow Whether to run the game at training speed [default: False]. --train Whether to train model, or only run inference [default: False]. --base-port=<n> Base port for environment communication [default: 5005]. --num-envs=<n> Number of parallel environments to use for training [default: 1] --docker-target-name=<dt> Docker volume to store training-specific files [default: None]. --no-graphics Whether to run the environment in no-graphics mode [default: False]. --debug Whether to run ML-Agents in debug mode with detailed logging [default: False]. --spawn-env=<name> Inform environment which SpawnableEnv to use (if supported) [default: None]. --num-spawn-envs=<n> Inform environment how many SpawnableEnv to create (if supported) [default: None]. """ options = docopt(_USAGE) trainer_logger = logging.getLogger("mlagents.trainers") env_logger = logging.getLogger("mlagents.envs") trainer_logger.info(options) if options["--debug"]: trainer_logger.setLevel("DEBUG") env_logger.setLevel("DEBUG") num_runs = int(options["--num-runs"]) seed = int(options["--seed"]) if options["--env"] == "None" and num_runs > 1: raise TrainerError( "It is not possible to launch more than one concurrent training session " "when training from the editor.") jobs = [] run_seed = seed if num_runs == 1: if seed == -1: run_seed = np.random.randint(0, 10000) run_training(0, run_seed, options, Queue()) else: for i in range(num_runs): if seed == -1: run_seed = np.random.randint(0, 10000) process_queue = Queue() p = Process(target=run_training, args=(i, run_seed, options, process_queue)) jobs.append(p) p.start() # Wait for signal that environment has successfully launched while process_queue.get() is not True: continue # Wait for jobs to complete. Otherwise we'll have an extra # unhandled KeyboardInterrupt if we end early. try: for job in jobs: job.join() except KeyboardInterrupt: pass
def main(): try: print( """ ▄▄▄▓▓▓▓ ╓▓▓▓▓▓▓█▓▓▓▓▓ ,▄▄▄m▀▀▀' ,▓▓▓▀▓▓▄ ▓▓▓ ▓▓▌ ▄▓▓▓▀' ▄▓▓▀ ▓▓▓ ▄▄ ▄▄ ,▄▄ ▄▄▄▄ ,▄▄ ▄▓▓▌▄ ▄▄▄ ,▄▄ ▄▓▓▓▀ ▄▓▓▀ ▐▓▓▌ ▓▓▌ ▐▓▓ ▐▓▓▓▀▀▀▓▓▌ ▓▓▓ ▀▓▓▌▀ ^▓▓▌ ╒▓▓▌ ▄▓▓▓▓▓▄▄▄▄▄▄▄▄▓▓▓ ▓▀ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▄ ▓▓▌ ▀▓▓▓▓▀▀▀▀▀▀▀▀▀▀▓▓▄ ▓▓ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▐▓▓ ^█▓▓▓ ▀▓▓▄ ▐▓▓▌ ▓▓▓▓▄▓▓▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▓▄ ▓▓▓▓` '▀▓▓▓▄ ^▓▓▓ ▓▓▓ └▀▀▀▀ ▀▀ ^▀▀ `▀▀ `▀▀ '▀▀ ▐▓▓▌ ▀▀▀▀▓▄▄▄ ▓▓▓▓▓▓, ▓▓▓▓▀ `▀█▓▓▓▓▓▓▓▓▓▌ ¬`▀▀▀█▓ """ ) except Exception: print("\n\n\tUnity Technologies\n") print(get_version_string()) options = parse_command_line() trainer_logger = logging.getLogger("mlagents.trainers") env_logger = logging.getLogger("mlagents.envs") trainer_logger.info(options) if options.debug: trainer_logger.setLevel("DEBUG") env_logger.setLevel("DEBUG") else: # disable noisy warnings from tensorflow. tf_utils.set_warnings_enabled(False) if options.env_path is None and options.num_runs > 1: raise TrainerError( "It is not possible to launch more than one concurrent training session " "when training from the editor." ) jobs = [] run_seed = options.seed if options.cpu: os.environ["CUDA_VISIBLE_DEVICES"] = "-1" if options.num_runs == 1: if options.seed == -1: run_seed = np.random.randint(0, 10000) run_training(0, run_seed, options, Queue()) else: for i in range(options.num_runs): if options.seed == -1: run_seed = np.random.randint(0, 10000) process_queue = Queue() p = Process(target=run_training, args=(i, run_seed, options, process_queue)) jobs.append(p) p.start() # Wait for signal that environment has successfully launched while process_queue.get() is not True: continue # Wait for jobs to complete. Otherwise we'll have an extra # unhandled KeyboardInterrupt if we end early. try: for job in jobs: job.join() except KeyboardInterrupt: pass
def main(): try: print(""" __/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\____/\\\\\\\\\\\\\\\\\\_________/\\\\\\\\\\\\\\\\\\_____/\\\\\\\\\\\\\\\\\\\\\\__/\\\\\\\\\\_____/\\\\\\_____/\\\\\\____ _\\///////\\\\\\/////___/\\\\\\///////\\\\\\_____/\\\\\\\\\\\\\\\\\\\\\\\\\\__\\/////\\\\\\///__\\/\\\\\\\\\\\\___\\/\\\\\\___/\\\\\\\\\\\\\\__ _______\\/\\\\\\_______\\/\\\\\\_____\\/\\\\\\____/\\\\\\/////////\\\\\\_____\\/\\\\\\_____\\/\\\\\\/\\\\\\__\\/\\\\\\__/\\\\\\\\\\\\\\\\\\_ _______\\/\\\\\\_______\\/\\\\\\\\\\\\\\\\\\\\\\/____\\/\\\\\\_______\\/\\\\\\_____\\/\\\\\\_____\\/\\\\\\//\\\\\\_\\/\\\\\\_\\//\\\\\\\\\\\\\\__ _______\\/\\\\\\_______\\/\\\\\\//////\\\\\\____\\/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\_____\\/\\\\\\_____\\/\\\\\\\\//\\\\\\\\/\\\\\\__\\//\\\\\\\\\\___ _______\\/\\\\\\_______\\/\\\\\\____\\//\\\\\\___\\/\\\\\\/////////\\\\\\_____\\/\\\\\\_____\\/\\\\\\_\\//\\\\\\/\\\\\\___\\//\\\\\\____ _______\\/\\\\\\_______\\/\\\\\\_____\\//\\\\\\__\\/\\\\\\_______\\/\\\\\\_____\\/\\\\\\_____\\/\\\\\\__\\//\\\\\\\\\\\\____\\///_____ _______\\/\\\\\\_______\\/\\\\\\______\\//\\\\\\_\\/\\\\\\_______\\/\\\\\\__/\\\\\\\\\\\\\\\\\\\\\\_\\/\\\\\\___\\//\\\\\\\\\\_____/\\\\\\____ _______\\///________\\///________\\///__\\///________\\///__\\///////////__\\///_____\\/////_____\\///_____ """) except Exception: print("\n\n\tUnity Technologies\n") options = parse_command_line() trainer_logger = logging.getLogger("mlagents.trainers") env_logger = logging.getLogger("mlagents.envs") trainer_logger.info(options) if options.debug: trainer_logger.setLevel("DEBUG") env_logger.setLevel("DEBUG") if options.env_path is None and options.num_runs > 1: raise TrainerError( "It is not possible to launch more than one concurrent training session " "when training from the editor.") jobs = [] run_seed = options.seed if options.num_runs == 1: if options.seed == -1: run_seed = np.random.randint(0, 10000) run_training(0, run_seed, options, Queue()) else: for i in range(options.num_runs): if options.seed == -1: run_seed = np.random.randint(0, 10000) process_queue = Queue() p = Process(target=run_training, args=(i, run_seed, options, process_queue)) jobs.append(p) p.start() # Wait for signal that environment has successfully launched while process_queue.get() is not True: continue # Wait for jobs to complete. Otherwise we'll have an extra # unhandled KeyboardInterrupt if we end early. try: for job in jobs: job.join() except KeyboardInterrupt: pass
def main(): try: print(''' ▄▄▄▓▓▓▓ ╓▓▓▓▓▓▓█▓▓▓▓▓ ,▄▄▄m▀▀▀' ,▓▓▓▀▓▓▄ ▓▓▓ ▓▓▌ ▄▓▓▓▀' ▄▓▓▀ ▓▓▓ ▄▄ ▄▄ ,▄▄ ▄▄▄▄ ,▄▄ ▄▓▓▌▄ ▄▄▄ ,▄▄ ▄▓▓▓▀ ▄▓▓▀ ▐▓▓▌ ▓▓▌ ▐▓▓ ▐▓▓▓▀▀▀▓▓▌ ▓▓▓ ▀▓▓▌▀ ^▓▓▌ ╒▓▓▌ ▄▓▓▓▓▓▄▄▄▄▄▄▄▄▓▓▓ ▓▀ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▄ ▓▓▌ ▀▓▓▓▓▀▀▀▀▀▀▀▀▀▀▓▓▄ ▓▓ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▐▓▓ ^█▓▓▓ ▀▓▓▄ ▐▓▓▌ ▓▓▓▓▄▓▓▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▓▄ ▓▓▓▓` '▀▓▓▓▄ ^▓▓▓ ▓▓▓ └▀▀▀▀ ▀▀ ^▀▀ `▀▀ `▀▀ '▀▀ ▐▓▓▌ ▀▀▀▀▓▄▄▄ ▓▓▓▓▓▓, ▓▓▓▓▀ `▀█▓▓▓▓▓▓▓▓▓▌ ¬`▀▀▀█▓ ''') except: print('\n\n\tUnity Technologies\n') _USAGE = ''' Usage: mlagents-learn <trainer-config-path> [options] mlagents-learn --help Options: --env=<file> Name of the Unity executable [default: None]. --curriculum=<directory> Curriculum json directory for environment [default: None]. --keep-checkpoints=<n> How many model checkpoints to keep [default: 5]. --lesson=<n> Start learning from this lesson [default: 0]. --load Whether to load the model or randomly initialize [default: False]. --run-id=<path> The directory name for model and summary statistics [default: ppo]. --num-runs=<n> Number of concurrent training sessions [default: 1]. --save-freq=<n> Frequency at which to save model [default: 50000]. --seed=<n> Random seed used for training [default: -1]. --slow Whether to run the game at training speed [default: False]. --train Whether to train model, or only run inference [default: False]. --base-port=<n> Base port for environment communication [default: 5005]. --num-envs=<n> Number of parallel environments to use for training [default: 1] --docker-target-name=<dt> Docker volume to store training-specific files [default: None]. --no-graphics Whether to run the environment in no-graphics mode [default: False]. --debug Whether to run ML-Agents in debug mode with detailed logging [default: False]. ''' print("here") #options = docopt(_USAGE) options = {} print("options") options['--curriculum'] = None options['--keep-checkpoints'] = 5 options['--load'] = False options['--lesson'] = 0 options['--save-freq'] = 50000 options['--base-port'] = 5005 options['--num-envs'] = 1 options['--num-runs'] = 1 options['--seed'] = -1 options['--slow'] = False options['--docker-target-name'] = None options['--no-graphics'] = False options['--debug'] = False options[ '<trainer-config-path>'] = 'C:/HinaProgramm/ml-agents/config/trainer_config.yaml' options['--env'] = 'C:/HinaProgramm/3DBall' options['--run-id'] = 'firstrun' options['--train'] = True for key in options.keys(): print(key) print(options[key]) # Logger function keep track of events thst occur when an software run trainer_logger = logging.getLogger('mlagents.trainers') env_logger = logging.getLogger('mlagents.envs') trainer_logger.info(options) if options['--debug']: trainer_logger.setLevel('DEBUG') env_logger.setLevel('DEBUG') num_runs = int(options['--num-runs']) seed = int(options['--seed']) if options['--env'] == 'None' and num_runs > 1: raise TrainerError( 'It is not possible to launch more than one concurrent training session ' 'when training from the editor.') # jobs are simply list jobs = [] run_seed = seed if num_runs == 1: if seed == -1: run_seed = np.random.randint(0, 10000) print(options) run_training(0, run_seed, options, Queue()) else: for i in range(num_runs): if seed == -1: run_seed = np.random.randint(0, 10000) process_queue = Queue() p = Process(target=run_training, args=(i, run_seed, options, process_queue)) jobs.append(p) p.start() # Wait for signal that environment has successfully launched while process_queue.get() is not True: continue # Wait for jobs to complete. Otherwise we'll have an extra # unhandled KeyboardInterrupt if we end early. try: for job in jobs: job.join() except KeyboardInterrupt: pass