SmolVLA部署教程:start.sh脚本执行权限设置与后台服务守护配置 SmolVLA部署教程start.sh脚本执行权限设置与后台服务守护配置1. 项目简介SmolVLA是一个专门为机器人技术设计的视觉-语言-动作模型它的特点是小巧高效不需要特别昂贵的硬件就能运行。简单来说这个模型能让机器人看懂图像、理解语言指令然后做出相应的动作。想象一下你告诉机器人“把红色的方块拿起来放到蓝色的盒子里”机器人通过摄像头看到周围环境然后就能准确执行这个任务。SmolVLA就是实现这个功能的核心大脑。这个Web界面让你不需要懂复杂的编程就能直接体验这个智能机器人的能力。你上传几张图片输入一些指令点击按钮就能看到机器人应该怎么动作。2. 环境准备与快速启动2.1 系统要求在开始之前我们先看看需要准备什么操作系统Linux系统Ubuntu 20.04或更高版本推荐Python版本Python 3.8或更高版本硬件要求最低8GB内存支持CUDA的GPU如RTX 2060推荐16GB内存RTX 4090或同等性能GPU如果没有GPU也可以用CPU运行只是速度会慢一些2.2 快速启动方法如果你只是想快速体验一下可以直接用这个简单的方法# 进入项目目录 cd /root/smolvla_base # 启动服务 python /root/smolvla_base/app.py等几秒钟你会看到类似这样的输出Running on local URL: http://0.0.0.0:7860这时候打开浏览器访问http://localhost:7860就能看到界面了。2.3 检查依赖是否安装有时候直接运行可能会报错因为缺少一些必要的软件包。你可以先检查一下# 检查Python版本 python --version # 检查pip是否安装 pip --version # 安装必要的包 pip install torch gradio numpy pillow num2words如果一切正常你应该能看到Python版本信息并且pip能正常工作。3. start.sh脚本权限设置详解3.1 为什么需要设置权限在Linux系统中每个文件都有权限设置就像门锁一样。脚本文件比如start.sh需要有“执行权限”才能像程序一样运行。如果没有设置正确的权限当你尝试运行脚本时系统会告诉你“权限被拒绝”。这就像你拿到了钥匙但钥匙没权限开锁一样。3.2 查看当前权限首先我们看看start.sh文件现在的权限状态# 进入项目目录 cd /root/smolvla_base # 查看文件详细信息 ls -la start.sh你会看到类似这样的输出-rw-r--r-- 1 root root 245 Jan 30 10:00 start.sh我来解释一下这个输出第一个字符-表示这是普通文件接下来的9个字符rw-r--r--就是权限信息rw-文件所有者root可以读和写r--同组用户只能读r--其他用户也只能读注意没有x说明谁都不能执行这个文件3.3 设置执行权限现在我们来给这个脚本加上执行权限# 方法1给所有用户执行权限 chmod x start.sh # 或者方法2只给文件所有者执行权限 chmod ux start.sh我推荐用第一种方法chmod x这样最简单直接。设置完后再查看一下ls -la start.sh现在你应该能看到-rwxr-xr-x 1 root root 245 Jan 30 10:00 start.sh看到那个x了吗现在文件有了执行权限rwx表示可以读、写、执行。3.4 理解chmod命令chmod是 change mode 的缩写用来改变文件模式也就是权限。这里有几个常用的用法# 给所有人所有权限读、写、执行 chmod 777 start.sh # 给所有者所有权限其他人只能读和执行 chmod 755 start.sh # 给所有者读、写、执行同组读、执行其他人无权限 chmod 750 start.sh # 符号表示法更直观 chmod urwx,grx,o start.sh对于我们的start.sh脚本通常755或ux就足够了。3.5 测试脚本是否能运行设置好权限后我们来测试一下# 直接运行脚本 ./start.sh # 或者指定解释器运行 bash start.sh如果脚本内容正确应该能正常启动服务。如果看到错误信息可能是脚本内容有问题我们接下来看看怎么检查。4. start.sh脚本内容解析4.1 查看脚本内容让我们先看看start.sh里面写了什么# 查看脚本内容 cat start.sh一个典型的start.sh脚本可能长这样#!/bin/bash # 设置环境变量 export HF_HOME/root/.cache export HUGGINGFACE_HUB_CACHE/root/ai-models export XFORMERS_FORCE_DISABLE_TRITON1 # 进入项目目录 cd /root/smolvla_base # 安装依赖如果需要 pip install -r requirements.txt # 启动服务 python app.py4.2 脚本各部分解释我来逐行解释一下#!/bin/bash这行告诉系统用哪个程序来运行这个脚本#!叫做 shebang后面跟解释器的路径/bin/bash是最常用的shell解释器环境变量设置export HF_HOME/root/.cache设置Hugging Face缓存目录export HUGGINGFACE_HUB_CACHE/root/ai-models设置模型下载目录这些设置让程序知道去哪里找模型文件进入目录cd /root/smolvla_base切换到项目目录这样后面的命令都在正确的目录下执行安装依赖pip install -r requirements.txt安装需要的Python包-r表示从文件读取要安装的包列表启动服务python app.py运行主程序这就是启动Web界面的命令4.3 常见脚本问题解决有时候脚本运行不了可能是这些问题问题1脚本格式不对# 检查脚本格式 file start.sh # 如果显示CRLF line terminators需要转换 dos2unix start.shWindows和Linux的换行符不同用dos2unix可以转换。问题2依赖没安装# 手动安装依赖 pip install lerobot[smolvla] torch gradio numpy pillow num2words问题3路径不对# 检查路径是否存在 ls -la /root/smolvla_base/ # 如果不存在可能需要重新下载或解压5. 后台服务守护配置5.1 为什么需要后台运行当你直接在终端运行python app.py时这个程序会占用当前的终端。如果你关闭终端或者断开连接程序就会停止。后台运行就是为了解决这个问题——让服务一直在后台运行不受终端关闭的影响。5.2 使用nohup简单后台运行最简单的后台运行方法是使用nohup# 进入项目目录 cd /root/smolvla_base # 使用nohup后台运行 nohup python app.py smolvla.log 21 # 查看进程是否在运行 ps aux | grep app.py # 查看输出日志 tail -f smolvla.log让我解释一下这个命令nohup让程序忽略挂起信号即使终端关闭也不停止 smolvla.log把正常输出保存到日志文件21把错误输出也重定向到同一个日志文件在后台运行ps aux | grep app.py查看进程是否在运行tail -f smolvla.log实时查看日志输出5.3 使用screen或tmux如果你需要经常查看和控制后台程序可以用screen或tmux# 安装screen apt-get install screen # 启动一个新的screen会话 screen -S smolvla # 在screen中启动服务 cd /root/smolvla_base python app.py # 按CtrlA然后按D分离会话程序继续运行 # 重新连接会话 screen -r smolvla # 查看所有screen会话 screen -lsscreen的好处是你可以随时重新连接看到实时的输出就像从来没有离开过一样。5.4 配置系统服务推荐对于长期运行的服务最好配置成系统服务步骤1创建服务文件sudo nano /etc/systemd/system/smolvla.service步骤2写入服务配置[Unit] DescriptionSmolVLA Web Interface Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/root/smolvla_base EnvironmentHF_HOME/root/.cache EnvironmentHUGGINGFACE_HUB_CACHE/root/ai-models EnvironmentXFORMERS_FORCE_DISABLE_TRITON1 ExecStart/usr/bin/python3 app.py Restartalways RestartSec10 [Install] WantedBymulti-user.target步骤3启用并启动服务# 重新加载systemd配置 sudo systemctl daemon-reload # 启用服务开机自启 sudo systemctl enable smolvla.service # 启动服务 sudo systemctl start smolvla.service # 查看服务状态 sudo systemctl status smolvla.service # 查看日志 sudo journalctl -u smolvla.service -f5.5 服务管理常用命令配置成系统服务后管理起来很方便# 启动服务 sudo systemctl start smolvla # 停止服务 sudo systemctl stop smolvla # 重启服务 sudo systemctl restart smolvla # 查看状态 sudo systemctl status smolvla # 查看日志 sudo journalctl -u smolvla -n 50 # 最近50行 sudo journalctl -u smolvla -f # 实时查看 # 禁用开机自启 sudo systemctl disable smolvla6. 完整部署流程6.1 一步一步完整部署如果你是从头开始部署可以按照这个流程# 1. 克隆或下载项目如果有的话 # 假设项目已经在 /root/smolvla_base # 2. 进入项目目录 cd /root/smolvla_base # 3. 设置脚本权限 chmod x start.sh # 4. 安装依赖 pip install -r requirements.txt # 或者手动安装 pip install lerobot[smolvla] torch gradio numpy pillow num2words # 5. 设置环境变量 export HF_HOME/root/.cache export HUGGINGFACE_HUB_CACHE/root/ai-models # 6. 测试直接运行 python app.py # 按CtrlC停止测试 # 7. 配置系统服务 sudo nano /etc/systemd/system/smolvla.service # 粘贴上面的服务配置内容 # 8. 启动服务 sudo systemctl daemon-reload sudo systemctl enable smolvla sudo systemctl start smolvla # 9. 检查是否运行 sudo systemctl status smolvla netstat -tlnp | grep 7860 # 10. 访问服务 # 打开浏览器访问 http://你的服务器IP:78606.2 一键部署脚本你可以创建一个更完整的部署脚本#!/bin/bash # deploy_smolvla.sh echo 开始部署SmolVLA... # 检查是否在root目录 if [ ! -d /root/smolvla_base ]; then echo 错误/root/smolvla_base 目录不存在 exit 1 fi cd /root/smolvla_base # 设置权限 chmod x start.sh # 安装依赖 echo 安装依赖... pip install lerobot[smolvla] torch gradio numpy pillow num2words # 创建服务文件 echo 创建系统服务... cat /tmp/smolvla.service EOF [Unit] DescriptionSmolVLA Web Interface Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/root/smolvla_base EnvironmentHF_HOME/root/.cache EnvironmentHUGGINGFACE_HUB_CACHE/root/ai-models ExecStart/usr/bin/python3 app.py Restartalways RestartSec10 [Install] WantedBymulti-user.target EOF sudo mv /tmp/smolvla.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable smolvla sudo systemctl start smolvla echo 部署完成 echo 服务状态 sudo systemctl status smolvla --no-pager echo echo 访问地址http://$(hostname -I | awk {print $1}):7860给这个脚本执行权限并运行chmod x deploy_smolvla.sh ./deploy_smolvla.sh7. 常见问题与解决7.1 权限相关问题问题执行脚本时提示Permission denied# 错误信息 bash: ./start.sh: Permission denied # 解决方法 chmod x start.sh ls -la start.sh # 确认有x权限问题脚本能执行但报错# 查看具体错误 bash -x start.sh # 显示每一步执行过程 # 或者 ./start.sh 21 | tee error.log7.2 端口冲突问题问题端口7860已被占用# 查看哪个程序占用了7860端口 sudo lsof -i :7860 sudo netstat -tlnp | grep 7860 # 解决方法1停止占用程序 sudo kill -9 进程ID # 解决方法2修改SmolVLA使用其他端口 # 修改app.py找到端口设置改为其他端口如78617.3 模型加载问题问题模型下载失败或加载慢# 设置镜像加速如果在中国 export HF_ENDPOINThttps://hf-mirror.com # 或者手动下载模型 # 1. 访问 https://huggingface.co/lerobot/smolvla_base # 2. 下载所有文件到 /root/ai-models/lerobot/smolvla_base/ # 3. 确保文件结构正确问题CUDA不可用# 检查CUDA python -c import torch; print(torch.cuda.is_available()) # 如果返回False可能是 # 1. 没有NVIDIA显卡 # 2. 没有安装CUDA驱动 # 3. PyTorch版本不对 # 安装带CUDA的PyTorch pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1187.4 服务管理问题问题服务启动失败# 查看详细错误信息 sudo journalctl -u smolvla -n 100 # 常见原因 # 1. 路径不对检查WorkingDirectory # 2. 权限不足检查User设置 # 3. 依赖缺失查看日志中的ImportError问题服务运行但无法访问# 检查服务是否在运行 sudo systemctl status smolvla # 检查端口监听 sudo netstat -tlnp | grep 7860 # 检查防火墙 sudo ufw status # 如果防火墙开启添加规则 sudo ufw allow 7860/tcp # 检查SELinux如果是CentOS/RHEL getenforce # 如果是Enforcing暂时关闭 sudo setenforce 08. 使用技巧与优化8.1 性能优化建议如果你的服务器资源有限可以尝试这些优化# 在启动前设置环境变量 export PYTORCH_CUDA_ALLOC_CONFmax_split_size_mb:128 export OMP_NUM_THREADS4 # 或者在app.py开头添加 import os os.environ[PYTORCH_CUDA_ALLOC_CONF] max_split_size_mb:128 os.environ[OMP_NUM_THREADS] 48.2 日志管理长期运行的服务需要管理日志# 查看实时日志 sudo journalctl -u smolvla -f # 查看最近100行 sudo journalctl -u smolvla -n 100 # 查看特定时间段的日志 sudo journalctl -u smolvla --since 2024-01-30 09:00:00 --until 2024-01-30 10:00:00 # 清理旧日志保留最近100MB sudo journalctl --vacuum-size100M8.3 监控服务状态你可以创建一个简单的监控脚本#!/bin/bash # monitor_smolvla.sh SERVICEsmolvla PORT7860 # 检查服务状态 if systemctl is-active --quiet $SERVICE; then echo ✅ 服务正在运行 else echo ❌ 服务未运行 echo 尝试重启... sudo systemctl restart $SERVICE fi # 检查端口监听 if netstat -tln | grep -q :$PORT ; then echo ✅ 端口 $PORT 正在监听 else echo ❌ 端口 $PORT 未监听 fi # 检查最近错误 ERRORS$(sudo journalctl -u $SERVICE --since 5 minutes ago | grep -i error | wc -l) if [ $ERRORS -gt 0 ]; then echo ⚠️ 最近5分钟有 $ERRORS 个错误 sudo journalctl -u $SERVICE --since 5 minutes ago | grep -i error | tail -5 fi设置定时任务自动监控# 编辑crontab crontab -e # 添加一行每5分钟检查一次 */5 * * * * /root/monitor_smolvla.sh /var/log/smolvla_monitor.log 219. 总结通过这篇教程你应该已经掌握了SmolVLA的完整部署流程。我们来回顾一下关键步骤权限设置是基础记住chmod x start.sh这个命令没有执行权限脚本就无法运行后台运行很重要使用nohup、screen或系统服务来保持程序长期运行系统服务最稳定对于生产环境配置成systemd服务是最可靠的方式日志是排错利器学会查看和分析日志能快速定位问题实际部署时你可能会遇到各种小问题但大多数都能通过查看日志找到原因。记住这几个有用的命令sudo systemctl status smolvla- 查看服务状态sudo journalctl -u smolvla -f- 实时查看日志netstat -tlnp | grep 7860- 检查端口监听SmolVLA作为一个紧凑的视觉-语言-动作模型在资源有限的设备上也能运行这为机器人应用开发提供了很大的便利。部署好服务后你就可以通过Web界面轻松地测试各种机器人任务了。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。