Create Your Multimedia AI-generated Storybook with ZetaForge! — Part I

Zahra Golpayegani
Zetane
Published in
6 min readJun 13, 2024

--

TL;DR: We talk about some of the main pain points in software engineering in today’s world and discuss how our new tool, called ZetaForge, alleviates some of these challenges by leveraging containerization and providing understandable visualizations in complex pipelines. This article is broken into three parts and if you make it to the end you will be able to forge your own AI pipeline to generate a storybook.

Motivation

Keeping up with the pace of AI models is getting out of hand these days. Every week, a few state-of-the-art models are being dropped on GitHub with better performance and more capabilities compared to the existing ones. The range of applications these AI models cover is also quite vast, as well as the form of media they create. You can create audio from text, text from text (prompt), image from text, image to text, …. you name it.

In software engineering, it has become challenging to keep up with the pace of Artificial Intelligence.

How can we use these amazing AI models, and what can we build with them? But wait… is this the real question?

Even if we build an application using a set of AI models, wouldn’t it become obsolete after a while? How can we adapt to the speed of change we mentioned earlier? It is quite disappointing to put a lot of effort into building something that quickly becomes outdated.

We need ways to adapt to the frequent model updates in AI swiftly.

Speaking of speed, setting up Python environments and installing dependencies usually takes a considerable amount of time from us, developers. Not to mention those cases where package incompatibility exists, and we need to try different versions of multiple packages to find the version that works for us. This issue can get bigger and bigger as we add more components to our application. Adding new components means adding new dependencies, which means more time should be dedicated to setting up the environment and installing the correct packages. Especially when using multiple state-of-the-art components, like in the case of having a complex AI pipeline, because each component is typically based on different dependencies and software infrastructure.

The worst part is even when it works for us and we have correctly set up our environment, it may not work on our colleague’s end who has followed the same instructions, because they are using a different OS or package version. This can happen in production, too, and believe me, it can get frustrating!

Without containerization, it is difficult to run the same code on every machine and get consistent results.

Having said that, you are probably thinking of one word: containerization.

That’s right! Using a containerization tool, such as Docker, we can share the setup environments and run code across different platforms more consistently.

Containerization makes sharing code and environment much more consistent.

By containerizing our code, we can share what we have created with our team members, and it will just work! The good news is when someone shares their code and the installation script (e.g., Dockerfile) with us, we can reuse their code, which brings efficiency to our workflow.

By reusing code and containerized installation, we can improve efficiency.

Containerization helps developers spend less time reinventing the wheel!

Last but not least, let’s talk about another pain point which is mostly related to how we, software engineers and developers, present our work to others. Let’s say you come up with this amazing idea for an app and you spend a lot of time coding it. After you have done all the work, here comes the time to find a manager/business person and convince them to listen to you talk about this fantastic application you wrote and how you need them to help you make money out of it. Now, you tell me, would you rather just spend another hour coding or try to explain this massive amount of code you wrote with a bunch of flow charts and diagrams that are even more difficult to explain to a non-tech person?

This might sound easy if you have an application that is made up of one or two main components and all the components are classic; everyone knows what those components do. But with AI, nothing is classic. Everything is new. So, it gets more and more difficult to explain what you have built, especially as the application gets more and more complex.

We need easy-to-understand ways to convey information about technical code, what it is designed for, and what it produces as a result to non-technical/business persons.

Moreover, it is 2024 and people/governments will not trust what we build with AI unless we have good mechanisms to explain what our pipelines do and what they create.

We need our pipelines to be explainable, especially if they are using AI.

So far, we have talked about why being able to adapt to the pace of updates is crucial. Also, we discussed how we can reuse our teammates’ containerized code to maximize efficiency and consistency. We opened up about how difficult explaining your code to someone else who is from another field can be, and we quickly mentioned how crucial it is to have explainable pipelines, especially when we are embedding AI into our applications.

Well, we want to get rid of all of these pain points at the same time; so, let me give you the good news by introducing ZetaForge!

What is ZetaForge?

ZetaForge is an open-source platform developed by Zetane Systems that is designed to help developers and software engineers build and deploy complex AI pipelines quickly. Each component of your code runs in a separate container on ZetaForge, and you can add visualizations to any step in your pipeline, which makes your work easy to understand for stakeholders and managers.

How does ZetaForge solve the challenges we discussed? Let’s break it down:

  • ZetaForge allows you to keep up with the pace:

When a new model/algorithm is published on GitHub, as soon as the code is wrapped up as a “ZetaForge Block”, which can be done by the author or any contributor, there is no need for you to reinvent the wheel and running that piece of code would be as fast as a drag-and-drop. A “ZetaForge Block” bundles all you need to run that piece of code and defines a mechanism to connect that piece of code to the rest of your pipeline without breaking anything else!

  • ZetaForge makes sharing code and environment possible.

By leveraging containerization, ZetaForge guarantees if a piece of code wrapped up in a “ZetaForge Block” works on your colleague’s computer, it will work on yours as well. Therefore, you can share what you have developed with your team, and they can run it without having to deal with long environment setup procedures, package incompatibilities, inconsistent results, or unexpected errors.

  • ZetaForge makes devs’ and stakeholders’/managers’ lives easier by providing visualizations along the way.

Using “ZetaForge View Blocks”, you can add visualizations to your pipelines which makes your work easy to understand to non-technical people.

  • ZetaForge allows you to add explanations to your AI pipelines.

Need to show you are complying with the latest AI regulations? Or just want to open the black box of your deep learning model? Do you want to gain the trust of your manager? ZetaForge gives you the key!

ZetaForge in Action

We will show you all we promised in a moment, but before that, let’s introduce some of the basic concepts in ZetaForge. It’s easy, I promise!

  • ZetaForge Block: Each Block is a piece of code that runs in a separate container. To build a Block, we need the code requirements written in a requirements.txt file and a basic Dockerfile . If your code does not need any specific Docker instructions, you can use the default template that we provide.
  • ZetaForge Pipeline: A collection of Blocks connected to each other that serve a purpose.

Easy, right?

Okay, we are ready to get our hands dirty!

Continue to Part II

--

--

Zahra Golpayegani
Zetane
Writer for

Computer scientist and machine learning engineer