发布于 2026-01-06 3 阅读
0

通过 Jenkins 流水线部署 AI 项目 通过 Jenkins 流水线部署 AI 项目的步骤 结论

通过 Jenkins Pipeline 部署 AI 项目

通过 Jenkins 流水线部署 AI 项目的步骤

结论

请注意,本文自 2024 年 11 月 20 日首次发布以来已更新。

想象一下,你构建了一个“完美的机器学习模型”,却不得不面对繁琐且容易出错的手动打包代码、将容器镜像推送到镜像仓库以及每次修改后重启服务器的过程。如果没有持续集成/持续部署 (CI/CD),这将成为开发人员和机器学习工程师的日常苦差事。

CI/CD 是一种 DevOps 理念,它通过自动化模型的构建、测试和部署,减轻了开发人员和机器学习工程师的手动操作负担。通过自动构建、测试模型及其依赖项(数据集、代码和配置)并进行版本控制,CI/CD 使大型团队能够无缝协作和部署,从而最大限度地降低出错或冲突的风险。

Jenkins是一个开源的 CI/CD 平台,可以简化 AI 项目的构建、测试和部署。它还拥有一个用户界面,能够以可视化的方式跟踪流水线的运行情况。本文将介绍如何通过 Jenkins 流水线自动部署 AI 项目。

太长不看

- KitOps enables teams to easily unpack artifact components such as models, code, and datasets to different directories.
- Jenkins lets you track pipeline runs and monitor your AI pipelines through a visual interface.
- Jenkins and KitOps simplify the process of building and deploying AI projects.
Enter fullscreen mode Exit fullscreen mode

通过 Jenkins 流水线部署 AI 项目的步骤

先决条件

要完成此操作,您需要以下物品:

  • 代码托管平台:创建一个 GitHub 帐户。如果您还没有帐户,可以按照此指南创建一个。在 GitHub 上创建一个仓库。本教程稍后会将此仓库与 Jenkins 集成。
  • KitOps:以下是安装KitOps 指南。
  • Linux 环境:本教程专为 Linux 环境设计,您可以通过创建虚拟机或使用 Amazon Linux AMI启动 Amazon EC2实例来完成。如果您希望使用其他操作系统,则需要相应地调整 Jenkinsfile 中的命令。
  • Jenkins:按照以下步骤在您的本地计算机、虚拟机或您选择的操作系统上安装 Jenkins
  • 容器镜像仓库:您可以使用Jozu HubGitHub Package镜像仓库或DockerHub。本指南将使用 Jozu Hub。

验证 KitOps 是否已安装

安装完成后,请在本地终端运行以下命令来验证 KitOps 是否已安装:

kit version
Enter fullscreen mode Exit fullscreen mode

创建 Jozu Hub 存储库

登录您的 Jozu Hub 帐户并创建一个存储库。这里,我创建了一个名为jenkins_repo 的空存储库。

Jenkins 代码库 JozuHub

您可以通过运行以下命令,使用 JozuHub 对您的本地终端进行身份验证:

kit login jozu.ml
Enter fullscreen mode Exit fullscreen mode

系统会提示您输入用户名,用户名是创建 Jozu Hub 帐户时使用的电子邮件地址和密码。

拆开模型套件

登录 Jozu Hub 后,您可以从其软件包注册表中获取任何可用的模型套件。首先从Jozu Hub解压Qwen模型

在本地终端中运行以下命令:

kit unpack jozu.ml/jozu/qwen2-0.5b:0.5b-instruct-q2_K
Enter fullscreen mode Exit fullscreen mode

解压 ModelKit 后,您将看到一些文件:KitfileQwen 模型许可证markdown 文档

目前,目录结构如下所示:

|-- Kitfile
|-- qwen2-0_5b-instruct-q2_k.gguf
|-- README.md
|-- LICENSE
Enter fullscreen mode Exit fullscreen mode

下面显示的是解压模型套件后创建的 Kitfile 文件。

manifestVersion: 1.0.0
package:
  name: qwen2-0.5B
  version: 2.0.0
  description: The instruction-tuned 0.5B Qwen2 large language model.
  authors: [Alibaba Cloud]
model:
  name: qwen2-0_5b-instruct-q2_k
  path: qwen2-0_5b-instruct-q2_k.gguf
  license: Apache 2.0
  description: 0.5B-instruct-q2_k.
code:
  - path: LICENSE
    description: License file.
  - path: README.md
    description: Readme file.
Enter fullscreen mode Exit fullscreen mode

创建一些新文件夹,例如models 和 docs,并将目录结构修改为:

|-- Kitfile
|-- models
  |-- qwen2-0_5b-instruct-q2_k.gguf
|-- docs
  |-- LICENSE
  |-- README.md
Enter fullscreen mode Exit fullscreen mode

修改 Kitfile 文件以反映修改后的目录结构。在修改后的 Kitfile 文件中,模型路径已更改为models/ qwen2-0_5b-instruct-q2_k.gguf。LICENSE 和 README.md 文件的路径也分别更改为docs/LICENSEdocs/README.md

manifestVersion: 1.0.0
package:
  name: qwen2-0.5B
  version: 2.0.0
  description: The instruction-tuned 0.5B Qwen2 large language model.
  authors: [Alibaba Cloud]
model:
  name: qwen2-0_5b-instruct-q2_k
  path: models/qwen2-0_5b-instruct-q2_k.gguf
  license: Apache 2.0
  description: 0.5B-instruct-q2_k.
code:
  - path: docs/LICENSE
    description: License file.
  - path: docs/README.md
    description: Readme file.
