SiameseAOE模型Ubuntu 20.04系统部署全流程详解

📅 发布时间:2026/7/15 1:12:27 👁️ 浏览次数:
SiameseAOE模型Ubuntu 20.04系统部署全流程详解
SiameseAOE模型Ubuntu 20.04系统部署全流程详解最近有不少朋友在问怎么在Linux服务器上把SiameseAOE模型给跑起来。这确实是个挺实用的需求毕竟很多AI项目最终都要部署到生产环境里。我刚好在Ubuntu 20.04上折腾过几次踩过一些坑也总结出了一套比较稳妥的部署流程。今天我就把这套从零开始的部署指南分享给你。你不用有太深的Linux基础跟着步骤一步步来基本上都能搞定。我们会从最基础的系统更新开始一路讲到怎么用systemd让模型服务稳定运行最后还会说说防火墙配置确保你的服务既安全又可靠。1. 准备工作与环境检查在开始安装之前我们先花几分钟时间看看你的服务器是不是准备好了。这一步很重要能帮你避免后面很多莫名其妙的错误。首先确认一下你的系统版本。打开终端输入这个命令lsb_release -a你应该能看到类似这样的输出Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal只要确认是Ubuntu 20.04就行后面的小版本号有点差异也没关系。接下来看看你的服务器有没有GPU。这对AI模型来说很关键有GPU的话速度会快很多。输入lspci | grep -i nvidia如果能看到NVIDIA显卡的信息说明你的服务器有GPU。如果没有输出那可能就是没有GPU或者驱动没装好。不过没关系就算没有GPU模型也能用CPU跑只是速度会慢一些。最后检查一下磁盘空间。模型文件加上各种依赖包大概需要10-15GB的空间。你可以用这个命令看看df -h /确保可用空间足够别装到一半发现磁盘满了那可就麻烦了。2. 系统更新与基础工具安装现在开始正式操作。第一步是把系统更新到最新状态这能确保我们安装的软件都是最新的也最安全。在终端里输入sudo apt update sudo apt upgrade -y这个-y参数的意思是自动回答yes不用我们每次都手动确认。更新过程可能需要几分钟取决于你的网速和需要更新的软件包数量。更新完成后我们需要安装一些基础工具这些工具在后面都会用到sudo apt install -y wget curl git build-essential software-properties-common我来简单说说这些工具是干什么的wget和curl用来从网上下载文件git用来从代码仓库克隆项目build-essential包含编译软件需要的基本工具software-properties-common方便我们添加软件源装完这些基础环境就准备好了。3. Python环境搭建Python是运行AI模型的基础我们需要一个干净、独立的Python环境。这里我推荐用Miniconda它比完整的Anaconda更轻量但功能一样强大。3.1 安装Miniconda首先下载Miniconda的安装脚本wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh下载完成后运行安装脚本bash Miniconda3-latest-Linux-x86_64.sh安装过程中你会看到一些提示信息。基本上一直按回车就行但有几个地方需要注意当问你是否接受许可协议时输入yes当问你是否要初始化conda时也输入yes安装路径用默认的就行安装完成后你需要重新打开终端或者运行这个命令让配置生效source ~/.bashrc验证一下conda是否安装成功conda --version如果能看到版本号比如conda 24.x.x那就说明安装成功了。3.2 创建专用的Python环境我们不建议在系统自带的Python环境里安装模型依赖因为可能会跟其他软件冲突。最好创建一个独立的环境conda create -n siamese_aoe python3.9 -y这里创建了一个名叫siamese_aoe的环境用的是Python 3.9。这个版本比较稳定跟大多数AI库的兼容性都很好。创建完成后激活这个环境conda activate siamese_aoe你会看到命令行前面多了(siamese_aoe)的提示这说明你现在已经在这个环境里了。以后所有跟模型相关的操作都要先激活这个环境。4. GPU驱动与CUDA安装如果你有NVIDIA GPU那这部分很重要。没有GPU的话可以跳过直接看下一节。4.1 安装NVIDIA驱动首先添加NVIDIA的官方软件源sudo add-apt-repository ppa:graphics-drivers/ppa -y sudo apt update然后安装推荐的驱动版本sudo apt install nvidia-driver-535 -y这里的535是目前比较稳定的版本号。安装完成后需要重启服务器sudo reboot重启后验证驱动是否安装成功nvidia-smi如果能看到GPU的信息表格包括显卡型号、驱动版本、CUDA版本等那就说明驱动装好了。4.2 安装CUDA ToolkitCUDA是NVIDIA的并行计算平台很多AI框架都需要它。我们通过conda来安装这样比较干净不会影响系统其他部分。在刚才激活的siamese_aoe环境里运行conda install cudatoolkit11.8 -c nvidia -y这里安装的是CUDA 11.8这个版本跟大多数AI库的兼容性都很好。安装可能需要一些时间因为文件比较大。4.3 安装cuDNNcuDNN是深度神经网络库能大幅提升模型运行速度。同样用conda安装conda install cudnn8.9 -c nvidia -y安装完成后验证一下CUDA和cuDNN是否正常工作。创建一个测试文件test_cuda.pyimport torch print(fPyTorch版本: {torch.__version__}) print(fCUDA是否可用: {torch.cuda.is_available()}) if torch.cuda.is_available(): print(fGPU设备数量: {torch.cuda.device_count()}) print(f当前GPU: {torch.cuda.current_device()}) print(fGPU名称: {torch.cuda.get_device_name(0)})运行这个脚本python test_cuda.py如果看到CUDA可用并且能识别出你的GPU那就说明环境配置成功了。5. 模型依赖包安装基础环境准备好了现在来安装模型运行需要的各种Python包。5.1 安装PyTorchPyTorch是很多AI模型的基础框架。根据你是否有GPU安装命令稍微有点不同。如果你有GPU运行pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118如果没有GPU运行pip install torch torchvision torchaudio安装完成后可以用刚才的测试脚本再验证一次。5.2 安装其他依赖包SiameseAOE模型还需要一些其他的Python包。我建议先创建一个requirements.txt文件把需要的包都列出来transformers4.35.0 sentence-transformers2.2.0 fastapi0.104.0 uvicorn0.24.0 pydantic2.0.0 numpy1.24.0 pandas2.0.0 scikit-learn1.3.0 tqdm4.65.0然后一次性安装pip install -r requirements.txt如果你没有现成的requirements.txt也可以直接安装pip install transformers sentence-transformers fastapi uvicorn pydantic numpy pandas scikit-learn tqdm5.3 验证安装安装完成后写个简单的测试脚本验证一下# test_imports.py import transformers import sentence_transformers import fastapi import torch import numpy as np print(所有包导入成功) print(ftransformers版本: {transformers.__version__}) print(fsentence-transformers版本: {sentence_transformers.__version__}) print(fPyTorch版本: {torch.__version__}) print(fCUDA可用: {torch.cuda.is_available()})运行这个脚本如果没有报错就说明所有依赖包都安装成功了。6. 模型部署与配置现在到了最关键的一步把模型跑起来。6.1 准备模型文件首先创建一个项目目录mkdir ~/siamese_aoe_service cd ~/siamese_aoe_service根据你的实际情况模型文件可能有几种来源从Hugging Face下载如果模型是公开的git lfs install git clone https://huggingface.co/模型路径使用本地模型文件直接把模型文件复制到项目目录里使用sentence-transformers预训练模型代码里直接指定模型名称第一次运行时会自动下载6.2 创建模型服务脚本创建一个app.py文件这是我们的主服务程序# app.py from fastapi import FastAPI, HTTPException from pydantic import BaseModel from sentence_transformers import SentenceTransformer import numpy as np import logging from typing import List # 设置日志 logging.basicConfig(levellogging.INFO) logger logging.getLogger(__name__) # 创建FastAPI应用 app FastAPI(titleSiameseAOE模型服务, version1.0.0) # 定义请求和响应的数据结构 class EmbeddingRequest(BaseModel): texts: List[str] normalize: bool True class EmbeddingResponse(BaseModel): embeddings: List[List[float]] model: str dimensions: int # 加载模型这里以all-MiniLM-L6-v2为例实际替换为你的模型 MODEL_NAME all-MiniLM-L6-v2 # 替换为你的模型路径或名称 logger.info(f正在加载模型: {MODEL_NAME}) model SentenceTransformer(MODEL_NAME) logger.info(模型加载完成) app.get(/) async def root(): 健康检查端点 return { status: healthy, model: MODEL_NAME, service: SiameseAOE Embedding Service } app.get(/health) async def health_check(): 健康检查 return {status: healthy} app.post(/embed, response_modelEmbeddingResponse) async def get_embeddings(request: EmbeddingRequest): 获取文本嵌入向量 try: logger.info(f处理请求文本数量: {len(request.texts)}) # 生成嵌入向量 embeddings model.encode( request.texts, normalize_embeddingsrequest.normalize, show_progress_barFalse ) # 转换为Python列表numpy数组不可JSON序列化 embeddings_list embeddings.tolist() if hasattr(embeddings, tolist) else embeddings return EmbeddingResponse( embeddingsembeddings_list, modelMODEL_NAME, dimensionslen(embeddings_list[0]) if embeddings_list else 0 ) except Exception as e: logger.error(f处理请求时出错: {str(e)}) raise HTTPException(status_code500, detailstr(e)) if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)6.3 测试服务先本地测试一下服务是否能正常启动python app.py你应该能看到类似这样的输出INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000打开另一个终端测试一下APIcurl -X POST http://localhost:8000/embed \ -H Content-Type: application/json \ -d {texts: [这是一个测试文本, 这是另一个测试文本], normalize: true}如果能看到返回的嵌入向量说明服务运行正常。按CtrlC停止测试服务。7. 服务化部署我们不能总是手动运行python app.py需要让服务在后台自动运行并且开机自启。7.1 创建systemd服务文件创建服务配置文件sudo nano /etc/systemd/system/siamese-aoe.service写入以下内容[Unit] DescriptionSiameseAOE Model Service Afternetwork.target [Service] Typesimple User你的用户名 WorkingDirectory/home/你的用户名/siamese_aoe_service EnvironmentPATH/home/你的用户名/miniconda3/envs/siamese_aoe/bin ExecStart/home/你的用户名/miniconda3/envs/siamese_aoe/bin/python app.py Restartalways RestartSec10 StandardOutputsyslog StandardErrorsyslog SyslogIdentifiersiamese-aoe [Install] WantedBymulti-user.target注意替换里面的你的用户名为实际的用户名。7.2 启动并启用服务重新加载systemd配置sudo systemctl daemon-reload启动服务sudo systemctl start siamese-aoe设置开机自启sudo systemctl enable siamese-aoe检查服务状态sudo systemctl status siamese-aoe如果看到active (running)说明服务已经成功在后台运行了。7.3 查看日志服务运行过程中如果需要查看日志sudo journalctl -u siamese-aoe -f按CtrlC退出日志查看。8. 防火墙与安全配置最后一步配置防火墙确保服务安全。8.1 配置UFW防火墙Ubuntu默认使用UFW防火墙。首先查看防火墙状态sudo ufw status如果防火墙是关闭状态我们需要先启用它然后开放必要的端口sudo ufw allow ssh sudo ufw allow 8000/tcp sudo ufw enable这里开放了两个端口ssh用于远程连接8000我们的模型服务端口8.2 测试外部访问从另一台机器测试服务是否可以从外部访问curl -X POST http://你的服务器IP:8000/embed \ -H Content-Type: application/json \ -d {texts: [测试外部访问], normalize: true}如果能看到返回结果说明配置成功。8.3 安全建议使用Nginx反向代理生产环境建议用Nginx做反向代理可以添加HTTPS、限流等功能修改默认端口考虑把8000端口改成其他不常用的端口添加认证如果服务需要对外公开建议添加API密钥认证定期更新记得定期更新系统和Python包修复安全漏洞9. 总结走完这一整套流程你的SiameseAOE模型应该已经在Ubuntu 20.04上稳定运行了。整个过程看起来步骤不少但实际操作起来顺利的话一两个小时就能搞定。我自己的经验是最可能出问题的地方是GPU驱动和CUDA环境那部分。如果你在nvidia-smi或者PyTorch检测CUDA时遇到问题别着急多半是驱动版本或者CUDA版本不匹配。这时候可以试试不同的版本组合或者去网上搜搜具体的错误信息通常都能找到解决方案。服务化部署用systemd是个好习惯这样服务会在后台自动运行即使服务器重启也不用担心。防火墙配置也很重要特别是如果你的服务器有公网IP的话。模型服务跑起来之后你可以根据实际需求调整代码。比如添加更多的API端点、优化性能、或者集成到你的业务系统里。这套部署方法不仅适用于SiameseAOE模型其他类似的AI模型服务也可以参考这个流程。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。