I’m really hoping that I’m not going to irritate anyone for this post, but I genuinely want to know the answer (not to attack anyone, but to better understand the initial vision for this project).
I’m just really curious about why the Lua-based Torch framework was chosen for the architecture of OpenNMT. I’ve encountered some resistance to adopting Lua in one of the teams I’ve been working with, so I’m looking for supporting evidence (or perhaps reasons to look into OpenNMT-py instead) behind why the original decision was made to invest the future of OpenNMT in Torch when Lua (from what I’ve been told) is becoming decreasingly popular (though I don’t know if it’s true or not, especially since Google is making Luarocks a Google Summer-Of-Code project) for new research. I did also find this comment from an AI researcher at Facebook (answering in response to the question from the original poster): Roadmap for Torch and PyTorch.
I recognize that Lua is fast, simple, and lightweight, but I also recognize that it doesn’t have quite the same breadth or depth of industry support as other languages (such as Python), which (from my understanding) limits its usability for overall software architecture, particularly for high-scale, high-performance, highly-available, highly-complex, elastic cloud-based web applications.
Here’s the comparison between the two languages on Google Trends: Google Trends comparison: Lua programming vs Python programming
Also, Torch doesn’t run well on Windows, though I recognize that a lot of people don’t care about running machine learning software on Windows at all.
So, why was Lua/Torch chosen as the primary platform/architecture for this project, rather than starting with another language and framework, such as Python/PyTorch or a framework with Keras bindings, such as TensorFlow, Theano or CNTK?
I also recognize that performance tests have indicated that especially for multi-GPU configurations, Torch is very fast in comparison to other frameworks.