潍坊哪里做网站好网站开发电脑配置要求
潍坊哪里做网站好,网站开发电脑配置要求,宝塔搭建wordpress访问很慢,server2008做DNS与网站ERNIE-4.5-0.3B-PT部署教程#xff08;CI/CD集成版#xff09;#xff1a;GitHub Actions自动部署流水线
你是不是也遇到过这样的烦恼#xff1f;每次部署一个AI模型#xff0c;都要手动执行一堆命令#xff0c;配置环境、下载模型、启动服务#xff0c;步骤繁琐还容易…ERNIE-4.5-0.3B-PT部署教程CI/CD集成版GitHub Actions自动部署流水线你是不是也遇到过这样的烦恼每次部署一个AI模型都要手动执行一堆命令配置环境、下载模型、启动服务步骤繁琐还容易出错。特别是当模型更新或者需要重新部署时整个过程又要重来一遍费时费力。今天我要分享的就是如何用GitHub Actions为ERNIE-4.5-0.3B-PT模型搭建一个全自动的部署流水线。简单来说就是把你之前手动做的所有事情交给GitHub自动完成。你只需要把代码推送到仓库剩下的GitHub都会帮你搞定——自动部署模型、启动服务甚至还能自动测试。这篇文章会手把手带你完成整个流程从零开始搭建一个完整的CI/CD持续集成/持续部署系统。即使你之前没接触过GitHub Actions也能跟着一步步做出来。1. 环境准备与项目初始化在开始之前我们先明确一下这个教程的目标创建一个能够自动部署ERNIE-4.5-0.3B-PT模型的GitHub Actions工作流。1.1 你需要准备什么GitHub账号这是使用GitHub Actions的基础基本的Git使用知识知道怎么克隆仓库、提交代码、推送代码对Docker有基本了解知道镜像和容器的概念就行一个可以运行模型的服务器或云服务比如阿里云、腾讯云、AWS等或者你自己的服务器1.2 创建项目仓库首先我们需要在GitHub上创建一个新的仓库来存放我们的项目代码。登录GitHub点击右上角的号选择New repository给仓库起个名字比如ernie-4.5-deployment添加描述ERNIE-4.5-0.3B-PT模型的自动部署流水线选择公开Public或私有Private根据你的需要勾选Add a README file点击Create repository创建完成后把仓库克隆到本地git clone https://github.com/你的用户名/ernie-4.5-deployment.git cd ernie-4.5-deployment2. 理解ERNIE-4.5-0.3B-PT模型在开始搭建部署流水线之前我们先简单了解一下我们要部署的模型。2.1 模型简介ERNIE 4.5是百度推出的新一代大语言模型我们今天要部署的是其中的0.3B参数版本PT表示预训练版本。虽然参数规模相对较小但它在很多任务上表现不错而且部署起来对硬件要求不高。这个模型有几个特点支持文本生成和理解基于vLLM进行高效推理可以用Chainlit构建交互式前端部署相对简单适合学习和实验2.2 部署架构我们的部署方案包含三个主要部分模型服务使用vLLM部署ERNIE-4.5-0.3B-PT提供API接口前端界面使用Chainlit构建Web界面方便交互自动化流水线使用GitHub Actions实现一键部署整个架构是这样的GitHub Actions检测到代码变更 → 自动构建Docker镜像 → 推送到镜像仓库 → 在目标服务器上拉取镜像并启动服务。3. 创建基础部署文件在搭建自动化流水线之前我们先创建一些基础文件这些文件定义了如何部署我们的模型。3.1 创建DockerfileDockerfile定义了如何构建包含模型和服务的容器镜像。在项目根目录创建Dockerfile文件# 使用Python 3.9作为基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 安装系统依赖 RUN apt-get update apt-get install -y \ git \ curl \ rm -rf /var/lib/apt/lists/* # 复制依赖文件 COPY requirements.txt . # 安装Python依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 创建日志目录 RUN mkdir -p /root/workspace # 暴露端口 EXPOSE 8000 7860 # 启动脚本 COPY start.sh . RUN chmod x start.sh # 设置启动命令 CMD [./start.sh]3.2 创建启动脚本创建start.sh启动脚本#!/bin/bash # 启动vLLM服务后台运行 echo 启动vLLM服务... python -m vllm.entrypoints.openai.api_server \ --model baidu/ernie-4.5-0.3b-pt \ --host 0.0.0.0 \ --port 8000 \ --max-model-len 4096 \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ /root/workspace/llm.log 21 # 等待vLLM服务启动 echo 等待vLLM服务启动... sleep 30 # 检查vLLM服务是否启动成功 if curl -s http://localhost:8000/v1/models /dev/null; then echo vLLM服务启动成功 else echo vLLM服务启动失败查看日志 cat /root/workspace/llm.log exit 1 fi # 启动Chainlit前端 echo 启动Chainlit前端... chainlit run app.py -h 0.0.0.0 -p 78603.3 创建Chainlit应用创建app.py文件这是Chainlit的前端应用import chainlit as cl import openai import os # 配置OpenAI客户端连接到本地vLLM服务 client openai.OpenAI( base_urlhttp://localhost:8000/v1, api_keynot-needed ) cl.on_message async def main(message: cl.Message): # 显示加载指示器 msg cl.Message(content) await msg.send() try: # 调用vLLM API response client.chat.completions.create( modelbaidu/ernie-4.5-0.3b-pt, messages[ {role: system, content: 你是一个有帮助的AI助手。}, {role: user, content: message.content} ], temperature0.7, max_tokens1024 ) # 获取回复内容 reply response.choices[0].message.content # 更新消息内容 msg.content reply await msg.update() except Exception as e: error_msg f请求失败{str(e)} msg.content error_msg await msg.update() cl.on_chat_start async def start(): await cl.Message(content你好我是ERNIE-4.5-0.3B-PT模型有什么可以帮你的吗).send()3.4 创建依赖文件创建requirements.txt文件vllm0.3.0 chainlit1.0.0 openai1.0.0 fastapi0.104.0 uvicorn0.24.0 httpx0.25.03.5 创建配置文件创建.env.example环境变量示例文件# 模型配置 MODEL_NAMEbaidu/ernie-4.5-0.3b-pt VLLM_HOST0.0.0.0 VLLM_PORT8000 CHAINLIT_PORT7860 # 服务器配置在GitHub Secrets中设置 DEPLOY_HOSTyour-server-ip DEPLOY_USERyour-username DEPLOY_SSH_KEYyour-ssh-private-key4. 配置GitHub Actions自动化流水线现在到了最核心的部分——配置GitHub Actions工作流。这个工作流会自动完成构建、测试、部署的全过程。4.1 创建工作流目录在项目根目录创建.github/workflows/目录mkdir -p .github/workflows4.2 创建主工作流文件在.github/workflows/目录下创建deploy.yml文件name: Deploy ERNIE-4.5 Model on: push: branches: [ main ] pull_request: branches: [ main ] workflow_dispatch: # 允许手动触发 jobs: test-and-build: runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkoutv3 - name: 设置Python环境 uses: actions/setup-pythonv4 with: python-version: 3.9 - name: 安装依赖 run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: 代码质量检查 run: | echo 运行代码检查... # 这里可以添加代码检查工具如flake8、black等 - name: 构建Docker镜像 run: | echo 构建Docker镜像... docker build -t ernie-4.5-model:latest . - name: 运行容器测试 run: | echo 启动测试容器... docker run -d -p 8000:8000 -p 7860:7860 --name test-ernie ernie-4.5-model:latest sleep 40 echo 测试vLLM服务... if curl -s http://localhost:8000/v1/models | grep -q ernie; then echo vLLM服务测试通过 else echo vLLM服务测试失败 docker logs test-ernie exit 1 fi echo 清理测试容器... docker stop test-ernie docker rm test-ernie deploy: needs: test-and-build runs-on: ubuntu-latest if: github.event_name push github.ref refs/heads/main steps: - name: 检出代码 uses: actions/checkoutv3 - name: 配置SSH run: | mkdir -p ~/.ssh echo ${{ secrets.DEPLOY_SSH_KEY }} ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa # 添加服务器到known_hosts ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} ~/.ssh/known_hosts - name: 部署到服务器 run: | echo 开始部署到服务器... # 创建部署脚本 cat deploy.sh EOF #!/bin/bash echo 停止现有容器... docker stop ernie-4.5-container 2/dev/null || true docker rm ernie-4.5-container 2/dev/null || true echo 拉取最新镜像... docker pull your-dockerhub-username/ernie-4.5-model:latest echo 启动新容器... docker run -d \ --name ernie-4.5-container \ --restart unless-stopped \ -p 8000:8000 \ -p 7860:7860 \ -v /root/workspace:/root/workspace \ your-dockerhub-username/ernie-4.5-model:latest echo 等待服务启动... sleep 30 echo 检查服务状态... if curl -s http://localhost:8000/v1/models /dev/null; then echo 部署成功 echo vLLM API地址: http://$HOSTNAME:8000 echo Chainlit界面: http://$HOSTNAME:7860 else echo 部署失败查看日志... docker logs ernie-4.5-container exit 1 fi EOF # 上传并执行部署脚本 scp deploy.sh ${{ secrets.DEPLOY_USER }}${{ secrets.DEPLOY_HOST }}:/tmp/ ssh ${{ secrets.DEPLOY_USER }}${{ secrets.DEPLOY_HOST }} chmod x /tmp/deploy.sh /tmp/deploy.sh - name: 发送部署通知 if: success() run: | echo 部署完成 echo 服务地址http://${{ secrets.DEPLOY_HOST }}:78604.3 创建Docker镜像构建工作流可选如果你想把镜像推送到Docker Hub可以创建另一个工作流文件docker-build.ymlname: Build and Push Docker Image on: push: branches: [ main ] tags: [ v* ] jobs: build-and-push: runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkoutv3 - name: 登录Docker Hub uses: docker/login-actionv2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: 构建并推送Docker镜像 uses: docker/build-push-actionv4 with: context: . push: true tags: | ${{ secrets.DOCKER_USERNAME }}/ernie-4.5-model:latest ${{ secrets.DOCKER_USERNAME }}/ernie-4.5-model:${{ github.sha }}5. 配置GitHub SecretsGitHub Secrets是用来安全存储敏感信息的地方比如服务器密码、API密钥等。我们需要配置几个关键的Secrets。5.1 添加SSH相关Secrets进入你的GitHub仓库点击Settings → Secrets and variables → Actions点击New repository secret需要添加的SecretsDEPLOY_HOST你的服务器IP地址DEPLOY_USER服务器登录用户名如rootDEPLOY_SSH_KEY服务器的SSH私钥5.2 生成SSH密钥对如果你还没有SSH密钥可以在服务器上生成# 在服务器上执行 ssh-keygen -t rsa -b 4096 -C github-actions-deploy # 一路回车使用默认设置 # 查看公钥 cat ~/.ssh/id_rsa.pub # 将公钥添加到authorized_keys cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 查看私钥复制这个到GitHub Secrets cat ~/.ssh/id_rsa5.3 添加Docker Hub Secrets可选如果你使用Docker HubDOCKER_USERNAME你的Docker Hub用户名DOCKER_PASSWORD你的Docker Hub密码或访问令牌6. 服务器环境准备在自动化部署之前我们需要在目标服务器上做一些准备工作。6.1 安装Docker在服务器上安装Docker# 更新系统包 sudo apt-get update # 安装Docker依赖 sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # 添加Docker仓库 sudo add-apt-repository \ deb [archamd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable # 安装Docker sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 启动Docker服务 sudo systemctl start docker sudo systemctl enable docker # 验证安装 sudo docker --version6.2 配置防火墙开放必要的端口# 开放8000端口vLLM API sudo ufw allow 8000/tcp # 开放7860端口Chainlit前端 sudo ufw allow 7860/tcp # 开放22端口SSH sudo ufw allow 22/tcp # 启用防火墙 sudo ufw enable # 查看防火墙状态 sudo ufw status6.3 创建工作目录# 创建工作目录 mkdir -p /root/workspace chmod 755 /root/workspace # 创建日志文件 touch /root/workspace/llm.log chmod 644 /root/workspace/llm.log7. 测试自动化部署现在一切准备就绪我们来测试一下整个自动化部署流程。7.1 提交代码到GitHub# 添加所有文件 git add . # 提交更改 git commit -m 初始提交添加ERNIE-4.5部署文件 # 推送到GitHub git push origin main7.2 查看GitHub Actions运行状态进入你的GitHub仓库点击Actions标签页你应该能看到Deploy ERNIE-4.5 Model工作流正在运行点击进入可以查看详细日志7.3 手动触发部署如果需要如果你不想等待代码推送也可以手动触发部署进入仓库的Actions页面选择Deploy ERNIE-4.5 Model工作流点击Run workflow选择分支默认main点击Run workflow7.4 验证部署结果部署完成后可以通过以下方式验证检查vLLM APIcurl http://你的服务器IP:8000/v1/models应该返回模型信息访问Chainlit界面 在浏览器中打开http://你的服务器IP:7860应该能看到聊天界面查看服务器日志# 在服务器上执行 docker logs ernie-4.5-container # 查看模型日志 cat /root/workspace/llm.log8. 使用与维护8.1 日常使用部署完成后你可以通过以下方式使用Web界面访问http://服务器IP:7860直接聊天API调用通过vLLM的OpenAI兼容API调用import openai client openai.OpenAI( base_urlhttp://服务器IP:8000/v1, api_keynot-needed ) response client.chat.completions.create( modelbaidu/ernie-4.5-0.3b-pt, messages[ {role: user, content: 你好介绍一下你自己} ] ) print(response.choices[0].message.content)8.2 更新模型或代码当需要更新时只需要修改本地代码提交并推送到GitHubGitHub Actions会自动完成部署# 修改代码后 git add . git commit -m 更新优化部署配置 git push origin main8.3 监控与日志查看实时日志# 查看容器日志 docker logs -f ernie-4.5-container # 查看模型加载日志 tail -f /root/workspace/llm.log监控资源使用# 查看容器资源使用 docker stats ernie-4.5-container # 查看服务器资源 htop8.4 故障排除常见问题及解决方法服务启动失败# 检查端口占用 netstat -tlnp | grep :8000 netstat -tlnp | grep :7860 # 重启容器 docker restart ernie-4.5-container模型加载慢检查网络连接确保服务器有足够内存首次加载需要下载模型耐心等待API无法访问# 检查防火墙 sudo ufw status # 检查服务状态 curl -v http://localhost:8000/v1/models9. 总结通过这个教程我们成功搭建了一个完整的ERNIE-4.5-0.3B-PT模型自动化部署流水线。让我们回顾一下关键点9.1 我们实现了什么全自动部署从代码推送到服务上线完全自动化持续集成每次代码变更都会自动测试和构建一键部署手动触发或自动触发部署完整的监控日志、状态检查、故障恢复易于维护配置即代码版本控制所有部署配置9.2 这个方案的优势节省时间部署过程从手动几十分钟缩短到自动几分钟减少错误自动化流程避免了人为操作失误易于复制同样的配置可以在多台服务器上使用便于协作团队成员都可以通过GitHub参与可追溯每次部署都有完整的日志记录9.3 下一步可以做什么如果你想让这个部署方案更完善可以考虑添加更多测试单元测试、集成测试、性能测试实现蓝绿部署零停机时间更新添加监控告警服务异常时自动通知支持多环境开发、测试、生产环境分离优化镜像大小使用多阶段构建减小镜像体积9.4 最后的建议对于刚开始接触自动化部署的朋友我的建议是从小开始先实现基本功能再逐步完善多测试在本地充分测试后再推送到生产保持简单不要过度设计满足当前需求就好文档化好的文档能让维护更容易定期回顾定期检查工作流优化改进自动化部署看起来复杂但一旦搭建起来它会为你节省大量时间让你更专注于模型开发和优化而不是重复的部署工作。希望这个教程能帮助你迈出自动化部署的第一步获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。