阿里云ECS部署YOLO教程

1、阿里云注册

在官网注册账号:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

2、ECS配置选择

3、在阿里云 Workbench里为Ubuntu 18/20/22/24安装XFCE桌面(不推荐在这个里面使用,不好用!)

stesteps1、通过VNC连接实例

step2、更新软件包列表和已安装的包

sudo apt update && sudo apt upgrade -y

step3、安装XFCE桌面环境

sudo apt install -y xfce4 xfce4-goodies lightdm lightdm-gtk-greeter

step4、重启ECS实例

sudo reboot

4、ssh连接(十分推荐)

  step1:在控制ECS控制台查看自己的公网IP地址

step2:在vscode进行连接

step3:输入root@公网ip,进行连接

5、安装miniconda

官网:Linux installer - Anaconda

在vscode按下ctrl+shift++打开终端,在终端依次输入miniconda安装指令,如果conda --version有版本号输出,则表明miniconda安装成功:

# 安装包安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行安装脚本
bash Miniconda3-latest-Linux-x86_64.sh
# 安装完成后,关闭当前终端重新打开,或执行:
source ~/.bashrc
# 验证 conda:
conda --version

6、pytorch环境搭建

官方教程:入门 - PyTorch 框架
打开新的终端,依次完成一下步骤:

step1:创建conda环境

conda create --name pytorch python=3.11

step2:激活环境

conda activate pytorch

step3:安装pytorch

pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cpu

7、TensorFlow环境搭建

官网教程:https://tensorflow.google.cn/install/pip#linux

8、使用

8.1让单个Python 脚本在后台持久运行

方法一:使用 nohup 命令(最简单快捷)

nohup 的意思是 "no hang up"(不挂断)。它可以让程序忽略终端关闭的信号,并在后台默默运行。

1. 启动程序

在终端中输入以下命令:

nohup python3 /root/Desktop/server_andian_test/server_ai_multi_stomp.py > /root/Desktop/server_andian_test/run.log 2>&1 &
  • nohup: 让程序在后台运行。

  • > /root/Desktop/server_andian_test/run.log 2>&1: 将原本在屏幕上打印的日志(包括报错)全部保存到 run.log 文件中。

  • &: 将任务放到后台。

2. 检查日志

 按下回车后,你可以放心地关闭终端。如果想看运行状态,随时连上服务器输入:

tail -f /root/Desktop/server_andian_test/run.log

(按 Ctrl+C 退出日志查看,程序依然会在后台运行)

3. 如何停止程序

当你需要更新代码或停止程序时,先找到它的进程 ID (PID):

ps aux | grep server_ai_multi_stomp.py

 找到对应的进程号(通常是第二列的数字),然后杀掉它(假设 PID 是 12345):

kill -9 12345

方法二:使用 tmux 终端复用器(最优雅,强烈推荐)

tmux 相当于在服务器上开了一个“虚拟显示器”。你把程序开在这个虚拟显示器里,关掉你自己的电脑屏幕,虚拟显示器依然在工作。下次连上去,还能看到一模一样的实时运行画面。

1. 安装 tmux(如果尚未安装)
apt-get update && apt-get install tmux -y
2. 创建一个新会话
tmux new -s aiserver

(这时候屏幕会刷新,底部会出现一条绿色的状态栏,说明你已经进入虚拟终端了)

3. 在里面正常运行你的程序
cd /root/Desktop/server_andian_test
python3 server_ai_multi_stomp.py
4. “挂起”并离开(重点!) 让程序跑着,依次按下键盘的:
  1. 先按一下 Ctrl + B(松开)

  2. 然后按一下字母 D (Detach) (此时你会回到原来的普通终端,并看到提示 [detached (from session aiserver)]。现在你可以安全地关闭 SSH 软件了!)

5. 以后如何重新连接回来

        无论过多久,重新连上服务器,输入以下命令就能回到那个实时打印日志的画面:

tmux attach -t aiserver

8.2让多个Python 脚本在后台持久运行

方法一:使用 tmux 的“多窗口”功能(最推荐,所见即所得)

之前已经了解了 tmux 相当于一个虚拟显示器。实际上,这台“虚拟显示器”里面是可以开多个标签页(Window)的,就像浏览器的标签页一样。

1. 新建并进入一个大的 tmux 会话(相当于打开浏览器)
tmux new -s all_my_apps
2. 在第一个标签页,运行第一个程序
cd /root/Desktop/server_andian_test
python3 server_ai_multi_stomp.py
3. 新建一个标签页,运行第二个程序

不要关掉当前程序!依次按下键盘:

  • 先按 Ctrl + B(松开)

  • 然后按字母 C (Create 的意思) (此时屏幕底部的绿条会出现一个 1:bash*,说明你来到了第二个全新的空终端。第一个程序依然在后台 0 号窗口跑着。)

