TensorFlow: making machine learning manageable

Over the last decade, machine learning has become an increasingly popular solution to solve complex modern-day challenges. Its applications include a diverse range of topics such as image recognition, diagnosing medical conditions or fraud detection. As more distinct fields and industries gain interest in incorporating machine learning techniques into their products, the need for a comprehensive and adaptable machine learning platform arises. This is where TensorFlow comes in, an end-to-end open-source platform for machine learning to easily build and train models, supported by a large ecosystem of tools, libraries and community resources. TensorFlow enables researchers to experiment and push the boundaries of this AI technique while developers can easily build and deploy their machine learning powered applications. With its many options for development and deployment reflected by the number of supported programming languages and hardware platforms, TensorFlow is a very versatile solution applicable to various different domains.

How users perceive TensorFlow

End users of Tensorflow can be beginners and experts working in machine learning research and applications of desktop, mobile, web, and cloud1. Specifically, with regard to what Tensorflow is, end users expect Tensorflow to be an open-source platform that provides API to quickly build a machine learning workflow in their familiar working environment, typically command-line interface. In terms of user interaction and system functionality.2 Usually, end users will install and run Tensorflow on the operating system of their computers or cluster of computers. Most of them are accustomed to writing codes and scripts to describe their requirements (build, train, test and analyze machine learning models) for Tensorflow. Thus, Tensorflow should be able to interpret coding languages of the platforms it supports, and transfer them into specific machine learning workflows and provides corresponding machine learning tools.

Core capabilities: What can it do?

Tensorflow provides users with the possibility to easily build, train and deploy machine learning powered applications using one of the several programming languages supported by the available APIs. It allows users to specify and construct their models using a front-end of the chosen languages which the API connects to the underlying high-performance core of Tensorflow that executes the applications efficiently.

Spare me the details

Tensorflow leverages the concept of so-called ‘dataflow graphs’ in which data moves through a series of consecutive nodes connected through edges. Each individual node represents a certain mathematical operation on the data, whereas the edges represent a multidimensional array (also known as a ‘tensor’) of the data before or after processing. The user can then specify their model in terms of nodes linked together. In essence, the system provides a layer of abstraction sparing the users from having to deal with technical details such as implementing an algorithm or correctly transferring data between functions as this is taken care of by the core library. As a result, the users of Tensorflow can focus all of their attention on the higher-level logic of their application while TensorFlow handles the details.

Multilingual and versatile!

As of 2020, in addition to the language options listed in section 2.1.5 of the 2016 version of Desosa 3 , Tensorflow now has API support for several other languages including: Javascript, Go, Swift and a few others maintained by the community. However, one should keep in mind that only the Python and the C++ API are covered in the API stability promises according to the TensorFlow GitHub readme. TensorFlow’s services can be accessed on a wide range of operating systems and hardware platforms making it a highly portable system. These platforms include: Windows, MacOS, Linux, Android and for hardware: CPUs, GPUs, Raspberry Pis and even some experimental support for TPUs (Tensor Processing Unit). As a result, Tensorflow is suitable for a wide set of use cases ranging from mobile applications to high-performance devices.

Stakeholders: Who is involved?

In this section, we will analyze 11 different types of stakeholder, we will provide some understanding as to what they are, and then we will observe these roles in the context of TensorFlow. These classes of stakeholders and their descriptions as described in Rozanski and Woods 4.

Stakeholder Class Stakeholders
Acquirers TensorFlow was initially developed by the GoogleBrain team for internal use at Google, but has since been released for public use.
Assessors As well as being legally maintained by the team at Google, TensorFlow is licensed under the Apache License 2.0 which provides a legal guideline for open-source software.
Communicators The developers of TensorFlow have developed a set of tutorials for the software, as well as extensive documentation.
Developers The development team of TensorFlow is led by GoogleBrain but there are thousands of contributions from open-source developers on GitHub.
Maintainers TensorFlow is maintained by GoogleBrain and the open-source developers on GitHub.
Production Engineers TensorFlow is a client-side, end-user application, and as such has no significant hardware component to speak of, however the software applications used in TensorFlow are managed by the development team.
Suppliers As TensorFlow is a client-side model, the software in which it runs is downloaded to the user’s machine and thus runs in whatever environment it is used in.
Support Staff There is a global TensorFlow community on Stack Overflow that provides support to users of the software around the world.
System Administrators As TensorFlow is a client-side program there are no system administrations needed.
Testers TensorFlow is tested by the users and developers of the system.
Users Many people, from hobbyists to companies, use TensorFlow in their projects. Some examples of companies which use TensorFlow are Google, Intel, PayPal, GE, and Airbus.

