In the previous articles, we talked about Hardware Acceleration with FPGAs, the Key concepts about acceleration with FPGA that they provide, and the Hardware acceleration applications with FPGAs. In this latest installment of the series, we will focus on Hardware Accelerated Libraries and Frameworks with FPGAs, which implies zero changes to the code of an application. We will review the different alternatives available, for Machine and Deep Learning applications, Image, and Video Processing, as well as Databases.
Options for development with FPGAs
Historically, working with FPGAs has always been associated with the need for a Hardware developer, mainly Electronic Engineers, and the use of tools and Hardware Description Languages (HDL), such as VHDL and Verilog (of the concurrent type in instead of sequential), very different from those used in the field of Software development. In recent years, a new type of application has appeared, acceleration in data centers, which aims to reduce the gap between the Hardware and Software domains, for the cases of computationally demanding algorithms, with the processing of large volumes of data.
Applying levels of abstraction, replacing the typical HDL with a subset of C / C ++ combined with OpenCL, took the development to a more familiar environment for a Software developer. Thus, basic blocks (primitives) are provided, for Mathematical, Statistical, Linear Algebra, and Digital Signal Processing (DSP) applications. However, this alternative still requires a deep knowledge of the hardware involved, to achieve significant accelerations and higher performance.
Secondly, there are accelerated libraries of specific domains, for solutions in Finance, Databases, Image, and Video Processing, Data Compression, Security, etc. They are of the plug-and-play type and can be invoked directly with an API from our applications, written in C / C ++ or Python, requiring the replacement of “common” libraries with accelerated versions.
Finally, we will describe the main ones in this article, there are open source libraries and frameworks, which were accelerated by third parties. This allows us, generally running one or more Docker instances (on-premise or in the cloud), to accelerate Machine Learning applications, Image processing, and Databases, among others, without the need to change the code of our application.
Without a doubt, one of the most disruptive technological advances in recent years has been Machine Learning. Hardware acceleration brings many benefits, due to the high level of parallelism and the enormous number of matrix operations required. They are seen both in the training phase of the model (reducing times from days to hours or minutes) and in the inference phase, enabling real-time applications.
Here is a small list of the accelerated options available:
TensorFlow is a platform for building and training neural networks, using graphs. Created by Google, it is one of the leading Deep Learning frameworks.
Keras is a high-level API for neural networks written in Python. It works alone or as an interface to frameworks such as TensorFlow (with whom it is usually used) or Theano. It was developed to facilitate a quick experimentation process, it provides a very smooth learning curve.
PyTorch is a Python library designed to perform numerical calculations via tension programming. Mainly focused on the development of neural networks.
Deep Learning Framework noted for its scalability, modularity and high-speed data processing.
Scikit-learn is a library for math, science, and engineering. Includes modules for statistics, optimization, integrals, linear algebra, signal and image processing, and much more. Rely on Numpy, for fast handling of N-dimensional matrices.
XGBoost (Extreme Gradient Boosting), is one of the most used ML libraries, very efficient, flexible and portable.
Spark MLlib is Apache Spark’s ML library, with scaled and parallelized algorithms, taking advantage of the power of Spark. It includes the most common ML algorithms: Classification, Regression, Clustering, Collaborative Filters, Dimension Reduction, Decision Trees, and Recommendation. It can batch and stream. It also allows you to build, evaluate, and tune ML Pipelines.
Image and Video Processing
Image and Video Processing is another of the areas most benefited from hardware acceleration, making it possible to work in real-time on tasks such as video transcoding, live streaming, and image processing. Combined with Deep Learning, it is widely used in applications such as medical diagnostics, facial recognition, autonomous vehicles, smart stores, etc.
The most important library for Computer Vision and Image and Video Processing is OpenCV, open source, with more than 2500 functions available. There is an accelerated version of its main methods, adding more version after version.
For Video Processing, in tasks such as Transcoding, Encoding, Decoding and filtering, FFmpeg is one of the most used tools. There are accelerated plugins, for example for decoding and encoding H.264 and other formats. In addition, it supports the development of its own accelerated plugins.
Databases and analytics
Databases and Analytics receive increasingly complex workloads, mainly due to advances in Machine Learning, which forces an evolution of the Data Center. Hardware acceleration provides solutions to computing (for example with database engines that work at least 3 times faster) and storage (via SSD disks that incorporate FPGAs between their circuits, with direct access to data processing). the data). Some of the Accelerated Databases, or in the process of being so, mainly Open Source both SQL and NoSQL, are PostgreSQL, Mysql, Cassandra, and MongoDB.
In these cases, generally what is accelerated are the more complex low-level algorithms, such as data compression, compaction, aspects related to networking, storage, and integration with the storage medium. The accelerations reported are in the order of 3 to 10 times faster, which compared to improvements of up to 1500 times in ML algorithms may seem little, but they are very important for the reduction of costs associated with the data center.
Throughout this series of 4 articles, we learned what a device-level FPGA is, how acceleration is achieved when we are in the presence of a possible case that takes advantage of them (computationally complex algorithms, with large volumes of data). General cases of your application and particular solutions, ready to use without code changes.
How can Huenei help your business with Hardware Acceleration with FPGAs?
Infrastructure: Definition, acquisition and start-up (Cloud & On-promise).
Consulting: Consulting and deployment of available frameworks, to obtain acceleration without changes in the code.
Development: Adaptation of existing software through the use of accelerated libraries, to increase its performance.
User Story Mapping is a visual exercise often performed by product managers and their application development or web development teams to define the work that will create the most enjoyable, optimal, and agile user experience.
In other words, it is an agile and powerful product design method that is used to create a user-centered product, that is, they are the visual aid to build a shared understanding between the members of a web or application development project, to learn how to develop a successful design process.
This type of method is used to improve the understanding of the teams of their clients and to prioritize the work of all the development teams, where they create a dynamic diagram of the interactions of a representative user with the product, evaluating what steps the greater benefit for the user and prioritizing what should be built next.
In this case, this process always begins with the understanding of a problem and at the same time, knowing the user’s objectives, allowing to centrally draw the steps that this user will go through to achieve their objectives and thus narrate a natural narrative flow. user journey to explore all user activity easily.
Basic elements of a User Story Mapping
In order to know how to elaborate a User Story Mapping, it is important to know what are the structural elements that organize this type of design, that is why in Huenei IT Services we first present their names and in this way, you will be able to better understand each of the steps.
Next, the basic elements of this type of design, which, when organized in two dimensions (the vertical denotes priority, while the horizontal represents the steps a user takes to perform actions in the system, also known as the user’s journey or Buyer’s journey, allow a simple and clear reading of the general structure:
In English, you will find it as “Backbone” and this is the base of the map, it consists of epics or themes that describe the general activities of the user in the system, such as “Search Products”, in this case, the epics are organized in horizontal order, as they represent the steps a user takes while interacting with the product, which is basically a simple visualization of the user’s journey.
In order to better understand the concepts of epics and epics within this structure, it is important to know that the epic represents the User Story so large as to be able to accommodate multiple stories and the epic refers to when multiple epics are held in and of themselves.
2) User Stories
Also known as “Stories” and unlike a flat backlog structure, user stories are organized in vertical and horizontal dimensions.
In this case, they are grouped into corresponding epics, which describe more specific tasks that a user may require. If an epic describes a search phase, it can include stories like basic search, filter products, advanced search, etc. When stories are vertically prioritized, they can be broken into releases.
It refers to the fictitious people who will use the product, that is, they will carry out the steps described in the user stories.
This element is provided by UX specialists or by the marketing department and will serve as the basis for the map, since not knowing who the users are, it will be impossible to understand the epics of the product and, therefore, will lose the whole point of the story mapping.
By having user people or talking to UX staff, you can define who are the people who will perform certain actions in the system.
Guide to develop a User Story Mapping
Making a User Story Mapping will be as varied and different according to the size of your team, the scope and duration of a project, and the maturity phase of the product.
However, this is a process that must be carried out, especially when optimal results are expected from start to finish, and for this, the best time to start making it is when you have met all the product requirements and defined the equipment to the project, already knowing what the backbone is, the stories of the users and the users, it is easier to carry out these steps.
Step 1: Set the objectives of the project
First of all, focus on the potential customers of your business and summarize what goals these customers can achieve through the use of your product, write each of the goals and organize them in the logical order, you can use stickers or do it on aboard.
Step 2: Create the trip map
After collecting the objectives, it accounts for the user’s journey to achieving the objective, identifies the steps and avoids errors by faithfully following the narrative flow, to organize it closer to reality, placing the steps on the second line, step by step.
Step 3: Find solutions
Through this process, you create “user stories”, initially, you can use the following template: As a user – I Want This Goal – So the step is this.
Brainstorm with your team to collect most of the possible solutions and put all the user stories in the related steps.
Step 4: Organize the tasks according to their priority
If the brainstorming team was successful, then the story map should be full of great ideas, however, these stories cannot be run at the same time so in this step, you determine the different priority levels.
Identify the most common behavior or basic solution to the problem, so you organize user stories by priority and put the most important one at the top of the column.
Discussing customer priorities is crucial, so make sure you stay connected to your partners.
Step 5: Determine the launch structure
To do this, it initially indicates the smallest part of the product, the minimum viable product, and tries to complete the user’s journey starting with the most common or easiest tasks to carry out.
In this part, just focus on completing at least one user journey, after that, organize the rest of the accumulated work into tangible pieces by drawing horizontal lines between tasks.
By adding estimates to user stories, you can plan and schedule the entire development process version by version.
All the steps in this guide to elaborate a User Story Mapping are important, especially the latter represents one of the most important pieces of information in the whole process because it not only represents a crucial phase of the map but also because it will help you calculate the delivery time and costs.
The most important thing is to always keep in mind the end-user experience since their level of satisfaction and adoption are key in the success of the development, as well as in the fulfillment of the business objectives.
If you need to know more about User Story Mapping, we recommend you visit our services page UX / UI Design Services .
In large projects, collaboration and teamwork are often crucial to make progress iterative and incremental progress possible over time. The reality is that the more complex the project, the more difficult it is to reach the final goal: connect with the end-user.
Software Development projects, for example, in which the team must carry out complex Testing & QA processes to ensure that the final product meets customer expectations, it is vital to have a simple mechanism that allows monitoring of that all development is directing its resources to meet its needs.
Here is when techniques such as User Story Mapping become a reliable way to create participatory projects in which it is possible to combine the vision of users and developers in a balanced and functional way, creating representative prototypes that help to glimpse the result. final and promoting teamwork.
What is User Story Mapping?
Is a technique that facilitates the delimitation of the requirements of a service or product from the collaboration of the user and the developers, so that the essential functions can be determined – which is called Minimum Viable Product or MVP under its acronym in English – thereof.
In large-scale projects, the User Story Map can be broken down into two dimensions: the horizontal dimension –also known as Customer Journey– and the vertical dimension, which will allow the actors involved in the project to be identified directly (users ) and indirect (developers).
Initially, it can be difficult to implement and much more difficult to identify, especially when many steps are being taken in the development of a project. In general, it helps us to develop each of the points of the project that have some type of direct or indirect interaction with users. During the development process, we seek to identify each of the variables that will come into contact with the user, such as activities, waiting times, minimum needs, information, interaction with visible content, login, among others.
It also serves to create a user archetype that facilitates the identification of steps that the user will take when he is using the final product or service, as well as visual designs of each phase of the project to have a vision of what the user will experience at each stage.
This can be done in two ways: by making an archetype of the user model (also known as Customer Journey) or by determining the characteristics that the product will have as a minimum – also called as horizontal dimension and vertical dimension, respectively.
Designing an archetype of user model (Customer Journey)
A card is made with all the characteristics of a user, so that it can be identified as if it were a real person (in large projects, the ideal is to have several cards, which will represent different users who will facilitate the tests).
In this way it is possible to identify the parameters by which the project can be developed, having each of the users as participants. This phase can be applied as many times as necessary, in order to identify all the existing user archetypes.
Determining the minimum characteristics of the product
The second way is not much different from the first, but in this the focus is on the user and type of Customer Journey. From this point it is possible to determine what are the steps that will affect the project or even those events that may be important in the final resolution of the project.
At Huenei IT Services, for example, we provide multiplatform UX / UI design service, so if the project changes in the final phase and the client requires a custom mobile application, we can provide mobile development without any problem.
Beyond optimizing resources by directing all the effort to solve the real needs of users and the key functionalities of development, we find that:
- It makes it easier to make a product from scratch, making it much easier to correct mistakes and evolve your processes in the future.
- It is possible to detail threads of the main process that were hardly detailed at the beginning. These are vital to create tailor-made solutions, improve decision-making in the future, know what to prioritize, among other things.
- It facilitates the identification of one or more versions of the product that you want to deliver to the user before delivery, so that they define the characteristics and functions that it will have.
- It helps to prioritize the activities that must be carried out at the time to avoid delays.
- Analyze each of the activities performed by the user to create a completely level systemic structure.
- Help control User Stories in different environments, so that each person on the team can keep track of each of the movements made in real time.
- It controls delays or failures of all kinds in a general and structured way, so that it is much easier to foresee future events that may harm the user experience, such as system failures that can be identified by performing a Testing.
- Implement post-its or any other similar tool (such as billboards, for example) to make the process of writing ideas much easier and more dynamic.
- Hold constant meetings to do a collaborative brainstorming where you can discuss topics and come up with creative ideas.
- Keep a record of all information spoken during meetings after you are finished. In this way, it is possible to keep a digital control of the spoken topics to reject them in the future.
Developing projects focused on iterative progress is often a challenge for anyone, especially when the project’s main objectives and purpose are unclear. Teamwork is, without a doubt, the basis of everything, and that is why the implementation of the User Story Map technique is so convenient and easy to execute.
At Huenei IT Services we know that no matter how far you want to go in a project, sometimes choosing a simple technique is the best way to achieve the stated objectives. Software Development Projects, Mobile Development, QA (Quality Assurance) and even the application of outsourcing or outsourcing in IT projects could require a flexible and dynamic technique such as the User Story Map. It is a fairly intuitive method, in which collaboration matters and the individual participation of each participant of the development team is encouraged to come up with ideas that can bring the project closer to its final resolution.
Without a doubt, the impact that story mapping generates on a team’s work dynamics is positive, and beyond facilitating understanding between developers and users, there is the fact of promoting communication within and outside the team, a factor that can make a difference in any project.