Skip to content

Network Security

Cisco researchers use Julia for machine learning to improve network security
Julia bought me a 7.5x improvement in just two lines of code.

Cisco Systems is one of the largest developers and manufacturers of network hardware and telecommunications equipment. In 2013, Cisco acquired Cognitive Security, a Czech startup, and continues to maintain a research center in Prague.

Tomas Pevny is a researcher and instructor at Czech Technical University in Prague and Technical Lead at Cisco Systems. He tailors machine learning algorithms for computer security using network data, steganography and steganalysis to detect infected computers.

Tomas's goal is to implement a learnable (optimizable) message-passing algorithm for graph using Flux.jl in order to model the entire Internet, or at least a portion of it. Tomas says that Julia is essential to reach this goal quickly and make it scalable.

Tomas explains,

I started using Julia when a friend pointed me to a blog demonstrating efficient implementation of a restricted Boltzmann machine (RBM) with less than 2x overhead compared with C. So one weekend when I was sick and alone at home, I played with Julia and I was sold.

Julia is my prime prototyping language.

Pevny continues,

I rely on Julia to write efficient code in a single language – no need for combinations like Python + TensorFlow + C. After Flux.jl reached version 0.3, I ported the main functionality of my own multi-instance neural network library to Flux.jl and I have been using it ever since. At the moment, we have extended Flux to support general and nested multi-instance learning problems in Mill.jl library.

For example:

As part of Mill.jl, I was implementing convolution that would support matrices of different sizes.

After doing that for dense and sparse matrices, I noticed that in one-hot-encoding, I should take advantage of sparse matrices containing only zeros and ones. In Julia, this support was super easy. I just defined sparse matrices with Boolean values, which bought me a 7.5x improvement in just two lines of code. This encapsulates for me some of the unique features of Julia.

What’s more, I like the open community around Julia.

I have learned a lot from studying the source code of Flux.jl and other libraries. I’m grateful to the Julia creators and community – Julia makes my rapid prototyping efficient.

Many of the relevant papers can be found here.