GithubHelp home page GithubHelp logo

chengduozhao / dragon Goto Github PK

View Code? Open in Web Editor NEW

This project forked from neopenx/dragon

0.0 2.0 0.0 533 KB

Dragon: A Computation Graph Virtual Machine Based Deep Learning Framework

License: BSD 2-Clause "Simplified" License

CMake 0.51% C++ 57.60% Python 23.43% Protocol Buffer 5.09% Cuda 13.37%

dragon's Introduction

Dragon: A Computation Graph Virtual Machine Based Deep Learning Framework

Compile Requirements for C++

  1. Google Protocol Buffer
  2. Python (2 or 3, 64bit)   |   Anaconda (2 or 3, 64bit)
  3. CUDA [Optional]
  4. CUDNN [Optional]
  5. OpenMPI [Optional]

Runtime Requirements for Python

  1. Package: protobuf
  2. Package: lmdb

Installation

  1. Clone this repository

  2. (Optional) Download and install CUDA

    (Optional) Download and install CUDNN

  3. (Optional) Download 3rdparty.zip and unzip to Dragon/3rdparty (Out of source code dir)

    Win64 (OpenBLAS / Protobuf2.6 for VS2013 / CUDNN v6 / Microsoft MPI)

    Linux64 (OpenMPI)

  4. Configure Dragon/CMakeLists.txt

    • Select optional libraries [PYTHON3 / CUDA / CUDNN / BLAS / SSE / MPI / MPI_CUDA_AWARE / CUDA_FP16]
    • Set 3rdparty path (recommend to keep defualt)
    • Set Python include path & Numpy root path
    • Set CUDA compiling architectures if necessary
    • GCC version(4.8+, 5.0-) should add -std=c++11 to CUDA_NVCC_FLAGS, if nullptr is not found
    • We generate *.h and *.cc files under the Dragon/src/protos with protobuf2.6, run protoc by yourself if higher are required
  5. Environment Variables

    Linux(Only for OpenMPI):

    • Create dragon.conf

      sudo vim /etc/ld.so.conf.d/dragon.conf
      • Append 1 line for libraries dir of your 3rdparty, e.g. :
        • /home/Dragon/3rdparty/lib
    • rebuild the scaning cache

       sudo ldconfig

    Windows

    • add binary directionary to system environment variables, e.g. :
      • PATH=........;C:\Dragon\3rdparty\bin;
  6. Setup MPI [Optional]

    Linux:

    Windows:

    • We use Microsoft MPI which can perfectly run at lastest Windows10
    • Microsoft MPI is intergrated into 3rdparty and you should do nothing
  7. Compile

    Linux:

    • Install cmake

      sudo apt-get install cmake
    • Make

      cd Dragon
      mkdir build
      cd build
      cmake ..
      make install -j16

    Windows:

    • Install cmake-gui
    • Mkdir Dragon/build
    • Configure and generate MSVC project in Dragon/build
    • Open Dragon/build/Dragon.sln
    • Compile and generate for "INSTALL" solution
  8. Deploy

  • Install Dragon

     cd Dragon
     python setup.py install

    Hint: If you do not have permission, try as follows:

     cd Dragon
     python setup.py install --user
  • Install protobuf

     pip install protobuf
  • Install lmdb

     pip install lmdb

Usage

Import

import dragon

Virtual DL Frameworks

import dragon.vm.theano as theano
import dragon.vm.caffe as caffe
import dragon.vm.tensorflow as tf

Tutorials

[IPython Notebook] -> (https://github.com/PhyscalX/Tutorials)

We will revise several classical examples, covering both CV, NLP and RL.

Device

import dragon.config
dragon.config.EnableCPU()
dragon.config.EnableCUDA(device_id, use_cudnn=True)

Automatic Memory Optimization(AMC)

import dragon.config
dragon.config.SetDebugMode(False)

This option will make all gradients share a global tensor(debugging is intractable).

which prefers a 50% memory-usage and 15% slower solution during training phase.

Scope

  • NameScope
import dragon
from dragon.core.tensor import Tensor
with dragon.name_scope(prefix='conv1'):
    w = Tensor('weight').Variable()    # named as conv1/weight
    b = Tensor('bias').Variable()      # named as conv1/bias
  • DeviceScope
import dragon
with dragon.deive_scope(deivce='gpu', id=0, use_cudnn=True):
    x = ops.Add(a, b)    # use /gpu:0 and cuDNN
  • PhaseScope
import dragon
import dragon.vm.theano as theano
 with dragon.phase_scope(phase='train'):
    f = theano.function(outputs=y)    # force the training phase even without gradients computation

License and Citation

Dragon is released under the BSD 2-Clause license.

Please cite Dragon in your publications if it helps your research:

@article{pan2017dragon,
  Author = {Pan, Ting},
  Journal = {arXiv preprint arXiv:1707.08265},
  Title = {Dragon: A Computation Graph Virtual Machine Based Deep Learning Framework},
  Year = {2017}
}

dragon's People

Contributors

physcalx avatar neopenx avatar

Watchers

James Cloos avatar Chengduo Zhao avatar

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.