在新窗口里运行你的第二个程序:

python3 another_script.py
4. 如何在多个程序之间切换看日志?
  • 先按 Ctrl + B(松开),然后按数字 0 —— 回到第一个程序

  • 先按 Ctrl + B(松开),然后按数字 1 —— 切换到第二个程序

  • 依此类推...

5. 挂起并离开

        Ctrl + B,松开后按 D (Detach)。此时你可以安全关闭你的 SSH 软件(比如 Xshell、Termius、Putty)。所有的程序都会在各自的窗口里乖乖运行。

方法二:使用 PM2 进程管理器(企业级生产环境首选)

        如果是真正的生产环境,万一服务器半夜重启了,或者代码报错崩溃了,tmuxnohup不会自动重启程序的。这时候专业的程序员会使用 pm2

        虽然它是 Node.js 环境下诞生的,但管理 Python 脚本简直是神器。

1. 安装 PM2 (如果是 Ubuntu/Debian 且有 npm)
apt-get install npm -y
npm install pm2 -g
2. 一键启动所有 Python 程序
pm2 start /root/Desktop/server_andian_test/server_ai_multi_stomp.py --name "AI_Server" --interpreter python3
pm2 start /root/Desktop/server_andian_test/another_script.py --name "Data_Spider" --interpreter python3
3. PM2 的魔法指令
  • pm2 list —— 像看表格一样查看所有正在运行的程序状态(运行时长、内存占用、CPU 占用等)。

  • pm2 logs —— 像看电视分屏一样,同时看所有程序的实时日志。

  • pm2 restart AI_Server —— 重启单个程序。

  • pm2 startup 然后 pm2 save —— 甚至能做到服务器断电重启后,开机自动把你这些程序拉起来

8.3程序热重启-1

        Uvicorn 原生就提供了一个非常强大的“热重载 (Hot Reload)”功能。开启这个功能后,只要按下保存(Ctrl+S)修改了任何 .py 文件,服务器就会在不到 1 秒内自动重启并应用新代码,完全不需要再手动去掐断进程并重新运行。

        开启 reload=True 后,Uvicorn 的监听机制是全局扫描的。它监听的不仅仅是入口文件 main.py,而是当前运行目录及所有子目录下的所有 Python 文件 (*.py)。也就是说,只要不关掉运行着 main.py 的终端,无论什么时候去修改并保存 algorithm_cusum.py(或者是 ai_core.pyconfigv3.py 等等),Uvicorn 都会在不到 1 秒的时间内自动侦测到文件的变动,并替在后台瞬间完成“掐断旧进程 -> 加载新算法代码 -> 重新拉起服务”的全套动作。直接修改算法参数保存,立刻就能在前端看到新算法跑出来的效果,开发体验会极其丝滑。

        只有一点“物理规律”需要注意(关于状态重置):因为热重载本质上是一次真正的服务重启,所以当你按下保存键(Ctrl+S)触发热重载的那一瞬间,会发生以下现象:

  1. 内存清空mainv5.py 里暂存的设备状态、滴漏缓冲池(channel_states)会被重置清空。

  2. WebSocket 瞬间断开:前端大屏与后端的连接会被踢掉。

way1:通过命令行启动(最推荐、最规范)

        以后在开发阶段,不要再使用 python main.py 来启动项目了。请打开终端(Terminal),在文件所在的目录下直接输入以下命令:

uvicorn mainv5:app --host 0.0.0.0 --port 9000 --reload
  • main:app:告诉系统去 mainv5.py 文件里寻找名字叫 app 的 FastAPI 实例。

  • --reload:这就是开启代码变动监听的魔法开关。

way2:直接修改 mainv5.py 底部的代码

        如果习惯直接在 IDE 里点击“运行”按钮,或者习惯输入 python main.py,需要稍微修改一下文件最底部 uvicorn.run 的写法。

        找到文件最底部的这段代码:

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=9000)

        将其精准替换为:

if __name__ == "__main__":
    import uvicorn
    # 极其重要:当开启 reload=True 时,第一个参数不能直接传 app 变量,必须传字符串 "文件名:实例名"
    uvicorn.run("main:app", host="0.0.0.0", port=9000, reload=True)

8.3程序热重启-2

        如果厌倦了每次改一行代码都要等 PyTorch 重新加载 best_model.pth,可以使用jurigged

  • 原理:它基于 Python 的 AST(抽象语法树)和 sys.settrace。当修改了一个函数或类,它会在不重启整个进程的情况下,直接在内存中“热替换”掉旧的代码块。

  • 优势:WebSocket 连接不断,全局变量(如 channel_states)不丢,PyTorch 模型不用重新加载。

  • 用法: 先安装:pip install jurigged ,然后在终端先 cd 进代码所在的真实目录,然后再执行 jurigged,让它和你的代码处于同一层级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值