The development of the modern technologies of artificial intelligence requires implementing the latest approaches to its programming and learning. Scientists are opening up new opportunities for using AI and its areas of application to developers. All this requires updating software development tools.
The choice of a programming language when developing AI systems depends on whether it is a question of developing a model and its training, or writing a code for a target platform where a trained (inference) model will operate. Some aspects should be taken into account that relate to the need for additional training of the model during the operation or use of the Reinforcement Learning technology.
As a rule, target platforms use a number of restrictions; pre-compiled trained models for execution in the environment of low-level C-family languages are downloaded on them.
The relevance of a programming language in this context is determined by its ability to meet three basic requirements:
Analytical reviews show that today most developers prefer using Python as a universal model building language. It is a tool for creating APIs and managing training processes. The growing popularity and continuous improvement of the Tensorflow frameworks and PyTorch, supported by leading AI players like Google and Facebook, brings this language to the top level based on ease of development.
A large number of AI projects in the open access (for example, on Github), the presence of the well-established communities around Stack Overflow and other forums for Python programmers allow considering it as the language that complies with the requirement for accessible study.
Finally, such frameworks as Google Services and others provide an efficient migration of the developed Python programs to the target platforms, which greatly speeds up the transfer of the developed models into production. Thus, the requirement for code porting is met.
C ++ can be considered the second relevant language, in which many models are developed for execution in a distributed environment. However, it is inferior to Python due to the limited number of AI frameworks in this language.
Java can be called the third most relevant language for the implementation of AI models.
Today we should not associate the development of AI technologies with the improvement of programming languages.
To develop AI models, universal and convenient languages are applied, not specialized ones. It allows developers to keep up with a constantly updating variety of AI technologies with no need to study new tools.
Today there is a trend towards the complication of development. It is natural, since each new technology and AI cause the emergence of more complex models, the training of which requires sophisticated calculations over huge data sets that are combined into special structures, such as high-ranking tensors.
The task of new software tools is to minimize the growth of model complexity for developers. Tensors become objects with controlled functions that are called within the same programming language as previously.
Today the development of AI projects can be considered complicated because there are not so many professionals on the market who understand the machine learning paradigm. Quite often companies face the challenge of finding developers and managers for AI-based projects.
Another aspect is the need to use specific hardware and software platforms during the development process. They are quite expensive even when renting in cloud services.
In this case, another problem arises, that is the search of qualified administrators and devops engineers. Overcoming the personnel gap between a narrow layer of highly skilled developers and researchers and developers of applied industrial AI is an important task. Solving this problem will allow transferring the development of AI projects from “complex” to “ordinary” ones.
The cost reduction of AI developments can occur with the enhancement of tools. The efficient direction here can be the enhancement of visual programming tools of the trained models. An example would be Microsoft Azure Machine Learning Studio. It is also necessary to take into account the active use of powerful AI for building other specialized AI according to specifications, as implemented in Cloud AutoML and Auto-Keras open framework.
With the development of AI tools, the focus will shift from programming languages to user interfaces for interacting with powerful designers of machine learning models.
However, since real projects, as a rule, are not purely trained machines, there will always be a need for the so-called “software glue” to combine technologically heterogeneous components into a single project. And the role of such a “glue” will remain behind a convenient programming language that will suit not only developers of AI components, but also other parts of the software project.
In future, frameworks for building learning models will be improved. They will gradually be included in the number of tools for visual programming and will be easily integrated with cloud-based AI.
It is likely that soon AI will be able to program itself. NASNet Google was the first example of creating a learning model for AI by another artificial intelligence. It was generated by Google AutoML in 2017. Since then, this AI has reproduced quite a few specialized “artificial children.”
Thanks AI TIME JOURNAL for sharing Artezio expertise 🙂