Though we would always like to succeed, ups and downs of development are part of the process. The important thing is that we learn from our mistakes. To this end, the bumps in the road helped us rectify some problems, and clarify what we wanted to create. This is how we ended up with the first draft of NetsPresso 1.0.
A clue to integration
While our Model Searcher was under development, our Model Compressor was beginning to show the fruits of our labor. Through our hard work, it would eventually go on to be modularized in the first trial version of NetsPresso. We were able to prioritize the technology in correspondence to its importance, streamlining the final result, and increasing the range of models that can be compressed.
This allowed us to compress Keras, PyTorch and even object detection models. Now that NetsPresso was so efficient in compression, it was possible to begin using the Model Searcher in conjunction with the Model Compressor. In other words, we were able to take the burden from the customer. This had three very important implications.
First off, retraining became easier. After you compress a model in the Model Compressor, the information is retained for future use. The problem of re-learning, which had been notoriously troublesome, was solved, albeit in a limited way.
Second, everything quickly became more cost-efficient. In the past, we had to find small models in the Model Searcher, even when it cost a lot of money. But with the advent of the Model Compressor, we were able to quickly select models that were already in the database, saving time and money.
Third, given the functionality of the Model Compressor, the range of models to be compressed is limited to the models that the Model Searcher can generate. This greatly reduced the number of times we had to compress something completely new, which in turn reduced the margin of error.
As the scope of the Model Compressor expanded, we began to see how it could be used with NetsPresso's other modules. Suddenly, ideas about NetsPresso's scalability and potential were coming into view. If I had to choose a favorite time in the development process, it would have been this moment.
Separately and together
Today, we define NetsPresso as three main modules. The Model Searcher, that receives data from the user and creates a model. The Model Compressor, that compresses the model created from the Model Searcher. And the Model Launcher, that converts the model so that it can operate on the target device. We thought it was important to be able to create a model through an intuitive process, which goes as follows:
1. Users upload their data, device information and speed requirements.
2. The Model Searcher recommends the most suitable model according to the data.
3. The selected model can be used as is, which ends the procedure. Or it can be compressed via the Model Compressor.
4. The compressed model is then re-trained in accordance with the original user data, through the Model Searcher.
5. Finally, the Model Launcher converts and packages the model to run on the user device.
The Model Searcher, Compressor and Launcher can all work together, or separately. All three can be used in an organic flow, but they are also independent modules, capable of working independent of one another. You are free to follow the above procedure, or you can pick and choose the features that you want according to your needs.
All three modules, as their names suggest, use models for input and output. NetsPresso was designed to send and receive models naturally, with the Model Database at the center, and the three main modules using it as an exchange point. The above design was solidified in April 2022, and following five months of development, was completed and launched in early September.
What makes NetsPresso unique?
'Development led by technology!'
This was a slogan at a company I worked for in the past. At the time, I didn't quite understand it. Development led by technology? Isn't that obvious, what's so unique about that? After developing NetsPresso I began to understand the meaning, though perhaps in my own way.
‘Development based on ideas from technology’
The development process of NetsPresso was different from any other software I had worked on in the past. In development, it is more common for ideas to come first, before development is realized. But NetsPresso didn't follow these rules. First and foremost, NetsPresso was determined by our technology. It might seem counterintuitive, but that was how it came to be.
In reality, technological development is often fragmented, full of fits and stops, trial and error. This is where ideas begin. NetsPresso was developed from the ideas that existing technology gave us. It is the result of combining technologies developed by researchers, that inspired ideas.
Looking back on the development process, I think it is important to respect the individuality of researchers, and to try to understand their work in detail. Only then can we hope to incorporate technology with a good final product. As developers, we have to rely on existing technology, so it only makes sense that we treat it with respect.
.
.
Everyone in the startup space will agree that innovation is key to survival. NetsPresso is the result of our own hard work and innovation. But what was this innovation exactly? As I look back with a more objective eye, this is what we were striving for.
The key was holistic innovation in AI development, not merely the process or the method behind it. We wanted users of NetsPresso to develop and operate their AI models in new and innovative ways. Of course, it shouldn't be limited to being innovative, it has to be easier, faster and more intuitive than the competition.
The current iteration of NetsPresso is able to do it all. It can create AI models, compress them, and run them on user devices through a graphical user interface. Compared to other modes of AI development, which often require complex code, it is more comfortable and easy to use. However, we can't stop there. I think we need to revolutionize AI development on a more fundamental level.
‘Creating a product that will fundamentally revolutionize AI development.’
Looking at it from this perspective, we still have a long way to go. Innovative software development is not an easy task, but it is one that we welcome.