Skip to main content

A benchmark platform for Evolutionary Neural Architecture Search

Project description

The codes have been tested on Python 3.6 + pytorch 1.1 + torchvision 0.3.0 (pytorch 1.3 seems also ok, but not test thoroughly)

BenchENAS is a platform to help researchers conduct fair comparisons upon Evolutionary algorithm based Neural Architecture Search (ENAS) algorithms. BenchENAS currently has the following features (more are still in process, and welcome join us to contribute BenchENAS):

  • Nine representative state-of-the-art ENAS algorithms have been implemented into BenchENAS. They can be easily performed with customized benchmark datasets (including popular preprocessing techniques) and training algorithms (such as learning rate, optimizers, etc).

  • A GPU distributed training component is designed in BenchENAS to accelerate fitness evaluation. This component is specifically developed for common research environments where not many GPUs are specifically prepared.

  • BenchENAS is implemented by native Python with very few third-party libraries for easy installation. All components in BenchENAS can be easily configured with different data settings and different trainer settings.

  • BenchENAS is modular designed for easy extensibility. Researchers can easily implement their ENAS algorithms into BenchENAS, while directly using the implemented datasets, training algorithms (can also add their own datasets and training algorithms into BenchENAS), and distributed training components.

A research paper comprehensively introducing BenchENAS is available at: https://ieeexplore.ieee.org/document/9697075.

Requirements:

Center Computer:

  • redis (ubuntu software, start using the command redis-server --protected-mode on)
  • sshpass (python lib)
  • paramiko (python lib)

Conter Computer & workers:

  • multiprocess (python lib)
  • redis (python lib)

Running

Here's a quick run down of the main steps of running BenchENAS. For more details see our Documentation and Example.

  1. Start the redis-server on the center computer
$ ./redis-server   redis.conf
  1. Initialize configuration of the algorithm and training parameters
alg_list = {'algorithm': 'aecnn', 'max_gen': 20, 'pop_size': 20,
            'log_server': 'xx.xx.xx.xx', 'log_server_port': 6379,
            'exe_path': '/home/xxx/anaconda3/bin/python3'}

# dataset_list = ['MNIST', 'CIFAR10', 'CIFAR100']
# if dataset not in dataset_list, load customized dataset(data_dir)
train_list = {'dataset': 'CIFAR10', 'data_dir': '/home/xiaoyang/eye_dataset', 
              'img_input_size': [244, 244, 3],'optimizer': 'SGD', 'lr': 0.025,
              'batch_size': 64, 'total_epoch': 50, 'lr_strategy': 'ExponentialLR'}

gpu_info_list = {}
content = {'worker_ip': 'xx.xx.xx.xx', 'worker_name': 'cuda0', 'ssh_name': 'xxx',
           'ssh_password': '.123456', 'gpu': [1, 2]}
gpu_info_list['xx.xx.xx.xx'] = content
  1. Start the init_compute.py script to start the compute platform and detect free GPU devices
from benchenas import init_compute

init_compute.run(alg_list, train_list, gpu_info_list)
  1. Start the algorithm you would like to perform
from benchenas import main

main.run(alg_list, train_list, gpu_info_list)

How to use

  • Start the redis-server on the center computer (redis-server --protected-mode no)
  • Start the init_compute.py script to start the compute platform with parameter[run(alg_list, train_list, gpu_info_list)]
  • Start the algorithm you would like to perform with parameter[run(alg_list, train_list, gpu_info_list, search_space)] search_space default 'micro'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

benchENAS-1.2.0.tar.gz (146.5 kB view details)

Uploaded Source

Built Distribution

benchENAS-1.2.0-py3-none-any.whl (196.0 kB view details)

Uploaded Python 3

File details

Details for the file benchENAS-1.2.0.tar.gz.

File metadata

  • Download URL: benchENAS-1.2.0.tar.gz
  • Upload date:
  • Size: 146.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.1 readme-renderer/30.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.4 tqdm/4.62.3 importlib-metadata/4.8.2 keyring/23.4.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.8.8

File hashes

Hashes for benchENAS-1.2.0.tar.gz
Algorithm Hash digest
SHA256 eb359beb8d5b89b5428f72de126bc375add7ee8c4ed92dbad34cd33bebee7eaa
MD5 78cba432f95efe87a49f30a731ae9084
BLAKE2b-256 a7fdc393f59c25e0d36f821198de671c624553504c72ddf4bda363eb6b4ae4b9

See more details on using hashes here.

File details

Details for the file benchENAS-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: benchENAS-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 196.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.1 readme-renderer/30.0 requests/2.25.1 requests-toolbelt/0.9.1 urllib3/1.26.4 tqdm/4.62.3 importlib-metadata/4.8.2 keyring/23.4.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.8.8

File hashes

Hashes for benchENAS-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b57603b3a81d7804b2b2fcd8b20f59de616254a185882544dd45c70aff09258d
MD5 3b0b1dcfb0af1f50007a8445b4e14c64
BLAKE2b-256 efeca9e34b67fcccb7df50c445c392dfcccad2e1d8a94629abd2603973520d13

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page