GithubHelp home page GithubHelp logo

talwalkarlab / paleo Goto Github PK

View Code? Open in Web Editor NEW
85.0 9.0 40.0 425 KB

An analytical performance modeling tool for deep neural networks.

Home Page: https://talwalkarlab.github.io/paleo/

License: Apache License 2.0

Shell 3.56% Python 96.37% Makefile 0.08%
paleo deep-learning deep-neural-networks distributed-computing

paleo's Introduction

Paleo

Build Status License

Paleo is an analytical model to estimate the scalability and performance of deep learning systems. It can be used to

  • efficiently explore the space of scalable deep learning systems,
  • quickly diagnose their effectiveness for a given problem instance.

Live demo

Getting Started

Installation

Paleo uses the following dependencies:

  • numpy
  • click
  • six
  • cuDNN (Optional. Use --use_only_gemm to disable cuDNN heuristics)

Use pip to install the depenencies with the pinned versions:

pip install -r requirements.txt

Tested with Python 2.7, cuDNN v4 on Ubuntu 14.04.

To install Paleo, run the following command in the cloned directory:

python setup.py install

Usage

Paleo provides programmatic APIs to retrieve runtime estimations.

The following is an example of estimating SGD executions under strong scaling.

from paleo.profilers import BaseProfiler

class SGDProfiler(BaseProfiler):
    def __init__(self, filename):
        super(SGDProfiler, self).__init__(filename)

    def simulate(self, workers, batch_size=128):
        fwd_time, params_in_bytes = self.estimate_forward(batch_size //
                                                          workers)
        bwd_time = self.estimate_backward(batch_size // workers)
        update_time = self.estimate_update(params_in_bytes)

        t_comp = fwd_time + bwd_time + update_time
        t_comm = self.estimate_comm(workers, params_in_bytes)
        return t_comp + t_comm

Definitions

Model Architectures

Paleo uses a special json format to for model architecture specification. Predefined architectures can be found under the nets/ directory. Paleo also provides a convertor for Caffe prototxt format (see nets/caffe/ for details).

  • AlexNet v2
  • Inception v3
  • NiN
  • Overfeat
  • VGG-16
  • ResNet-50 (from Caffe spec)
  • DenseNet (from Caffe spec)

Hardware

Predefined hardware specificiations are in paleo/device.py.

Reference Paper

Hang Qi, Evan R. Sparks, and Ameet Talwalkar. Paleo: A Performance Model for Deep Neural Networks. International Conference on Learning Representations (ICLR), 2017.

@inproceedings{qi17paleo,
  author={Hang Qi and Evan R. Sparks and Ameet Talwalkar},
  booktitle={Proceedings of the International Conference on Learning Representations},
  title={Paleo: A Performance Model for Deep Neural Networks},
  year={2017}
}

License

Apache 2.0

paleo's People

Contributors

gaul avatar hang-qi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

paleo's Issues

Upgrade TensorFlow dependency

Presently Paleo can only use TensorFlow 0.12. Running with the latest 1.6.0 generates an error:

$ ./paleo.sh profile nets/inception_v3.json 
Network: nets/inception_v3.json
Direction: forward
Traceback (most recent call last):
  File "paleo/profiler.py", line 427, in <module>
    cli()
  File "/home/gaul/.virtualenvs/paleo/local/lib/python2.7/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/gaul/.virtualenvs/paleo/local/lib/python2.7/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/gaul/.virtualenvs/paleo/local/lib/python2.7/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/gaul/.virtualenvs/paleo/local/lib/python2.7/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/gaul/.virtualenvs/paleo/local/lib/python2.7/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "paleo/profiler.py", line 414, in profile
    _print_tabular(cu, tf)
  File "paleo/profiler.py", line 343, in _print_tabular
    assert len(cudnn_result) == len(tensorflow_result)
TypeError: object of type 'NoneType' has no len()

Travis integration tests

I could not run 3 of the 4 Paleo commands with the provided test inputs as reported in #3 #4 #5. Could you add integration tests to your .travis.yml so that I could be sure whether my environment creates these issues?

Missing comma

Hi! I think there is a missing comma in file "paleo/profilers/cudnn_profiler.py" at line 188 (after "3: 'CUDNN_CONVOLUTION_BWD_DATA_ALGO_FFT_TILING'"). Thanks!

Lack of cuDNN 5 and WINOGRAD algorithm support

I tried to run
./scripts/exp_case_alexnet_scalability.sh
and raised a butch of Warning and got no profiling results:

WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
INFO build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:393] Tile FFT: 1 (32x32) 1D: False
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:192] Unsupported algorithm: CUDNN_CONVOLUTION_FWD_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD
WARNING build/bdist.linux-x86_64/egg/paleo/profilers/flops_profiler.py:246] Unsupported algorithm: CUDNN_CONVOLUTION_BWD_DATA_ALGO_WINOGRAD

What might be the problem? Thanks

CuDNN error

Dear developers,

