YonoArc provides an easy-to-use drag-and-drop interface to design and evaluate complex systems consisting of many building blocks, fully abstracted from their different environments and resource requirements.
For example, the following pipeline performs YOLO Object Detection on the images from a vehicle-mounted camera from the CARLA simulator. It also visualizes the vehicle speed over time.
The YonoArc Dashboard visualizing the outputs from this pipeline includes:
The main view of YonoArc consists of the following main parts:
- The canvas in the middle is used to build a pipeline with as many blocks as you need.
- The toolbar on the top enables you to take actions regarding the pipeline.
- The blocks you can drag and drop to the canvas appear if you click the + button on the upper-left corner of the canvas.
- The resource models needed for the pipeline are shown on the upper-right corner of the canvas.
- The dashboard button on the lower-left corner is enabled if the pipeline is launched and the dashboard is ready.
- Input blocks that feed data into the pipeline. For example, the Video Player block reads a video file from YonoDrive and outputs the individual images of the video.
- Dashboard blocks that visualize the data from the pipeline on the dashboard of YonoArc. For example, the Video Viewer block takes the individual images of a video and visualizes it as a video on the dashboard.
- Algorithmic blocks that process their input data and output their results. For example, the YOLO Object Detection block takes an image and outputs the bounding boxes of the objects detected in the image.
If you click the settings icon on a block, a settings menu will appear on the right side. You can:
- Configure the properties of the block using the properties tab.
- Check the logs of a block you developed while the pipeline is running by clicking Show block logs on the top of the properties tab.
- Learn more information about the block using the Help tab.
- Check the alerts sent by the block while it is running using the alerts tab. Alerts are color coded to indicate the severity of the alert: green for info, yellow for warnings, and red for errors.
A block has four icons on the bottom area. The first icon is enabled if the block uses the GPU. The second icon is enabled if the block is performing training (as opposed to inference). The third icon flickers if the block is sending alerts while running. The fourth icon is enabled if the block is scaled (explained below).
YonoArc is fully integrated with YonoDrive, the data manger of Yonohub. This means that blocks can read and write data (e.g., videos and datasets) from YonoDrive.
Message types of input and output ports have to be considered while connecting blocks. For example, the output port of the Video Player block can be connected to the input port of the Video Viewer block because both of them have the sensor_msgs/Image message type.
The properties of a block are defined by its developer and they allow you to control the behavior of the block without writing a single line of code. You can configure the properties of a block by clicking the settings button on the block and using the Properties tab.
Some properties can be updated while the pipeline is running and some properties can not. If a property supports live updates, you can change its value while the pipeline is running and see the effect immediately on the dashboard.
Block Advanced Properties
The following advanced properties of each block can be configured on the Properties tab as well.
- Async: Whenever a new message arrives at any of the input ports, the message is delivered to the block.
- Sync: The messages arriving at all the input ports are time synchronized and delivered together to the block. The interval parameter defines the delay (in seconds) with which messages can be synchronized. Note that this mode can cause messages to be dropped if they are not synchronized.
- Triggered: Whenever a new message arrives at the primary port (selected by the developer), the message along with all the latest messages from the other ports are delivered to the block. Note that this mode means that messages on the secondary ports may be dropped or delivered multiple times.
- Periodic: Deliver the latest messages at all the input ports at a given rate (specified by the interval parameter, in seconds) regardless of how fast the messages arrive. Note that this mode means that messages can be dropped if they arrive faster than the desired interval since only the latest messages are delivered.
- C0.1 is one tenth of a single CPU core along with 0.4GB of memory.
- GK0.1 is one tenth of a Tesla K80 GPU along with 0.4 CPU core and 6.1GB of memory.
For example, if a block does not need a GPU and needs a single CPU core, it should be assigned 10 multiples of C0.1. A block is allowed to consume more resources than its minimum resources. If you wish to restrict the resources of the block to the minimum, you can check the Restrict resources checkbox.
- Use YonoStore to purchase a faster alternative block that can run at 10 FPS.
- Configure the input blocks to output data at only 5 FPS.
- Scale the slow block to have have 2 replicas. This will enable to block to run at 10 FPS which will save half the time and money compared to the previous option.
A pipeline is a set of interconnected blocks. You can build a pipeline by dragging and dropping blocks to the canvas. You can connect two blocks by clicking and holding on the output port of one block and releasing on the input port of the second block. You can also easily connect blocks if the message types of their ports match using one of the following ways:
- Select the set of blocks you wish to connect (Use Ctrl+A for all the blocks, or use the mouse for a specific set of blocks). Then, press Ctrl+E to automatically connect all the blocks from left to right.
- Keep pressing Ctrl+E and click the blocks you wish to connect one by one. Release Ctrl+E after you are done clicking all the blocks you need.
A pipeline is saved in a .arc file. You can save the current pipeline using the top menu: File >> Save. You can open a saved pipeline using the top menu as well: File >> Open.
YonoArc allows you to build pipelines whose resource requirements are far beyond the capabilities of a single machine. That is why your pipeline can use multiple resource models at the same time. While building your pipeline, you can see on the upper-right corner of the canvas how many resource models are needed for the pipeline to run.
To launch the pipeline, click Launch or Express Launch on the toolbar. This allocates all the resource models and launches all the blocks of the pipeline. Since the blocks of the pipeline are independent, you will start seeing different colors for different blocks:
- Gray: Unlaunched. This is the initial state of any block.
- Yellow: Preparing the environment of the block.
- Blue: Preparing the block requirements.
- Green: Running
- Red: Waiting due to unavailable resources. This state may take a few seconds if you use Express Launch or a few minutes if you don’t.
After Launching the pipeline, you can view its dashboard by clicking the dashboard button on the lower-left corner of the canvas after the button gets enabled. The dashboard visualizes all what you need (e.g., videos and line charts) according to the dashboard blocks you use in the pipeline.
YonoArc monitors the traffic across the connections between the blocks. A solid connection indicates no traffic, while an animated dashed connection indicates the existence of traffic. By hovering over a connection, you can see the message rate, the traffic, how up-to-date this monitoring info is, and the window size using which the monitoring info was calculated.
To terminate the pipeline, click Terminate on the toolbar. This releases all the resources allocated for this pipeline.
YonoArc Live Mode
YonoArc supports a comprehensive live mode that allows you to change almost everything in a pipeline while it is running and see the effects on the dashboard immediately. This saves your time by not having to terminate and launch the pipeline frequently. It also saves your credits by not having to use the Express launch option since you don’t have to speedup the initial launch process. The following features are supported in live mode:
- Update the properties of a block. Properties that are selected by the developer to not support live updates are disabled while the pipeline is running. If you really need to update the values of these properties, you can use the next feature.
- Terminate and Launch a block using the buttons at the bottom of the properties tab. This is very useful when you need to update the advanced properties of a block (e.g., resources and deployment region), update the properties that do not support live updates, or even update the source code in case of a custom block. Once you terminate a block, you can update any of its properties, advanced properties, or source code. Then, you can re-launch it with the new settings.
- Drag a new block from the list of blocks into the canvas.
- Delete an existing block from the pipeline by clicking the block then clicking Delete or Backspace.
- Add/delete/update the connections between blocks.
- Add resource models when needed by clicking the 3-dot button besides the resource models on the upper-right corner of the canvas, then clicking the + or – buttons as needed. You should add more resource models when newly added blocks are red (i.e., waiting resources). New resource models will be Express launched if the pipeline was also Express launched.
- Scale a block by updating the number of replicas in the advanced properties area.
YonoArc Essentials Bundle
In order to help you get started, YonoArc includes an essentials bundle that is already purchased for free from YonoStore once your Yonohub account is confirmed. The essentials bundle includes many blocks, for example, Video Player, CARLA, YOLO Object Detection, and Video Viewer.