Git Product home page Git Product logo

dividiti / ck-crowdsource-dnn-optimization Goto Github PK

View Code? Open in Web Editor NEW
19.0 19.0 3.0 49.44 MB

CK GUI application to crowdsource benchmarking and optimization of DNN engines and models across diverse Linux or Windows platforms. Further info:

Home Page: http://cKnowledge.org/ai

License: BSD 3-Clause "New" or "Revised" License

QMake 1.37% C++ 70.76% Shell 0.25% Batchfile 0.25% Python 27.38%

ck-crowdsource-dnn-optimization's People

Contributors

chunosov avatar dsavenko avatar gfursin avatar psyhtest avatar

Stargazers

 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

ck-crowdsource-dnn-optimization's Issues

Qt min set of libraries as CK package

We can actually create current min set of Qt libraries for Windows and Linux as a CK package (with a tag qt-min) and then whenever we compile this app, we can actually install Qt libraries via CK - this will be a canonical way of reusing artifacts.

Just one more note - we may want to compile and run this app on ARM-based Linux so we should detect ARM/x86 architecture when extracting libs. See how it is done in ck-autotuning:package:compiler-llvm-3.9.0-linux-download ...

refresh selection items on "select" if ck env was changed

If app has been run allready it keeps same list of engines, models and imagenet set
if some packages were installed after app has been started
seletion items keep the same but it will be usefull not to force app restart after all changes in ck env.

CK path is not correctly detected on Surface Pro 4

I tried this app on a new Surface Pro 4 installing CK via pip using Anaconda3 python ... I get the following error:

Classification program stopped prematurely. Please, select the command below, copy it and run manually from command line to investigate the issue:

python -W ignore::DeprecationWarning C:\Users\ckdnn\Anaconda3\Scripts..\ck\kernel.py run program:caffe-classification-opencl --cmd_key=use_continuous --deps.caffemodel=8a0758effe14ae49 --deps.imagenet-aux=eb8b1076f899bf92 --deps.imagenet-val=2e35bb4b714d49aa

When I run it, I gets the following:

C:\Users\ckdnn\Anaconda3\python.EXE: can't open file 'C:\Users\ckdnn\Anaconda3\Scripts..\ck\kernel.py': [Errno 2] No such file or directory

However, I can run this fine:

run program:caffe-classification-opencl --cmd_key=use_continuous --deps.caffemodel=8a0758effe14ae49 --deps.imagenet-aux=eb8b1076f899bf92 --deps.imagenet-val=2e35bb4b714d49aa

The problem is that Anaconda uses slightly different mechanism for packages so you can't find kernel there ... As I mentioned, it may be better to run ck directly rather than trying to find kernel since I spent some time figuring out how to make it portable (it's not straightforward), what do you think, @dsavenko ?

Thanks a lot!!!

batch size support

Should query batch size from user (new selector at the right panel) and pass it to net

Determine if a classification program is not compiled and compile it

On ck run, we find all classification programs. But some of them may not be compiled. This case should be detected, and user should be asked whether to compile the program or skip compilation (in which case the program won't be accessible from the UI). If the user chooses to compile, the compilation should be done right away before starting the UI. If the compilation fails, the UI is still started, but without this program.

Recognition failed in the app on Windows due to unsupported prototxt

caffe-classification on Window is built and run successfully, I can see predictions for default image in the console.

dnn-proxy-caffe-cpu is built too, found and loaded by the app:
image

but after running it fails (and therefore the app is crashed) with message:

F0213 18:31:22.879647  2720 layer_factory.cpp:62] Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Input (known types: Convolution, Eltwise, LRN, Pooling, Power, ReLU, Sigmoid, Softmax, Split, TanH)

this error message is contained in logs in directory bin\logs

It seems, the message tells about section in the prototxt file

input: "data"
input_shape: {
  dim: 1
  dim: 3
  dim: 227
  dim: 227
}

prototxt file, prepared by the app, is in bin/tmp directory

Unable to reload proxy

  1. Selected CPU proxy
  2. Start execution
  3. Stop execution
  4. Select OpenCL type of proxy
  5. Start execution
  6. App crashed because unable to load another version of caffe lib while other dependencies loaded successfully:

LOG:
Loading dependencies. Count: 10
Load dep lib 10 "/opt/intel/intel-opencl-1.2-6.3.0.1904/opencl-sdk/lib64/libOpenCL.so"
Load dep lib 9 "/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so"
Load dep lib 8 "/home/nikolay/CK-TOOLS/lib-clblast-development-gcc-5.4.0-linux-64/install/lib/libclblast.so"
Load dep lib 7 "/usr/lib/x86_64-linux-gnu/libopencv_core.so"
Load dep lib 6 "/home/nikolay/CK-TOOLS/lib-caffe-bvlc-opencl-clblast-trunk-gcc-5.4.0-linux-64/install/lib/libcaffe.so"
Segmentation fault (core dumped)