I installed paleo on a machine that did not have cuDNN (since the install instructions say it is optional). Then I ran

#! /bin/sh

NET_FILE=nets/inception_v3.json
OUT_FILE=results/case_inception

PPP_COMP=0.62
PPP_COMM=0.72

./paleo.sh simulate $NET_FILE
--use_only_gemm
--batch_size=256
--network_name=ethernet
--device_name=K40
--num_workers=1,2,4,8,16,50,100
--ppp_comp=$PPP_COMP
--ppp_comm=$PPP_COMM
--scaling=weak >> $OUT_FILE

but I got the following error.

File "paleo/profiler.py", line 427, in <module> cli() File "/Users/pbalapra/anaconda2/envs/paleo/lib/python2.7/site-packages/click/core.py", line 722, in __call__ return self.main(*args, **kwargs) File "/Users/pbalapra/anaconda2/envs/paleo/lib/python2.7/site-packages/click/core.py", line 697, in main rv = self.invoke(ctx) File "/Users/pbalapra/anaconda2/envs/paleo/lib/python2.7/site-packages/click/core.py", line 1066, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/Users/pbalapra/anaconda2/envs/paleo/lib/python2.7/site-packages/click/core.py", line 895, in invoke return ctx.invoke(self.callback, **ctx.params) File "/Users/pbalapra/anaconda2/envs/paleo/lib/python2.7/site-packages/click/core.py", line 535, in invoke return callback(*args, **kwargs) File "paleo/profiler.py", line 297, in simulate ppp_comm, parallel, hybrid_workers) File "paleo/profiler.py", line 149, in simulate ppp_comm) File "/Users/pbalapra/Projects/repos/2018/paleo/paleo/simulation.py", line 250, in simulate_scaling device) File "/Users/pbalapra/Projects/repos/2018/paleo/paleo/simulation.py", line 59, in _profile_for_apply_updates device) File "/Users/pbalapra/Projects/repos/2018/paleo/paleo/profilers/flops_profiler.py", line 24, in __init__ from paleo.profilers import cudnn_profiler as cudnn File "/Users/pbalapra/Projects/repos/2018/paleo/paleo/profilers/cudnn_profiler.py", line 10, in <module> from paleo.third_party import libcudnn File "/Users/pbalapra/Projects/repos/2018/paleo/paleo/third_party/libcudnn.py", line 52, in <module> raise OSError('cuDNN library not found') OSError: cuDNN library not found

Integrate network latency

It'd be nice to have the latency for different networks to see how much that influences the results. Currently, the network object only looks at bandwidth:

paleo/paleo/device.py

Lines 38 to 54 in 984bbf5

class Network(object):
def __init__(self, name, bandwidth):
"""
Args:
name: name of this network connection.
bandwidth: in Gbps.
"""
self._name = name
self._bandwidth_Gbps = bandwidth
@property
def name(self):
return self._name
@property
def bandwidth(self):
return self._bandwidth_Gbps

Cannot run fullpass against alex_v1

$ ./paleo.sh fullpass nets/alex_v2_1gpu.json
INFO /home/gaul/work/paleo/paleo/profilers/tensorflow_profiler.py:21] TensorFlow version: 1.6.0
Traceback (most recent call last):
  File "paleo/profiler.py", line 427, in <module>
    cli()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "paleo/profiler.py", line 317, in fullpass
    device_name, num_warmup, num_iter, batch_size)
  File "paleo/profiler.py", line 132, in profile_full_pass
    return profiler.profile_full_pass(layers)
  File "/home/gaul/work/paleo/paleo/profilers/tensorflow_profiler.py", line 44, in profile_full_pass
    graph, end_points, variables = self._compose_full_graph(layers)
  File "/home/gaul/work/paleo/paleo/profilers/tensorflow_profiler.py", line 93, in _compose_full_graph
    ops, _ = self._ops_softmax(layer, graph, end_points)
  File "/home/gaul/work/paleo/paleo/profilers/tensorflow_profiler.py", line 246, in _ops_softmax
    layer.outputs[0], layer.outputs[1])))
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.py", line 2013, in sparse_softmax_cross_entropy_with_logits
    labels, logits)
  File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/nn_ops.py", line 1779, in _ensure_xent_args
    "named arguments (labels=..., logits=..., ...)" % name)
ValueError: Only call `sparse_softmax_cross_entropy_with_logits` with named arguments (labels=..., logits=..., ...)

Cannot run profile against alex_v1

$ ./paleo.sh profile nets/alex_v2_1gpu.json 
Network: nets/alex_v2_1gpu.json
Direction: forward
Traceback (most recent call last):
  File "paleo/profiler.py", line 427, in <module>
    cli()
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "paleo/profiler.py", line 414, in profile
    _print_tabular(cu, tf)
  File "paleo/profiler.py", line 343, in _print_tabular
    assert len(cudnn_result) == len(tensorflow_result)
TypeError: object of type 'NoneType' has no len()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.