重装系统后的环境快速恢复:包含BERT模型部署的自动化脚本
重装系统后的环境快速恢复包含BERT模型部署的自动化脚本重装系统对开发者来说就像一场“数字大扫除”。清爽是清爽了但看着空空如也的终端和待部署的一长串服务列表那种从头再来的疲惫感瞬间涌上心头。尤其是当你需要快速恢复一个包含BERT这类模型服务的AI开发环境时手动一步步操作既耗时又容易出错。今天我就来分享一个自己用了很久的“后悔药”——一套自动化脚本。它能帮你在重装Ubuntu或者Windows 10 WSL系统后用一条命令快速把Docker环境、BERT文本分割模型服务给“一键召回”。你再也不用翻看陈年的笔记到处搜索安装命令了。1. 脚本能帮你做什么简单来说这个脚本的目标是让你在全新的系统上最快速度恢复一个可用的、包含BERT模型服务的AI开发基础环境。它主要帮你搞定三件麻烦事第一搞定基础环境。无论是Ubuntu原生系统还是Windows下的WSL脚本会自动检测并安装Docker和Docker Compose。这是后续所有服务容器化的基石。第二拉取并启动模型服务。脚本的核心是自动从CSDN星图镜像广场拉取一个预置好的BERT文本分割模型镜像。这个镜像开箱即用里面已经配置好了模型、依赖和API服务。你不需要关心Python版本、PyTorch/TensorFlow冲突、模型下载这些琐事。第三进行基础配置和验证。脚本会设置一些常用的环境变量并在最后自动运行一个简单的测试确保模型服务真的启动成功、可以正常响应了。整个过程你只需要执行一次脚本然后喝杯咖啡等待即可。下面我们就来看看这个脚本具体怎么用。2. 环境准备与脚本解析在运行脚本之前你需要有一个刚装好的、干净的Ubuntu系统建议20.04 LTS或22.04 LTS或者Windows 10/11系统并已安装好WSL 2例如Ubuntu发行版。这个脚本主要用Bash编写在Linux或WSL终端里运行。我也会提供一个Python版本的思路方便习惯Python的朋友参考。我们先看看Bash脚本的核心部分。2.1 脚本工作流程一览整个脚本的执行逻辑就像一条流水线我把它画成了下面这个简单的流程图你可以先有个直观印象graph TD A[开始执行脚本] -- B{检测当前系统}; B --|Ubuntu| C[安装Docker引擎]; B --|WSL| D[配置WSL下的Docker]; C -- E; D -- E[安装Docker Compose]; E -- F[拉取BERT文本分割镜像]; F -- G[创建并启动Docker容器]; G -- H[配置环境变量]; H -- I[运行测试验证服务]; I -- J[输出完成信息];脚本会沿着这个流程自动执行。接下来我们深入到每个关键环节看看代码。2.2 关键代码段解析我们拆解脚本中最核心的几个部分。不用担心即使你不是Bash专家也能看懂它在做什么。第一部分自动安装Docker这是环境搭建的第一步。脚本会先检查系统类型然后采用对应的方法安装Docker。#!/bin/bash # 定义颜色输出让提示信息更友好 GREEN\033[0;32m RED\033[0;31m NC\033[0m # No Color echo -e ${GREEN}[INFO] 开始检测系统环境...${NC} # 检测是否在WSL中 if grep -qi microsoft /proc/version /dev/null; then echo -e ${GREEN}[INFO] 检测到运行在WSL环境下。${NC} IS_WSLtrue else echo -e ${GREEN}[INFO] 检测到运行在原生Linux环境下。${NC} IS_WSLfalse fi # 检查Docker是否已安装 if ! command -v docker /dev/null; then echo -e ${RED}[WARN] Docker未安装开始自动安装...${NC} if [ $IS_WSL false ]; then # Ubuntu原生安装方式 sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo usermod -aG docker $USER echo -e ${GREEN}[INFO] Docker安装完成。请注销并重新登录以使组权限生效。${NC} else # WSL2下的安装指引通常Windows主机已安装Docker Desktop echo -e ${GREEN}[INFO] 请确保Windows主机已安装Docker Desktop并已启用WSL2集成。${NC} echo -e ${GREEN}[INFO] 参考在Docker Desktop设置中勾选 Use the WSL 2 based engine 和 Enable integration with my default WSL distro。${NC} read -p 确认已完成上述配置(y/n): -n 1 -r if [[ $REPLY ~ ^[Yy]$ ]]; then echo -e \n${GREEN}[INFO] 正在配置WSL2与Docker Desktop的连接...${NC} else echo -e \n${RED}[ERROR] 请先配置Docker Desktop。安装中止。${NC} exit 1 fi fi else echo -e ${GREEN}[INFO] Docker已安装。${NC} fi这段代码做了几件事1) 用颜色区分信息、警告和错误让你看得更清楚。2) 自动判断你是在WSL里还是纯Ubuntu里。3) 根据不同的环境采用不同的Docker安装策略。对于WSL它更侧重于引导你完成正确的配置。第二部分拉取并运行BERT镜像这是脚本的灵魂。我们直接从可靠的镜像仓库拉取预置好的模型服务。# 定义要使用的BERT文本分割镜像示例镜像请根据星图镜像广场实际镜像替换 BERT_IMAGEcsdnmirrors/bert-text-segmentation:latest CONTAINER_NAMEbert_seg_service API_PORT5000 echo -e ${GREEN}[INFO] 开始拉取BERT文本分割镜像: ${BERT_IMAGE}${NC} docker pull $BERT_IMAGE # 检查是否已有同名容器在运行有则停止并删除 if [ $(docker ps -aq -f name$CONTAINER_NAME) ]; then echo -e ${YELLOW}[WARN] 发现已存在的容器 $CONTAINER_NAME正在停止并删除...${NC} docker stop $CONTAINER_NAME docker rm $CONTAINER_NAME fi echo -e ${GREEN}[INFO] 启动BERT模型服务容器...${NC} docker run -d \ --name $CONTAINER_NAME \ -p $API_PORT:5000 \ --restart unless-stopped \ $BERT_IMAGE # 等待几秒让容器完全启动 sleep 8这里docker pull命令会从网络下载我们指定的镜像。docker run命令则创建并启动一个容器-d表示后台运行-p 5000:5000把容器内的5000端口映射到宿主机的5000端口这样你就能通过本地地址访问模型API了。--restart unless-stopped让容器能随Docker服务自动重启更稳定。3. 分步实践操作现在我们把完整的脚本组合起来并告诉你如何使用它。3.1 获取并运行完整脚本最简单的方法是我直接把完整的脚本内容贴在这里。你只需要新建一个文件比如叫restore_ai_env.sh把下面的代码全部复制进去然后给它执行权限并运行。#!/bin/bash # # AI开发环境一键恢复脚本 (适用于Ubuntu/WSL2) # 功能安装Docker拉取并启动BERT文本分割模型服务 # set -e # 遇到错误则退出 # 颜色定义 GREEN\033[0;32m YELLOW\033[1;33m RED\033[0;31m BLUE\033[0;34m NC\033[0m echo -e ${BLUE}${NC} echo -e ${BLUE} AI开发环境一键恢复脚本启动 ${NC} echo -e ${BLUE}${NC} # 1. 系统环境检测 echo -e \n${GREEN}[1/5] 检测系统环境...${NC} if grep -qi microsoft /proc/version /dev/null; then echo -e ${GREEN}√${NC} 检测到 WSL2 环境。 IS_WSLtrue else echo -e ${GREEN}√${NC} 检测到 原生Ubuntu 环境。 IS_WSLfalse fi # 2. 安装Docker echo -e \n${GREEN}[2/5] 配置Docker环境...${NC} if ! command -v docker /dev/null; then echo -e ${YELLOW}Docker未安装开始安装...${NC} if [ $IS_WSL false ]; then # Ubuntu 原生安装 sudo apt-get update -qq sudo apt-get install -y -qq apt-transport-https ca-certificates curl software-properties-common /dev/null 21 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - /dev/null 21 sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable -y /dev/null 21 sudo apt-get update -qq sudo apt-get install -y -qq docker-ce docker-ce-cli containerd.io /dev/null 21 sudo usermod -aG docker $USER echo -e ${GREEN}√${NC} Docker安装完成。*请注意需要注销并重新登录才能使docker组权限生效* else # WSL2 环境引导用户配置Docker Desktop echo -e ${YELLOW}请按以下步骤操作${NC} echo -e 1. 在Windows上安装 Docker Desktop (如果尚未安装)。 echo -e 2. 打开 Docker Desktop 设置。 echo -e 3. 在 General 中确保 Use the WSL 2 based engine 已勾选。 echo -e 4. 在 Resources - WSL Integration 中启用对当前WSL发行版的支持。 echo -e 5. 重启 Docker Desktop。 read -p 完成上述步骤后按回车键继续... -r fi else echo -e ${GREEN}√${NC} Docker已安装。 fi # 3. 安装Docker Compose (可选但推荐) echo -e \n${GREEN}[3/5] 配置Docker Compose...${NC} if ! command -v docker-compose /dev/null; then echo -e ${YELLOW}Docker Compose未安装开始安装...${NC} sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose /dev/null 21 sudo chmod x /usr/local/bin/docker-compose echo -e ${GREEN}√${NC} Docker Compose安装完成。 else echo -e ${GREEN}√${NC} Docker Compose已安装。 fi # 4. 拉取并启动BERT模型服务 echo -e \n${GREEN}[4/5] 部署BERT文本分割模型服务...${NC} BERT_IMAGEcsdnmirrors/bert-text-segmentation:latest CONTAINER_NAMEbert_seg_service API_PORT5000 echo -e 拉取镜像: ${BERT_IMAGE} docker pull $BERT_IMAGE if [ $(docker ps -aq -f name$CONTAINER_NAME) ]; then echo -e ${YELLOW}发现旧容器清理中...${NC} docker stop $CONTAINER_NAME /dev/null 21 || true docker rm $CONTAINER_NAME /dev/null 21 || true fi echo -e 启动服务容器 (端口: ${API_PORT})... docker run -d \ --name $CONTAINER_NAME \ -p $API_PORT:5000 \ --restart unless-stopped \ $BERT_IMAGE sleep 5 # 给容器一点启动时间 # 5. 验证与配置 echo -e \n${GREEN}[5/5] 验证服务并配置环境...${NC} # 简单验证服务是否健康 if curl -s -o /dev/null -w %{http_code} http://localhost:$API_PORT/health | grep -q 200; then echo -e ${GREEN}√${NC} BERT模型服务启动成功 else echo -e ${YELLOW}⚠${NC} 服务健康检查未通过可能是启动中请稍后手动检查。 echo -e 使用命令: curl http://localhost:$API_PORT/health fi # 设置环境变量示例可选写入~/.bashrc或~/.zshrc echo -e \n ${GREEN}配置环境变量示例${NC} echo -e export BERT_SEG_API_URL\http://localhost:$API_PORT/predict\ echo -e # 你可以将以上行添加到你的 ~/.bashrc 或 ~/.zshrc 文件中 echo -e \n${BLUE}${NC} echo -e ${BLUE} 脚本执行完毕 ${NC} echo -e ${BLUE}${NC} echo -e ${GREEN}总结${NC} echo -e • Docker环境已就绪。 echo -e • BERT文本分割模型服务已在容器中运行。 echo -e • API服务地址: http://localhost:${API_PORT} echo -e \n${YELLOW}下一步建议${NC} echo -e 1. 尝试访问 http://localhost:${API_PORT}/docs 查看API文档。 echo -e 2. 运行测试命令: curl -X POST http://localhost:${API_PORT}/predict -H Content-Type: application/json -d {\text\:\这是一个测试句子。\} echo -e 3. 如果是原生Ubuntu且首次安装Docker请注销并重新登录以便使用docker命令无需sudo。保存好脚本后打开你的终端依次执行以下命令# 1. 给脚本添加执行权限 chmod x restore_ai_env.sh # 2. 运行脚本如果是WSL确保Docker Desktop已按提示配置好 ./restore_ai_env.sh脚本运行起来后你会在终端看到彩色的步骤提示。整个过程是全自动的从安装Docker到拉取镜像、启动服务最后还会尝试做一个简单的健康检查。你只需要在WSL环境下根据提示去配置一下Docker Desktop的集成选项。3.2 快速上手示例调用你的BERT服务脚本跑完服务就在后台运行了。怎么用呢我们来个最简单的测试。打开一个新的终端窗口不用进容器直接向本地端口发送请求即可。# 测试模型服务是否响应 curl -X POST http://localhost:5000/predict \ -H Content-Type: application/json \ -d {text: 自然语言处理是人工智能的重要分支BERT模型在其中发挥了关键作用。}如果一切正常你会收到一个JSON格式的响应里面包含了文本的分词或分割结果。这就说明你的BERT模型服务已经部署成功可以正常调用了。相比于从零开始安装Python环境、下载模型权重、解决依赖冲突这种方式是不是简单太多了4. 实用技巧与进阶用熟了基础脚本之后你可以根据自己的需求对它进行改造让它更加强大和贴心。技巧一做成真正的“一键”脚本。上面的脚本在WSL环境下还需要手动配置Docker Desktop。你可以写一个Windows PowerShell脚本与它配合。PowerShell脚本负责检查并安装Docker Desktop、配置WSL集成然后再调用WSL内的Bash脚本。这样在Windows上双击一个.ps1文件就能完成从主机到WSL环境的全部配置。技巧二扩展脚本部署更多服务。一个完整的AI开发环境不可能只有一个模型。你可以很容易地扩展这个脚本。比如在拉取BERT镜像的代码后面继续添加拉取其他镜像的命令比如一个Stable Diffusion镜像用于文生图或者一个ChatGLM镜像用于对话。# 示例扩展部署其他服务 echo “拉取并启动文生图服务...” docker run -d --name sd_service -p 7860:7860 csdnmirrors/stable-diffusion-webui:latest echo “拉取并启动大语言模型服务...” docker run -d --name llm_service -p 8000:8000 csdnmirrors/chatglm3:latest技巧三使用Docker Compose管理多服务。当服务多起来时用docker run一个个启动会显得杂乱。更好的方法是使用Docker Compose。你可以创建一个docker-compose.yml文件把所有服务的配置镜像、端口、数据卷都定义在里面。然后脚本只需要做两件事安装Docker Compose然后运行docker-compose up -d。这样所有服务都能以声明式的方式统一管理启动、停止、更新都更方便。技巧四将配置和模型数据持久化。目前模型是打包在镜像里的。如果你有自己的微调模型或需要频繁变更的配置文件可以在docker run命令中使用-v参数将宿主机的目录挂载到容器内。这样即使容器被删除你的数据和配置也还在宿主机上。脚本中可以加入创建这些目录并设置权限的逻辑。5. 常见问题解答在多次使用和分享这个脚本的过程中我遇到了一些常见问题这里列出来供你参考。Q1: 脚本执行到一半出错了怎么办脚本开头设置了set -e这意味着任何命令失败返回非零状态脚本就会停止。这是好事能防止错误累积。你需要查看最后打印的错误信息。最常见的原因是网络问题拉取镜像失败或权限问题安装Docker需要sudo。根据错误提示解决后重新运行脚本即可。脚本设计了幂等性即重复运行是安全的它会检查Docker是否已安装、容器是否已存在。Q2: 在WSL里运行docker命令提示“Cannot connect to the Docker daemon”。这几乎总是因为Docker Desktop没有运行或者WSL集成没有正确配置。请确保Windows上的Docker Desktop应用已经启动。在Docker Desktop设置 - Resources - WSL Integration中已经勾选了你的WSL发行版比如Ubuntu。配置完成后可能需要重启Docker Desktop和WSL终端。Q3: 我想用别的BERT模型镜像或者镜像地址变了怎么修改很简单找到脚本里这一行BERT_IMAGEcsdnmirrors/bert-text-segmentation:latest将等号右边的镜像地址和标签替换成你想要的即可。例如你可以去CSDN星图镜像广场寻找其他更符合你需求的文本处理模型镜像。Q4: 如何查看模型服务的日志如果服务启动后测试调用失败可以查看容器的日志来排查问题。docker logs bert_seg_service如果日志太多可以加上-f参数来实时跟踪日志输出。Q5: 这个脚本会安装特定版本的Docker吗对于Ubuntu系统脚本会添加Docker官方仓库并安装其提供的最新稳定版。如果你想固定某个版本可以修改安装命令例如将sudo apt-get install -y docker-ce改为sudo apt-get install -y docker-ce5:20.10.17~3-0~ubuntu-jammy。6. 总结走完这一趟你会发现重装系统后的环境恢复从一件令人头疼的琐事变成了一个轻松愉快的自动化过程。这个脚本的核心价值不在于它有多复杂的逻辑而在于它把那些重复、易错的步骤固化了下来为你节省了宝贵的时间和精力。我自己的体验是自从有了这套脚本我再也不怕折腾系统了。甚至有时候为了测试我会主动去新建一个干净的虚拟机或WSL实例然后用脚本在十几分钟内搭建起一个可用的AI服务测试环境。这种“召之即来”的感觉极大地提升了开发效率。当然这个脚本只是一个起点。你可以把它当成一个模板根据你自己的技术栈来填充内容——比如加入CUDA驱动检查、conda环境恢复、常用工具链安装等等。把它存到你的云盘或代码仓库里下次需要的时候它就是你的“环境急救包”。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2468404.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!