Conclusion

As we can see from the table, due to TensorFlow’s nature as a client-side application, there are some types of stakeholders that don’t apply, particularly in the context of system administration and hardware-focused stakeholders. TensorFlow’s strong foundation and support by Google make it a well-supported system in terms of it’s stakeholders due to Google’s dependency on the software needing it to be as stable and capable as possible.

The context of TensorFlow

In this section, we will take a closer look at the context in which Tensorflow functions. The context is visualized in the context diagram presented below. In addition to the diagram, the details of the context are described in the accompanying table.

A context diagram for Tensorflow

Context Branch Description
Platforms The full version of Tensorflow is able to operate on desktop (Linux, macOS and Windows), web, cloud, mobile and IoT devices.
Users There are several companies using Tensorflow, while many of them are global and well-known. A selection of them are shown in the context diagram. Apart from larger companies, Tensorflow is also used by scientists for various research.
Communication GitHub is used for version control. Communication within the community happens both online in forums and in real life at summits.
Available languages Stable Tensorflow API is available in Python and C++. Though not guaranteed to be stable, API:s also exist for a number of other languages, such as Java, Javascript, C, Go and Swift.
Competitors Tensorflow has several competitors, one example being Pytorch. However, some of them have been officially supported to work on top of Tensorflow, such as Keras.
License Tensorflow is released under an Apache License 2.0.
Developers Tensorflow is managed by Google, but it relies heavily on contributions through GitHub.
Trusted Partners Tensorflow is piloting a Trusted Partner Program, where they have partnered with a few companies they recommend other companies less experienced with machine learning to acquire assistance from if needed.
Extensions Several extensions to Tensorflow exists, further building on the capabilities of Tensorflow. A selection of them are shown in the context diagram.

Future context

Since Tensorflow is an open-source project, its future relies heavily on its contributors and users. Therefore, Tensorflow is asking the community for future directions, for example using this form.

Roadmap: What’s next?

Below a summary of the work for each SIG group connected to Tensorflow is displayed which represent the future goals of the project for the year 2020.

Roadmap in 2020

Towards TF2.2:

  • Cleaning up and standardizing the high-level API surface
  • Making TensorFlow more intuitive and easier to debug
  • Continuing to enable scalable production deployment

Usability

  • Support for new development
  • Support for more file systems and file formats
  • Develop additional tools to enhance the support of machine learning development in JVM languages
  • Development and evolution of the Keras API
  • Support for different network fabrics and protocols
  • Development for TensorFlow Rust bindings project
  • Development for TensorFlow Swift
  • Development for TensorBoard and other visualization tools

Performance

  • High Performance Compilers and Optimization techniques that can be applied to TensorFlow graphs
  • Create common intermediate representation (IR) that reduces the cost to bring up new hardware

Portability

  • Support for TensorFlow models on microcontrollers, DSPs, and other highly-resource constrained embedded devices
  1. Tensorflow Websites: https://www.tensorflow.org/, 2020/3/8 

  2. Jim Coplien Gertrud Bjørnvig. Lean Architecture. Wiley, 2010. 

  3. Carmen Chan-Zheng et al, Desosa 2016: Tensorflow, https://delftswa.gitbooks.io/desosa2016/content/tensorflow/chapter.html 

  4. Nick Rozanski and Eoin Woods. Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives. Addison-Wesley, 2012, 2nd edition. 

TensorFlow