Last year, SAS released SAS Container Runtime, the game-changing runtime engine that publishes SAS models and decisions into containers. SAS Container Runtime executes models and decisions outside of SAS Viya using standard technologies. It is lightweight, to save on-cloud costs, portable, to enable easy movement across environments, and scalable, to meet traffic needs. IT and ModelOps Engineering teams can use SAS Container Runtime to create repeatable Continuous Integration and Continuous Delivery (CI/CD) processes to efficiently test and promote new models and decision flows. To make this process even easier, SAS is providing an example template to validate and promote a SAS container through testing and production. After initial configuration of the template and environments, a SAS container can move through the CI/CD process with just a few button clicks.
SAS Container Runtime solves multiple problems. First, it allows modeling and decisioning code to move from the development environment to the production environment in an easy, cost-efficient, and trustworthy manner. It allows organizations to move scoring code from their development environment on SAS Viya, a data and analytics platform, to small, fast, scalable, and disposal systems on their production environment where applications can access modeling and decisioning scores over REST API.
SAS Container Runtime creates a runtime container for SAS code. A container is a standard unit of software that packages code and all its dependencies so that the application runs quickly and reliably on all environments. This means that the container can be executed in any cloud or on-premise. It also means that you container does not need SAS Viya for execution.
To summarize, there are several benefits to using containerized model and decision deployments.
And finally, creating a CI/CD process around SAS Container Runtime has never been easier!
The CI/CD promotion template provided by SAS uses a GitOps process to move the container across environments automatically, saving your IT team time and resources.
In this process, SAS Viya acts as the development environment. You will use a few resources on Azure, including Azure Container Registry, where a copy of the container is stored, and Azure Kubernetes Service, which acts as the testing and production environments. You will also use a few open-source orchestration tools, including GitHub, Flux CD, and Jenkins. GitHub will store a copy of the container files, including a deployment descriptor. This deployment descriptor provides instructions for the GitOps controller, including instructions on where to find the container within Azure Container Registry, how to communicate with the container, what namespace it should be deploying to within Azure Kubernetes Service, and how many processing nodes should be within the cluster. An open-source tool called Flux CD is used to act as the GitOps controller because it provides integration between the deployment descriptor in the GitHub repository and the Kubernetes cluster. And finally, Jenkins, a popular open-source automation tool is used.
The process starts after a model or decision has been developed on SAS Viya. Models and decisions can be published directly into Azure Container Registry just as the deployment descriptor is pushed into the GitHub repository. For model publishing, the CI/CD promotion assets include a SAS Workflow Manager definition. This workflow definition containerizes the champion model within a project, deploys the container into Azure Container Registry, pushes the deployment descriptor into the GitHub repository, and then starts the Jenkins pipeline. For users publishing decisions or non-champion models, the models and decisions can be published from SAS Viya and the Jenkins pipeline can be started manually using the published name as a parameter.
The Jenkins pipeline passes the deployment description to Flux CD, where it makes the appropriate changes within the testing Kubernetes Cluster on Azure Kubernetes Service. After the testing cluster has been configured and the container is running, Jenkins runs the data through the container to validate that it is scoring as expected. Upon successfully validating the container in the testing environment, Flux CD repeats the process on the production environment. After the container is running, it is ready to score data.
Organizations can pass data to the container using the REST API. REST API is a standard for communication between applications, so this makes it easy to leverage container scoring within an application or process.
To start using the new CI/CD promotion pipeline template, you must first add a few configurations to each environment that the pipeline touches. After you have completed the configurations, the pipeline automates promotion and validation, which saves time and reduces future headaches.
Click here to view specific instructions about configuring the environments and using the template that are available in the Model Management Resources repository on GitHub.
More information about using the promotion template and configuring each environment can be found in this recent webinar, Best Practices for Adopting Containers within your MLOps Process.
With the release of this CI/CD template, organizations can easily take advantage of containers and SAS Container Runtime. With a few button clicks, the containerized score code is moved from the container registry to the test environment. After passing validation checks, the container is moved to production where it is ready to score data. Creating a CI/CD process around model containerization has never been easier! What would you like to see next for SAS Container Runtime? Comment your thoughts below!
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
Data Literacy is for all, even absolute beginners. Jump on board with this free e-learning and boost your career prospects.