Python and R are popular for applications of machine learning. But in recent years, Julia is acquiring its place and has become the new de-facto for machine learning. Is the language really going to take over our old, trusted Python and R, in the machine learning world? According to Julia Computing, Julia offers the best-in-class support for modern machine learning frameworks such as TensorFlow and MXNet, making it easy to adapt to existing workflows. In 2017, during JuliaCon, Mike Innes gave an overview of Flux.jl, a Julia package that expands Julia’s flexibility in ML use cases. He demonstrated how the programming language provided lightweight abstractions on top of Julia’s native GPU and Automatic Differentiation support, while remaining fully hackable. The language was built keeping in mind the high-performance numerical model analysis required for machine learning applications and is therefore very suitable for machine learning applications.
Why Julia For Machine Learning?
According to a survey by Analytics India Magazine and Great Learning, Python and R are the most popular languages for data science and ML, both used by 44 percent and 35 percent of the survey audiences respectively. When it comes to Julia, it is not necessarily looked upon as a language for machine learning, probably because it’s new in the market and is hence not well established as the other two.
Since Julia is a new language built with a mission to overcome the drawbacks faced in the other languages today, it has the best parts of other languages like Python, R, Matlab, SAS and C. It is easy to write mathematical symbols in Julia, which is what ML has in a lot of amount. With packages like ArrayFire, generic code can be run on GPUs. With just a little code, Julia can run effectively and also faster than other languages like Python and R. Using TensorFlow in Julia rather than any other language has an advantage of the code looking much simpler. For example, one doesn’t have to do tf.while_loop or tf.loop to introduce a loop. During JuliaCon 2017, in a talk by Jonathan Malmaud, the MIT researcher working on cutting edge machine learning technologies, demonstrated how Julia’s interfaces to popular Machine Learning frameworks makes it seamless to use, and showed this with an example of Julia’s TensorFlow.jl.
Julia’s multiple dispatch prototype allows the many object-oriented and functional programming patterns easy to express and easy to change the behaviour of functions based on the run time’s state of more than one of its arguments. It is a best fit to define the number and array-like data types. Another feature of Julia is its automatic garbage collection, which is a collection of libraries for mathematical calculations, linear algebra, random number generation and regular expression matching, which adds to its advantage in ML.
Its scalability makes it easier to be deployed quickly at large clusters, again something crucial for ML programmers. Its powerful tools like MLBase.jl, Flux.jl, Knet.jl are of great use to ML. Moreover, it has tools like ScikitLearn.jl, TensorFlow.jl and MXNet.jl, apt for ML applications. A few lines of code goes a long way in Julia. Julia is a high-level language, that gives performance of a low-level language. So you code with an ease of Python but performance ease like C and C ++.
A common workflow in many organisations is that, when you try to run models in languages like Python and R, you eventually end up running them in C or C++. This is common in the banking sector and is also seen in other industries like that of pharmaceuticals. Julia aims to combine these two worlds and try to avoid two languages, high-level for writing the code and low-level for running, for one task. It aims to solve this ‘two-language’ problem.
Julia today has a huge variety of applications. Here are some of its use cases:
1.Aviva, one of the biggest insurance firms in the UK, uses Julia to solve their complex Monte Carlo risk models and they have found that they are a thousand times faster than they were before with other language.
2.NY Fed which is a central bank in the US uses Julia to do ML modelling, which are very large and used to understand the US economy. They have published many papers to show how they use Julia for this application.
3.The Federal Aviation Authority (FAA) in the US who are the regulators for all flights in the US have a system to sense aircraft nearby. The specification now has a text but the next generation will use Julia as a specification language, so the specification would be much more accurate in code, rather than in text. Julia is perfect in applications like this, it being a high and a low level language.
4.Diebetic retinopathy, a disease affecting more than 126 million diabetics and accounting for more than 5 percent of blindness cases worldwide, is using ML to predict eye disease. Julia Computing, along with IBM analysed eye fundus images provided by Drishti Eye Hospitals in Bangalore, and built a deep learning solution that provides eye diagnosis and care to thousands of rural Indians.