Ubuntu 20.04服务器部署Youtu-Parsing模型全流程详解

张开发
2026/7/1 22:03:26 15 分钟阅读
Ubuntu 20.04服务器部署Youtu-Parsing模型全流程详解
Ubuntu 20.04服务器部署Youtu-Parsing模型全流程详解最近在折腾一些视频内容理解的项目发现Youtu-Parsing这个模型在视频场景解析上效果挺有意思。但它的部署文档比较零散对于刚接触Linux服务器的新手来说可能会在环境配置上卡壳。今天我就把自己在Ubuntu 20.04 LTS服务器上从零开始部署Youtu-Parsing的完整过程整理出来希望能帮你省点时间。这个教程会覆盖从系统准备到服务稳定运行的全套步骤包括系统更新、Docker环境搭建、CUDA驱动安装、模型下载、依赖配置以及最后用systemd把服务做成守护进程。整个过程我尽量写得详细你跟着一步步来应该都能搞定。1. 准备工作与环境检查在开始安装之前我们先花几分钟把服务器的基础环境理清楚。这一步做好了后面能避免很多莫名其妙的错误。1.1 确认系统版本首先登录你的Ubuntu 20.04服务器打开终端确认一下系统版本。虽然标题说是20.04但最好还是自己看一眼。cat /etc/os-release你会看到类似下面的输出确保VERSION_ID是20.04。NAMEUbuntu VERSION20.04.6 LTS (Focal Fossa) IDubuntu ID_LIKEdebian PRETTY_NAMEUbuntu 20.04.6 LTS VERSION_ID20.041.2 检查硬件与驱动Youtu-Parsing模型推理通常需要GPU加速所以我们得先看看服务器有没有NVIDIA显卡以及驱动装没装。运行下面的命令检查显卡信息lspci | grep -i nvidia如果能看到NVIDIA显卡的信息比如NVIDIA Corporation GA102 [GeForce RTX 3090]那就说明硬件是OK的。接下来检查NVIDIA驱动是否安装nvidia-smi如果这个命令能正常运行并显示出一个包含GPU型号、驱动版本和CUDA版本的表格那驱动就已经装好了。记下显示的CUDA版本比如CUDA Version: 11.7后面安装PyTorch等依赖时会用到。如果提示command not found那就说明需要安装驱动我们会在后面的步骤专门处理。1.3 更新系统与安装基础工具在安装任何新软件之前先把系统更新到最新状态是个好习惯。同时安装一些后续步骤可能需要的工具。# 更新软件包列表 sudo apt update # 升级所有已安装的软件包 sudo apt upgrade -y # 安装一些基础工具比如用于下载的wget、解压的unzip等 sudo apt install -y wget curl git unzip build-essential完成这些我们的基础环境就准备好了。2. 安装Docker与NVIDIA容器工具我推荐使用Docker来部署这样能很好地隔离环境避免和系统其他Python项目产生冲突。如果你习惯用Python虚拟环境我也会在最后提一下但Docker方式更干净。2.1 安装Docker EngineUbuntu 20.04的官方仓库里有Docker但版本可能不是最新的。我们按照Docker官方推荐的方式来安装。# 1. 卸载旧版本如果是全新系统可以跳过 sudo apt remove docker docker-engine docker.io containerd runc # 2. 安装依赖包让apt可以通过HTTPS使用仓库 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common # 3. 添加Docker的官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 4. 设置稳定版仓库 echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 5. 更新apt包索引并安装Docker Engine sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io安装完成后启动Docker服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker验证一下Docker是否安装成功sudo docker run hello-world如果看到Hello from Docker!这类的欢迎信息说明Docker已经可以正常工作了。2.2 安装NVIDIA Container Toolkit为了让Docker容器能使用宿主机的GPU我们需要安装NVIDIA Container Toolkit。# 1. 添加NVIDIA容器仓库的GPG密钥 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list # 2. 更新并安装nvidia-container-toolkit sudo apt update sudo apt install -y nvidia-container-toolkit # 3. 重启Docker服务使配置生效 sudo systemctl restart docker现在你可以测试一下GPU在Docker中是否可用sudo docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu20.04 nvidia-smi这个命令会启动一个带有CUDA 11.7基础镜像的容器并运行nvidia-smi。如果它能输出和宿主机上一样的GPU信息表格恭喜你Docker GPU环境配置成功。3. 获取Youtu-Parsing模型与代码环境搭好了现在我们来把模型和代码弄到服务器上。3.1 克隆模型仓库Youtu-Parsing的代码通常托管在GitHub上。我们找一个目录比如/opt来存放项目。# 切换到/opt目录 cd /opt # 克隆仓库这里以假设的仓库地址为例请替换为实际地址 sudo git clone https://github.com/example/youtu-parsing.git # 进入项目目录 cd youtu-parsing注意https://github.com/example/youtu-parsing.git是一个示例地址。你需要替换成Youtu-Parsing模型真正的GitHub仓库地址。如果项目提供了官方的Dockerfile那部署会更简单。3.2 下载预训练模型权重很多视觉模型都需要下载预训练的权重文件。查看项目根目录的README.md或相关文档找到模型权重的下载链接和存放位置。通常你需要创建一个checkpoints或models目录来存放权重文件。# 在项目根目录下创建存放模型的文件夹 mkdir -p checkpoints # 进入该文件夹 cd checkpoints # 使用wget下载权重文件链接需要替换为真实地址 wget https://example.com/path/to/model.pth请务必将下载链接替换为项目文档中提供的正确链接。有些大型文件可能存放在网盘需要你手动下载后再上传到服务器。4. 构建与运行Docker容器这是核心步骤我们将在一个配置好的Docker容器里运行模型服务。4.1 编写Dockerfile如果项目没有提供Dockerfile我们需要自己创建一个。在项目根目录下新建一个名为Dockerfile的文件。# 使用一个包含CUDA和PyTorch的基础镜像版本需要匹配你之前看到的CUDA版本 FROM pytorch/pytorch:1.13.1-cuda11.7-cudnn8-runtime # 设置工作目录 WORKDIR /workspace # 将当前目录下的代码复制到容器中 COPY . /workspace # 安装Python依赖 # 假设项目有一个requirements.txt文件 RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 安装一些系统依赖根据项目需要调整 RUN apt update apt install -y libgl1-mesa-glx libglib2.0-0 rm -rf /var/lib/apt/lists/* # 暴露服务端口假设模型服务运行在8000端口 EXPOSE 8000 # 设置容器启动时执行的命令假设启动脚本是app.py CMD [python, app.py]这个Dockerfile做了几件事基于PyTorch官方镜像拷贝代码安装Python和系统依赖暴露端口并指定启动命令。你需要根据项目的实际结构来调整比如requirements.txt的文件名、启动脚本的名称和端口号。4.2 构建Docker镜像在包含Dockerfile的目录下执行构建命令# 在项目根目录执行 sudo docker build -t youtu-parsing:latest .-t参数给镜像打上标签youtu-parsing:latest。最后的.表示使用当前目录的Dockerfile。这个过程可能会花点时间因为它要下载基础镜像和安装所有依赖。4.3 运行Docker容器镜像构建成功后就可以运行容器了。sudo docker run -d \ --name youtu-parsing-service \ --gpus all \ -p 8000:8000 \ -v /opt/youtu-parsing/checkpoints:/workspace/checkpoints \ youtu-parsing:latest解释一下参数-d: 后台运行。--name: 给容器起个名字方便管理。--gpus all: 将宿主机的所有GPU分配给容器。-p 8000:8000: 端口映射将容器的8000端口映射到宿主机的8000端口。-v ...: 数据卷挂载。这里把宿主机上存放模型权重的目录挂载到容器内这样即使容器删除权重文件也不会丢失。请根据你的实际路径调整。youtu-parsing:latest: 指定要运行的镜像。运行后可以用下面的命令查看容器状态和日志# 查看容器是否在运行 sudo docker ps # 查看容器日志排查启动问题 sudo docker logs youtu-parsing-service如果日志显示服务已经成功启动并监听在8000端口那么最核心的部署工作就完成了。5. 配置Systemd守护进程让容器在后台运行还不够我们还需要确保服务器重启后这个服务能自动拉起来。这时候systemd就派上用场了。5.1 创建Systemd服务文件创建一个systemd服务配置文件。sudo vim /etc/systemd/system/youtu-parsing.service将以下内容写入文件同样请根据你的实际路径和容器名称进行调整[Unit] DescriptionYoutu-Parsing Model Service Requiresdocker.service Afterdocker.service [Service] Typesimple Restartalways RestartSec10 ExecStart/usr/bin/docker start -a youtu-parsing-service ExecStop/usr/bin/docker stop -t 30 youtu-parsing-service [Install] WantedBymulti-user.target这个配置告诉systemd这个服务依赖docker在docker启动后再启动如果服务意外停止总是重启它启动和停止的命令分别是docker start和docker stop。5.2 启用并启动服务保存文件后执行以下命令# 重新加载systemd配置使其识别新服务 sudo systemctl daemon-reload # 启用服务使其开机自启 sudo systemctl enable youtu-parsing.service # 启动服务 sudo systemctl start youtu-parsing.service现在你可以检查服务的状态了sudo systemctl status youtu-parsing.service如果看到active (running)的字样并且下面没有红色的错误日志说明服务已经作为守护进程成功运行了。以后服务器重启这个服务也会自动启动。6. 验证与测试服务跑起来了我们得验证一下它是否真的在工作并且能正确处理请求。6.1 检查服务端口首先检查模型服务是否在监听我们设定的端口。sudo netstat -tlnp | grep 8000或者用ss命令sudo ss -tlnp | grep 8000你应该能看到一个进程在监听0.0.0.0:8000或:::8000。6.2 发送测试请求根据Youtu-Parsing模型提供的API接口文档构造一个简单的测试请求。假设它提供了一个HTTP API我们可以用curl命令测试。例如如果有一个用于健康检查的/health端点curl http://localhost:8000/health或者如果模型接收一个视频URL或帧图片进行分析# 示例具体格式需参考项目API文档 curl -X POST http://localhost:8000/predict \ -H Content-Type: application/json \ -d {video_url: https://example.com/sample.mp4}如果返回了预期的JSON结果比如包含了场景解析的标签、时间戳等信息那就大功告成了6.3 查看日志排查问题如果测试失败别急查看日志是定位问题最快的方法。# 查看systemd服务日志 sudo journalctl -u youtu-parsing.service -f # 或者直接查看Docker容器日志 sudo docker logs youtu-parsing-service日志通常会告诉你哪里出错了比如依赖缺失、模型权重路径不对、端口冲突等等。7. 总结与后续建议走完这一整套流程你应该已经在Ubuntu 20.04服务器上把Youtu-Parsing模型跑起来了。回顾一下关键步骤其实就是几个准备好带GPU和驱动的Linux环境用Docker把复杂的Python依赖和环境打包最后用systemd让这个服务变成可靠的后台守护进程。用Docker的好处很明显环境隔离迁移方便。如果你团队里其他机器也需要部署直接把镜像导出导入就行省去了重复配置的麻烦。这次用的-v挂载模型权重文件也是个好习惯数据都在宿主机上容器可以随便重建。实际用的时候你可能会根据业务需求调整。比如如果请求量大了可能需要在前端加个Nginx做反向代理和负载均衡或者把服务注册到你们现有的微服务框架里。性能方面可以关注一下GPU的显存使用情况如果视频很长或者并发很高可能需要调整模型加载方式或者做批次优化。如果不想用Docker也可以用Python虚拟环境venv配合Gunicorn这类WSGI服务器来部署步骤会多一些主要是手动安装CUDA、PyTorch这些依赖但原理是相通的。我个人还是更推荐Docker毕竟省心。好了部署部分就聊这么多。模型服务跑起来只是第一步怎么把它集成到你的业务流程里发挥最大价值那又是另一个有趣的话题了。祝你玩得开心。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章