Enter fullscreen mode Exit fullscreen mode

现在您的 Kitfile、模型和依赖项都已准备就绪,让我们使用 Jenkins 构建 CI/CD 流水线。在继续操作之前,请先验证 Jenkins 是否已安装。

确认 Jenkins 已安装

安装 Jenkins 后,请访问 http://:8080 验证本地安装[http://localhost:8080](http://localhost:8080)。您将看到一个类似于下图的页面。根据您的操作系统,页面上会显示管理员密码的路径。

验证 Jenkins

输入管理员密码后,系统会提示您创建管理员用户。创建用户后,您应该会看到 Jenkins 主屏幕:

詹金斯主页

创建 Jenkins 凭证

您可以创建 Jenkins 凭据,以便安全地输入您的 Jozu Hub 用户名和密码。导航至“管理 Jenkins”→“凭据”→“全局凭据”,然后创建两个凭据。第一个凭据类型为“秘密文本”,其中包含 Jozu Hub 用户名。

创建用户名凭据

同样地,创建另一个 Jozu Hub 密码凭据,如下图所示。

创建密码凭据

创建凭证后,构建您的管道。

创建你的 GitHub Webhook

在 GitHub 仓库设置中,添加一个 Webhook 以连接 Jenkins。将Payload URL设置为`<JENKINS_URL>` JENKINS_URL/github-webhook/,并将`JENKINS_URL`替换为您的 Jenkins 服务器 URL。然后,选择“仅推送事件”以仅在代码推送时触发通知,并保存配置。

现在你的 webhook 已经创建好了,每次你向 GitHub 推送代码时,它都会查找 Jenkinsfile 文件,然后运行你的 Jenkins 流水线。如果你现在推送代码,将会抛出一个错误。这个错误是因为配置需要 Jenkinsfile 文件来运行代码,而该文件并不存在。

创建你的 Jenkinsfile

在根目录下创建一个名为Jenkinsfile 的文件。该文件包含登录 Jozu Hub、打包 ModelKit 以及将 ModelKit 推送到远程仓库的步骤。

请将以下代码写入您的Jenkinsfile

pipeline {
    agent any 
    environment {
        USERNAME = credentials('USERNAME')
        PASSWORD = credentials('PASSWORD')
    }
    stages {
        stage('install kitops') {
            steps {
                cleanWs()
                git(url: 'https://github.com/Techtacles/kitops-jenkins.git', branch: 'master')
                sh 'wget https://github.com/jozu-ai/kitops/releases/latest/download/kitops-linux-x86_64.tar.gz'
                sh 'tar -xzvf kitops-linux-x86_64.tar.gz'
                sh './kit version'
            }
        }
        stage('Login to JozuHub'){
            steps {
                sh './kit login jozu.ml -u $USERNAME -p $PASSWORD'
                echo 'Successfully logged in to jozuhub'
            }
        }
        stage('Tagging and pushing to remote repository'){
            steps{
                sh './kit unpack jozu.ml/jozu/qwen2-0.5b:0.5b-instruct-q2_K --model -d models/qwen2-0_5b-instruct-q2_k.gguf'
                sh './kit pack . -t jozu.ml/<your-jozu-username>/<your-jozu-repo>:latest'
                sh './kit push jozu.ml/<your-jozu-username>/<your-jozu-repo>:latest'
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

上面的代码片段概述了一个包含三个阶段的 Jenkinsfile:第一阶段安装最新版本的 KitOps第二阶段使用之前配置的用户名和密码登录 JozuHub最后阶段标记 Modelkit 并将其推送到 JozuHub。根据您的操作系统,安装 KitOps 的命令可能有所不同。请按照以下步骤在您的操作系统中安装 KitOps 。

一旦你将代码推送到 GitHub,Jenkins 流水线就会启动。

Jenkins 流水线

该脚本登录到您的 Jozu Hub,将模型解压到models/目录中,打包 ModelKit,然后将其推送到远程存储库。

构建您的流程

在 Jenkins 用户界面中,转到“新建项目”创建一个流水线。下图所示的流水线被命名为kitops_pipeline。

创建 Jenkins 流水线

创建完成后,配置您的流水线并选择您的 GitHub 项目。在项目 URL 中,添加指向您在 GitHub 上创建的仓库的链接。

设置 Jenkins 流水线 - 构建设置

选择 GitHub hook 触发器作为构建触发器。

设置 Jenkins 流水线 - 源代码管理

在流水线定义中,配置 Jenkins 流水线以从 GitHub 仓库获取 Jenkinsfile。指定仓库 URL、当前正在开发的分支以及 Jenkinsfile 的名称作为脚本路径。

设置 Jenkins 流水线 - 从 Jenkinsfile 构建

流程完成后,请导航至 Jozu Hub 并检查您创建的存储库。您会发现一个新的 ModelKit 已推送至该存储库。

JozuHub 中的最终图像

结论

每次修改后都要手动部署 AI 项目,这非常令人沮丧。借助 Jenkins 和 KitOps,您可以自动构建、测试和部署生产环境中的模型及其依赖项。

KitOps 在打包模型和管理依赖项方面发挥着关键作用。Jenkins 可帮助您在每次变更时自动部署,从而实现更快、更可靠的部署并改善团队协作。

如果您对将 KitOps 集成到您的团队有任何疑问,请加入Discord上的讨论,并立即开始使用 KitOps!

文章来源:https://dev.to/jozu/deploying-ai-projects-through-a-jenkins-pipeline-394b