See loading lib code in recognizer.cpp
QString Recognizer::loadDeps(const QStringList &depLibs)

Probably bug when recognition with SqueezeNet

Worst prediction found with marker value 0.001
Image: "/home/anton/data1/ILSVRC2012_val/ILSVRC2012_val_00015268.JPEG"
Top-1: "0.001 - tiger shark, Galeocerdo cuvieri (3)"
Correct: "0 - tobacco shop, tobacconist shop, tobacconist (860)"

It seems that SqueezeNet can't predict any image and think they all are tiger shark

Check CUDA version

I've got compilatino error

ck install package:dnn-proxy-caffe-opencl
...
0) lib-caffe-nvidia-0.15-cuda  Version 0.15: 0

...
CXX/LD -o .build_release/tools/extract_features.bin
.build_release/tools/extract_features.o: In function `google::protobuf::RepeatedField<float>::Reserve(int)':
extract_features.cpp:(.text._ZN6google8protobuf13RepeatedFieldIfE7ReserveEi[_ZN6google8protobuf13RepeatedFieldIfE7ReserveEi]+0x5b): undefined reference to `google::protobuf::Arena::AllocateAligned(std::type_info const*, unsigned long)'
.build_release/tools/extract_features.o: In function `int feature_extraction_pipeline<float>(int, char**)':
extract_features.cpp:(.text._Z27feature_extraction_pipelineIfEiiPPc[_Z27feature_extraction_pipelineIfEiiPPc]+0xbe8): undefined reference to `google::protobuf::internal::fixed_address_empty_string'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedOutputStream::WriteStringWithSizeToArray(std::string const&, unsigned char*)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::DecrementRecursionDepthAndPopLimit(int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::ReadVarint64Fallback()'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::Arena::AddListNode(void*, void (*)(void*))'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::WireFormat::ReadPackedEnumPreserveUnknowns(google::protobuf::io::CodedInputStream*, unsigned int, bool (*)(int), google::protobuf::UnknownFieldSet*, google::protobuf::RepeatedField<int>*)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::IncrementRecursionDepthAndPushLimit(int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::UnknownFieldSet::MergeToInternalMetdata(google::protobuf::UnknownFieldSet const&, google::protobuf::internal::InternalMetadataWithArena*)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::InitEmptyString()'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::empty_string_once_init_'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::ReadVarint32Fallback(unsigned int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int, std::string const&, google::protobuf::io::CodedOutputStream*)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedOutputStream::WriteVarint32SlowPath(unsigned int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::ReadLengthAndPushLimit()'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::GeneratedMessageReflection::NewGeneratedMessageReflection(google::protobuf::Descriptor const*, google::protobuf::Message const*, int const*, int, int, int, int, int, int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::CheckEntireMessageConsumedAndPopLimit(int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::BytesUntilTotalBytesLimit() const'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::ReadVarintSizeAsIntFallback()'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::io::CodedInputStream::ReadTagFallback(unsigned int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::MergeFromFail(char const*, int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::RepeatedPtrFieldBase::InternalExtend(int)'
.build_release/lib/libcaffe.so: undefined reference to `google::protobuf::internal::ArenaStringPtr::AssignWithDefault(std::string const*, google::protobuf::internal::ArenaStringPtr)'
collect2: error: ld returned 1 exit status
make: *** [.build_release/tools/extract_features.bin] Error 1
Error: Building Caffe in '/home/defremov/CK-TOOLS/lib-caffe-nvidia-cuda-0.15-nvcc-8.0.44-lib.openblas-0.2.19-85636ff-linux-64/src' failed!
CK error: [program] package installation failed!

Use images/second as the performance metric

I'm finding "Images per second" (fps) more intuitive as a performance metric than "Time per image" (especially when the unit of measurement has to be guessed:)).

I think we should just display "Images per second" (or "Image/s" if space is limited).

file squeezenet_v1.1.caffemodel has invalid MD5 stored in scenarios

Check MD5: failed for "/home/nikolay/Projects/crowdsource-video-experiments-on-desktop/bin/openscience/data/87f5e203c47544d6/model/squeezenet_v1.1.caffemodel" calculated: "42c581aa4ef6d5978287df3bbb9137f1" stored: "0357e4e11d173c72a01615888826bc8e"
FAIL "Downloading file 'squeezenet_v1.1.caffemodel' from https://github.com/DeepScale/SqueezeNet/blob/master/SqueezeNet_v1.1/squeezenet_v1.1.caffemodel?raw=true into /home/nikolay/Projects/crowdsource-video-experiments-on-desktop/bin/openscience/data/87f5e203c47544d6/model" "MD5 verification failed"

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.