All Projects → AnnaAraslanova → Fbnet

AnnaAraslanova / Fbnet

reproduction of the article

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Fbnet

30daymakeos
《30天自制操作系统》源码中文版。自己制作一个操作系统(OSASK)的过程
Stars: ✭ 4,127 (+3757.01%)
Mutual labels:  nas
Lizardfs
LizardFS is an Open Source Distributed File System licensed under GPLv3.
Stars: ✭ 793 (+641.12%)
Mutual labels:  nas
Once For All
[ICLR 2020] Once for All: Train One Network and Specialize it for Efficient Deployment
Stars: ✭ 1,127 (+953.27%)
Mutual labels:  nas
Lanraragi
Web application for archival and reading of manga/doujinshi. Lightweight and Docker-ready for NAS/servers.
Stars: ✭ 450 (+320.56%)
Mutual labels:  nas
Awesome Automl And Lightweight Models
A list of high-quality (newest) AutoML works and lightweight models including 1.) Neural Architecture Search, 2.) Lightweight Structures, 3.) Model Compression, Quantization and Acceleration, 4.) Hyperparameter Optimization, 5.) Automated Feature Engineering.
Stars: ✭ 691 (+545.79%)
Mutual labels:  nas
Charjabox
Ansible based Homeserver setup using Docker
Stars: ✭ 28 (-73.83%)
Mutual labels:  nas
Config
Armbian configuration utility
Stars: ✭ 317 (+196.26%)
Mutual labels:  nas
Ansible Nas
Build a full-featured home server or NAS replacement with an Ubuntu box and this playbook.
Stars: ✭ 1,198 (+1019.63%)
Mutual labels:  nas
Rsyncosx
A macOS GUI for rsync
Stars: ✭ 780 (+628.97%)
Mutual labels:  nas
Shape Adaptor
The implementation of "Shape Adaptor: A Learnable Resizing Module" [ECCV 2020].
Stars: ✭ 59 (-44.86%)
Mutual labels:  nas
Nas Bench 201
NAS-Bench-201 API and Instruction
Stars: ✭ 537 (+401.87%)
Mutual labels:  nas
Paddleslim
PaddleSlim is an open-source library for deep model compression and architecture search.
Stars: ✭ 677 (+532.71%)
Mutual labels:  nas
Moviemagnetbot
🤖 telegram bot for movies
Stars: ✭ 39 (-63.55%)
Mutual labels:  nas
Home Network Note
🚧 Under Construction 🚧 记录搭建家用兼顾学习和娱乐网络环境的一些事情,以及折腾过的一些硬件的小经验。
Stars: ✭ 369 (+244.86%)
Mutual labels:  nas
Autodl Projects
Automated deep learning algorithms implemented in PyTorch.
Stars: ✭ 1,187 (+1009.35%)
Mutual labels:  nas
Bicbucstriim
BicBucStriim streams books, digital books. It fills a gap in the functionality of current NAS devices that provide access to music, videos and photos -- but not books. BicBucStriim fills this gap and provides web-based access to your e-book collection.
Stars: ✭ 336 (+214.02%)
Mutual labels:  nas
Autodl
Automated Deep Learning without ANY human intervention. 1'st Solution for AutoDL [email protected]
Stars: ✭ 854 (+698.13%)
Mutual labels:  nas
Nni
An open source AutoML toolkit for automate machine learning lifecycle, including feature engineering, neural architecture search, model compression and hyper-parameter tuning.
Stars: ✭ 10,698 (+9898.13%)
Mutual labels:  nas
Spinenet Pytorch
This project is a kind of implementation of SpineNet(CVPR 2020) using mmdetection.
Stars: ✭ 75 (-29.91%)
Mutual labels:  nas
Vww
[LPIRC 2019] First place in the Visual Wake Words challenge (TF-lite track)
Stars: ✭ 56 (-47.66%)
Mutual labels:  nas

FBNet

This repository reproduces the results of the following paper:

FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search
Bichen Wu1, Xiaoliang Dai, Peizhao Zhang, Yanghan Wang, Fei Sun, Yiming Wu, Yuandong Tian, Peter Vajda, Yangqing Jia, Kurt Keutzer (Fasebook Research)

Layers to Search are from a FacebookResearch repository Utils stuff is taken from DARTS repository

Advantages

  • Building blocks (searched layers) was taken from the FacebookResearch repository (Quick Note: their repo consists files with names fbnet*, but doesn't include any fbnet architecture from their paper)
  • Latency Calculation Code
  • Successfully Tested on Cifar10
  • Logging. You can find all my logs and tensorboards into SAVED_LOGS/architectures_training (for architectures training)

Disadvantages

  • Loss : $CE(a, w_a) · α β log(LAT(a))$ instead of $CE(a, w_a) · α log(LAT(a))^β$ (occasionally)
  • SAVED_LOGS/supernet_training* (for supernet training) - logs with validation on the training data to thetas optimization (bug, code was fixed)
  • No MultiGPU Support yet
  • Training only CIFAR10

Good News!

FacebookResearch published weights for the resulted architectures: FBNet-A, FBNet-B & FBNet-C (trained on imagenet)

https://github.com/facebookresearch/mobile-vision

Results, Cifar10

The architectures are not SOTAs: we search only for filters' sizes (these numbers are good for the simple architecture) and the goal is to Reduce Inference Time for Your Device

FacebookResearch didn't share latencies for their test machines, so, I couldn't prove their latencies results, but I have builded and trained theier proposed architectures:

FBNet Architecture top1 validation accuracy top3 validation accuracy
FBNet-A 78.8% 95.4%
FBNet-B 82% 96%
FBNet-C 79.9% 95.6%
FBNet-s8 (for Samsung Galaxy S8) 79.6% 95.7%
FBNet-iPhoneX 76.2% 94.3%
------ ------ ------
fbnet_cpu_sample1 82.8% 98.9%
fbnet_cpu_sample2 80.6% 95.7%

Note: be cautious! these numbers are just validation's the bests (without confidence intervals, measured in a single run). Do not use these numbers to make decisions. They are here to compliment the tensorboards in the SAVED_LOGS directory. The reason why I don't split data into validation and test is in the next note.

Note: as it was stated in the paper and according to my results, if we train with small images (as cifar's 32x32), we can see a lot of 'skip' layers into the resulting architecture. I feel, for cifar10 we should search for less number of layers

FBNet Optimization performance

We have no theoretical guarantees of converjence. So, I run a distinct checking experiment to compare the method with the pioneer of gradient NASes in application to search a part of a NN. See DARTS VS FBNet.md for results

Code Structure and Training Pipeline, Cifar10

The repository consists of 2 Neural Net Models:

(1) FBNet Searched Architectures. All tools in the architecture_functions folder

(2) Stochastic SuperNet to search for new architectures. All tools in the supernet_functions folder

They use different functions and architectures specification. Functions used by both Nets are in the folders: general_functions (utilities) and fbnet_building_blocks (modified code of facebookresearch team)

I encourage you to visit TRAINIG_DETAILS.md in this folder for details and instructions.

Dependencies

I have tested the code with the following dockerfile: DOCKERFILE (Pytorch 0.4.1 Nightly)

btw I think it should work well with Pytorch 0.4.0+

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].