March 2016, Seoul, South Korea: AlphaGo, the deep-learning computer program developed by Google DeepMind, defeats Lee Sedol, considered one of the world’s top professional players of the board game Go. To achieve that result, AlphaGo was programmed with computing techniques that required more than 1,000 central processing units (CPUs) and more than 100 graphics processing units (GPUs)—and enough electricity to power them. Consider that a standard home computer with four CPUs and one GPU consumes 200 watts on average; that gives an idea of the wattage necessary to power a program like AlphaGo! By comparison, the average continuous power required by Sedol’s brain while playing was about 20 watts.
That example provides a good illustration of the amounts of energy needed to run computer programs. Given the constant advances being made in artificial intelligence, solutions must therefore be found to minimize that energy consumption and limit the environmental impacts of these new technologies.
For the past year or so, François Leduc-Primeau, an assistant professor in the Department of Electrical Engineering at Polytechnique Montréal and an IVADO professor, has been doing just that. He’s leading research designed to develop a computing accelerator that can significantly lower energy consumption by information systems that use deep-learning techniques. The project relies on two key areas of complex expertise, digital circuitry and deep neural networks (DNNs), so collaboration between specialists in these fields is crucial to the success of the project.
At a time when artificial intelligence attracts more and more attention, environmental concerns are increasing as well, so in that context it’s exciting to be working on a project that addresses two major issues of the moment
Assistant Professor, Polytechnique Montréal
The project’s origins can be traced to a parallel drawn from telecommunications, an industry in which Professor Leduc-Primeau worked for a number of years. Telecommunications systems use error-correction codes to ensure proper reception of signals in spite of all the “noise,” i.e., the various disturbances they can encounter as they travel from transmitter to receiver. To use a simple example, imagine two people trying to have a conversation in a noisy bar. The ambient noise may prevent Person B from distinctly hearing Person A’s every word, but Person B can still understand the message. Now imagine that at the next table there are two computers attempting to communicate in binary code (0s and 1s): because they lack intuition, it’s difficult for them to “know” whether “011010000110100” is a valid “word.” To deal with the ambient noise and make it easier for the two machines to communicate, error-correction codes can be added to their programming: a sort of dictionary containing a redundant language in which certain sequences of symbols are authorized, and others not. Equipped with that language, our two computers can better “understand” each other, in the same way we as humans can infer the meaning of a sentence from only a few words.
The same phenomenon is found in computing circuits, the physical components of which are modules, transistors, etc. None of those components is ever completely free from manufacturing defects, which we can compare to the “noise” that affects telecommunications signals. Today, it is thus common practice to build in several “protective layers” to prevent computation errors in a series of circuits. The problem is, that guarantee comes at a high energy cost.
It is possible, however, to reduce the number of protective layers, and in turn the energy they consume, by adding redundancy (that is, error-correction codes) to the computations. In practice, this equates to allowing more flexibility in intermediate computations, even allowing them to contain errors, with no compromise to the reliability of the final result, which is subject to quality criteria. Given that DNN algorithms “learn” to complete tasks based on multiple examples, this mechanism can be exploited to “teach” a neural network to tolerate errors in intermediate computations, so that it arrives at the same result but saves energy because of the safety margins.
There is another way to reduce systems’ energy consumption: build specialized circuits, such as Tensor Processing Units (TPUs), to replace generic circuits like computer processors, which can perform any type of calculation but need more time and energy to do so because they aren’t specialized in any specific task. While specialized circuits take longer to manufacture and are less flexible, they have a longer lifespan, and the energy it takes to manufacture them is negligible compared with that needed to run them.
These two factors (redundancy and specialization) thus represent an opportunity to build systems better and provide engineers with hardware that uses less energy, and which ensure that the modifications applied to the computations are transparent to the user. Indeed, to effectively deploy these new types of systems, it must be possible to easily integrate them into existing industrial ecosystems. And there’s a wide range of potential applications in industry. Here are just a few:
- Smaller-size batteries and electronic devices.
- Ways to develop miniaturized devices that could enable innovative applications in fields like healthcare.
- Design of low-energy-consumption portable systems that, using algorithms, could scan a person’s physical environment and rapidly provide information about it (e.g., directional instructions).
- Construction of smarter, autonomous telecommunications receivers.