百度AI Studio无sudo权限下运行PaddleDetection SOLOv2推理全流程踩坑记录

百度 AI Studio 无 sudo 权限下运行 PaddleDetection SOLOv2 推理全过程记录

环境说明

  • 平台:百度 AI Studio(Jupyter 容器环境)
  • 用户:aistudio(无 sudo 权限)
  • 项目:PaddleDetection SOLOv2

一、启动 Tailscale 实现远程 SSH 连接

无 sudo 权限下,使用 userspace 模式运行 Tailscale 守护进程:

bash 复制代码
cd ~/.tail
./d --tun=userspace-networking --socks5-server=localhost:1055 \
  --socket=$HOME/.local/share/.ts/d.sock \
  --statedir=$HOME/.local/share/.ts &

启动后会看到大量日志,末尾出现 NeedsLogin 状态属于正常现象,执行登录命令:

bash 复制代码
./ts --socket=$HOME/.local/share/.ts/d.sock up

点击终端输出的链接,用 GitHub 账号完成认证。

常见警告说明(无需处理):

  • TPM: error opening:容器无硬件 TPM,不影响功能
  • failed to force-set UDP buffer size:无 root 权限,使用内核默认值,仅影响吞吐量
  • Tailscale is stopped:登录前的正常初始状态

二、SSH 密钥配置(无法修改密码)

容器环境 /etc/shadow 只读,passwd 命令会报错:

复制代码
passwd: Authentication token manipulation error

解决方案:使用 SSH 密钥免密登录

本地 Windows 生成密钥对:

powershell 复制代码
ssh-keygen -t ed25519

将公钥写入远程机器:

bash 复制代码
mkdir -p ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

公钥文件位于本地 C:\Users\用户名\.ssh\id_ed25519.pub


三、运行 SOLOv2 推理报错逐步排查

3.1 SyntaxError:Non-ASCII character

报错:

复制代码
SyntaxError: Non-ASCII character '\xe8' in file tools/infer.py on line 201,
but no encoding declared

原因: 项目含有中文注释,Python 2 需要显式声明编码。

修复: 批量为所有 py 文件添加编码声明:

bash 复制代码
grep -rl $'\xe6\|\xe8\|\xe7\|\xe9\|\xe5' /home/aistudio/work/ppdet/ \
  --include="*.py" | while read f; do
  head -1 "$f" | grep -q "coding" || \
    sed -i '1s/^/# -*- coding: utf-8 -*-\n/' "$f"
done

3.2 ImportError:No module named numpy

报错:

复制代码
ImportError: No module named numpy

原因: 当前 Python 环境未安装依赖,且 pip 命令不在 PATH 中。

排查:

bash 复制代码
find / -name "pip*" -type f 2>/dev/null | grep bin

发现系统存在 conda 环境:

复制代码
/opt/conda/envs/python35-paddle120-env/bin/pip

修复: 激活对应 conda 环境:

bash 复制代码
source /opt/conda/etc/profile.d/conda.sh
conda activate python35-paddle120-env

3.3 ImportError:libpython3.7m.so.1.0 not found

报错:

复制代码
ImportError: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

修复: 设置动态库路径后再运行:

bash 复制代码
export LD_LIBRARY_PATH=/opt/conda/envs/python35-paddle120-env/lib:$LD_LIBRARY_PATH

或直接通过 conda activate 激活环境,让 conda 自动处理库路径。


3.4 AssertionError:data() 仅支持静态图模式

报错:

复制代码
AssertionError: In PaddlePaddle 2.x, we turn on dynamic graph mode by default,
and 'data()' is only supported in static graph mode.
So if you want to use this api, please call 'paddle.enable_static()' before this api.

原因: 项目基于 PaddlePaddle 1.x 静态图 API 编写,但环境安装的是 2.x 版本,默认开启动态图模式。

方案一(推荐):tools/infer.py 中添加 paddle.enable_static()

bash 复制代码
sed -i '/from paddle import fluid/i paddle.enable_static()' tools/infer.py

验证修改:

bash 复制代码
head -50 tools/infer.py | grep -n "paddle"

方案二: 降级 PaddlePaddle 至 1.x:

bash 复制代码
pip install paddlepaddle==1.8.5

四、完整运行命令

bash 复制代码
source /opt/conda/etc/profile.d/conda.sh
conda activate python35-paddle120-env
export LD_LIBRARY_PATH=/opt/conda/envs/python35-paddle120-env/lib:$LD_LIBRARY_PATH
cd ~/work
python tools/infer.py -c configs/solov2/solov2_r50_fpn_8gpu_3x.yml \
  --infer_dir=./test_imgs/

总结

问题 原因 解决方案
passwd 报错 容器 /etc/shadow 只读 改用 SSH 密钥认证
Non-ASCII SyntaxError Python 2 需声明编码 sed 批量添加 # -*- coding: utf-8 -*-
pip 找不到 PATH 未包含 conda bin conda activate 激活环境
libpython3.7m.so 缺失 LD_LIBRARY_PATH 未设置 export LD_LIBRARY_PATH=...
data() 静态图报错 PaddlePaddle 1.x 项目跑在 2.x 上 添加 paddle.enable_static()
相关推荐
AEIC学术交流中心2 小时前
【快速EI检索 | SPIE出版】2026 年智能信号与图像处理国际学术会议(ISIP 2026)
人工智能
深圳市九鼎创展科技2 小时前
国产高性能 AIoT 核心板!九鼎创展 Z3576 核心板全面解析(基于瑞芯微 RK3576)
大数据·linux·人工智能·嵌入式硬件·ubuntu
云边云科技_云网融合2 小时前
SD-WAN 专线:为亚马逊云、微软云访问提速的核心逻辑
网络·人工智能·安全·microsoft·架构
GEO行业研究员2 小时前
基于 Milvus 标量过滤与爱搜光年 Schema 的医疗召回优化
人工智能·ai搜索优化·geo优化·医疗geo优化·ai搜索排名·爱搜光年geo
Teacher.chenchong2 小时前
AI支持下的临床医学日常工作、论文撰写、数据分析与可视化、机器学习建模中的实践应用
人工智能
Fxrain2 小时前
[Paper Reading]Diff-Dehazer
人工智能·深度学习·计算机视觉
Data-Miner2 小时前
47页可编辑PPT | MES整合IIOT技术提升企业数字化智造
人工智能
Shining05962 小时前
CPU 并行编程系列《CPU 性能优化导论》
人工智能·学习·其他·性能优化·infinitensor
东离与糖宝2 小时前
Spring Boot 4最新适配指南:Java 21+虚拟线程+AOT编译,冷启动压到100ms内
java·人工智能