Re: First class support for MxNet?

2019-02-09 Thread Iblis Lin
(well, I'm a Julia programmer, my opinion might be quite bias. :p)

No. I think Python is still dominating at this moment.
I agree the Julia blog post about ML and PL
(it also mentioned in that Swift artical):
   https://julialang.org/blog/2017/12/ml

   (Chinese version)
   https://julialang.org/blog/2017/12/ml
   https://julialang.org/blog/2017/12/ml_tw

TL;DR from my view:
(Quote from the blog)
"Any sufficiently complicated machine learning system contains an ad-hoc,
informally-specified, bug-ridden, slow implementation of half of a programming 
language."

Runtime & Ecosystem
  Basically, I will say that TensorFlow/MXNet/PyTorch are different standalone
  programming languages for specific domain -- numerical computation.
  They use Python as their interfaces to build models.
  Where do the models get computed? In their own runtime.
  This runtime shares nothing with CPython's runtime.
  User puts "+-*/" symbols and placeholders in Python, 
  but nothing is computed by CPython.

  So...what's the problem about having own runtime?
  In case of TF/MXNet/PyTorch, they splits and throws away the original 
  ecosystem.
  For example, MXNet have its own array type 'NDArray'.
This type only run on our own runtime (libmxnet).
You have to abandon the great works done by scikit-learn from the
ecosystem of Scipy project, which people have already devoted tons of
efforts to.
You need to re-write a porting for NDArray if you want something like
Gaussion Process.
And this builds a wall between libmxnet and numpy runtime.

  I feel so sorry about another example:
  
https://mxnet.incubator.apache.org/versions/master/api/python/ndarray/linalg.html
  This API was added about 1 year ago (or half year ago?).
  It made me anxious.
  Tons of numerical systems have more robust and versatile linear algebra 
functions.
  But some of MXNet developers have to spend their valuable time on implement 
linalg
  stuffs again.

About Julia's ecosystem
  (Alought selling Julia is not the point.)
  Let's talk about what Julia comminuty have done on integrating ecosystem.
  There is a package named Flux.jl[1].
  It fully untilized Julia's native Array type and runtime.
  For a CPU run, the code is written in pure Julia, and the performance is 
quite 
  competitve[2] for the case of all the code written in high-level language.
  So that I can do some small experiemnts on my FreeBSD desktop 
  without compiling any C/Cpp extension.
  For GPU run, there is a crazy package CUDANative.jl[3] to let user write 
kernel code
  in pure Julia. It leverages LLVM's PTX backend.
  This package is baked by JuliaGPU[4] comminuty.
  About AD stuffs, it's supported by another group of poeple from JuliaDiff [5],
  who is doing reseaches on ODE/PDE.
  Flux integrates them all and become a part of ecosystem as well.
  If user want to use some exotic statistic distributions, just plug the another
  package from JuliaStats[6].

> Any plans to take an approach similar to this for the MxNet library?

  TBH, I'm selfish. My answer is Julia. I only care about Julia stuffs.
  I'm trying to make more re-use of interfaces from Julia's stdlib and runtime.
  It' challange. I hope the MXNet Julia package is more than a binding and
  connecting with the ecosystem.

So... you might ask that why I'm here and work on MXNet?
  I want to increase the entroy of DL tools in Julia.
  I think freedom is the symbol in the world of open source,
  user should always have anothr choice on softwares.
  I personally dislike the state of TF -- being a huge, closed ecosystem.
  Many poeple is porting stuffs into TF's system and nothing fed back
  ( the backprop got truncated :p ).
  I think Julia can find a balance point between MXNet's and original ecosystem.


[1] https://fluxml.ai/
[2] 
https://github.com/avik-pal/DeepLearningBenchmarks#cpu-used-intelr-xeonr-silver-4114-cpu--220ghz
[3] https://github.com/JuliaGPU/CUDAnative.jl
[4] https://github.com/JuliaGPU
[5] https://github.com/JuliaDiff
[6] https://github.com/JuliaStats

Iblis Lin
林峻頤

On 2/10/19 4:08 AM, Zach Boldyga wrote:
> Any plans to take an approach similar to this for the MxNet library?
> 
> https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md
> 
> -Zach
> 


First class support for MxNet?

2019-02-09 Thread Zach Boldyga
Any plans to take an approach similar to this for the MxNet library?

https://github.com/tensorflow/swift/blob/master/docs/WhySwiftForTensorFlow.md

-Zach