In this documentation, we will explore versioning in Edge Impulse. Edge Impulse allows you to version control individual blocks and your entire project and pipeline. Versioning is crucial to project management, ensuring you can track changes, revert to previous states, and collaborate effectively with your team. We will draw comparisons to Git versioning to help illustrate these concepts and mainly focus on project-level versioning.
Versioning allows you to create snapshots of your project at different stages of development. This feature is particularly useful for managing complex machine learning projects, where tracking changes and maintaining a history of modifications is essential. Similar to how Git manages different versions of code, Edge Impulse’s versioning system helps manage the evolution of your machine learning projects.
Track Changes: Monitor the evolution of your project over time, akin to committing changes in Git version control.
Revert to Previous Versions: Restore your project to a prior state if needed, similar to checking out a previous commit in Git.
Collaborate Effectively: Share specific versions of your project with team members, like sharing branches or commits in Git.
Maintain History: Keep a detailed record of all changes made to your project, much like the commit history in Git.
Version changes are prompted by significant modifications to the project, such as:
Model Architecture: Alterations to the structure of your machine learning model.
Dataset: Additions or modifications to the training or testing data.
Hardware Target Configuration: Changes to the target hardware configuration for deployment.
Other Significant Changes: Any other substantial changes that affect the performance or functionality of your project.
Edge Impulse provides a straightforward versioning system that allows you to create and manage versions of your projects. Each version captures the current state of your project, including data, configurations, models, and settings. This is comparable to how a Git commit captures the state of a codebase at a particular point in time.
The following diagram illustrates the workflow for creating and managing versions in Edge Impulse:
To start using the versioning feature, log in to your Edge Impulse account and open a project. Navigate to the "Version" tab and begin creating versions to manage your project's development effectively.
To create a version of your project, follow these steps:
Navigate to Your Project: Open the project you want to version in the Edge Impulse Studio.
Create a New Version: Click on the "Version" tab in the left-hand menu. Then, click the "Store your current project version" button.
Name Your Version: Provide a meaningful name and description for your version. This will help you identify it later, similar to writing a commit message in Git.
If you want to reference your project in the Edge Impulse public project repository, check the Publish this version under the Apache 2.0 license.
This is a great way to share your work with the community.
Save the Version: Click "Save" to create the version. Your project is now versioned, and the current state is saved, much like creating a commit in Git.
You will see a list of all versions created for the project.
Each version includes:
The version number
The creation date
The user who created the version
The description
The training accuracy
The testing accuracy
The number of data samples
The visibility
Select a Version: Choose the version you want to revert to from the list.
Revert: Click the "Revert to this version" button. Confirm your choice in the dialog that appears, similar to checking out a previous commit or branch in Git.
Edge Impulse also supports organizational management, allowing multiple users to collaborate on projects within a structured environment. Here’s how versioning can be particularly beneficial within organizations:
Centralized Management: Administrators can oversee all projects, ensuring consistent versioning practices across the team.
Team Collaboration: Multiple team members can access and work on the same project versions, facilitating smoother collaboration.
Access Control: Set permissions to control who can create, view, or revert versions, ensuring that only authorized personnel can make significant changes.
Audit Trails: Maintain an audit trail of all version changes across projects within the organization, which is essential for accountability and compliance.
Regular Versioning: Create versions at key milestones in your project development to ensure you have a record of significant changes, similar to making frequent commits in Git.
Meaningful Descriptions: When creating a version, use descriptive names and detailed descriptions to help identify the purpose and changes included in that version, akin to writing clear commit messages in Git.
Collaborative Versioning: Encourage team members to create versions before making significant changes. This practice ensures that everyone can revert to a stable state if needed, much like using branches in Git for collaboration.
Versioning is an essential feature for managing machine learning projects in Edge Impulse. By creating and managing versions, you can track changes, collaborate effectively, and maintain a history of your project’s development. Start versioning your projects today to enhance your workflow and project management.
For further assistance, visit our forum.