制造业实习02-控制下载速度的几个问题

2026-09-09 问题记录

事件:工作区内容丢失,整体重建

现象

前一天(09-08)完成的内容全部消失:

路径 状态
/mnt/WYH/models 整个目录丢失(三个模型全无)
/mnt/WYH/demo/demo-01 丢失,且目录被重命名为 demo-1demo-02demo-2
/mnt/WYH/errors/2026-09-08.md 丢失
/mnt/WYH/data/test_image.png 丢失
demo/README.md 被还原为原始规范内容,自建说明丢失

未丢失(环境仍完好)

  • PPU 驱动与设备:PPU-SMI 1.22,双卡 PPU-ZW810E
  • torch 2.6.0 + cu12.8,torch.cuda.is_available() == True
  • transformers 4.51.3、scipy 1.18.1、scikit-learn 1.9.0
    → 说明 09-08 修复的 numpy/scipy/sklearn ABI 问题未回退
  • modelscope CLI:/usr/local/bin/modelscope

结论

丢失范围仅限工作区文件 ,系统 Python 环境与 PPU 驱动不受影响。

因此重建只需恢复文件,无需重新配置环境或重装修复依赖。

重建动作

  1. 重建 /mnt/WYH/models,用 modelscope 重新下载三个模型
  2. demo-1 下重建三个 infer 脚本(沿用 09-08 已验证版本)
  3. 重建 /mnt/WYH/data/test_image.png(多模态测试图)
  4. 补写本日志与 demo/README.md

教训

  • 重要模型/代码仅存于单机工作区存在丢失风险,建议后续考虑备份或记录重建指令
    (本文档与 demo/README.md 中的下载/运行指令即为重建依据)。
  • infer 脚本应尽量自包含(模型路径、加载要点写进注释),便于丢失后快速重建。

本次遇到的操作问题

1. 下载命令多次未获审批

现象 :连续 3 次执行 modelscope 下载命令返回

Execution Cancelled: Permission request timed out(非明确拒绝)。

原因:命令预计耗时较长(三个模型合计约 13.5 GB),审批弹窗超时无响应。

应对:不再反复重试同一命令(避免空转),改为:

  • 先完成不依赖下载的重建工作(写 infer 脚本、补日志)
  • 将下载拆分为单模型小步执行,便于逐条审批

结果 :拆分后逐条执行均成功。三个模型下载耗时分别为 8s / 28s / 40s,

说明超时与命令实际耗时无关,纯粹是审批弹窗无响应。

后续对耗时命令应拆小、逐条提交,避免长时间等待审批。


重建后验证结果(均通过)

脚本 结果
qwen2.5-0.5b-ppu.py ✅ 输出",从而实现对未知数据的预测或分类。判断正误:A. 正确 B. 错误"
qwen2.5-vl-3b-ppu.py ✅ 图文问答输出"图中有三个形状:一个红色的圆形,一个绿色的矩形,一个黄色的矩形。"
minicpm5-2b-ppu.py ✅ 输出 <think> 思维链后正常回答身份

说明重建后的脚本与模型均可用,09-08 沉淀的加载要点在重建中仍然适用。


下载 CEval / MMLU-Pro 数据集(trickle 限速)过程中的问题

本次按 data/README.md 规范下载(modelscope + trickle -d 5000 -u 5000 + 存 /mnt/WYH/data),

遇到并解决以下问题:

1. trickle 在 Ubuntu 24.04 无安装包

  • apt-get install tricklePackage 'trickle' has no installation candidate(universe 已启用仍无)。
  • 原因:trickle 上游已从 Debian/Ubuntu 24.04 移除。
  • 解决 :源码编译安装(github mariusae/trickle),两个坑:
    1. 编译报 rpc/rpc.h: No such file or directory → 需 apt install libtirpc-dev
      并带 CFLAGS="-I/usr/include/tirpc" LDFLAGS="-ltirpc" 重新 configure。
    2. configure 报 cannot compute suffix of executables
      容器的 LD_LIBRARY_PATH 指向 PPU SDK 库干扰链接测试,用
      env -u LD_LIBRARY_PATH ./configure && make 解决。

2. trickle 报 Could not find overload object(限速不生效)

  • 根因:trickle 只在两个位置找限速库(源码 trickle.c trypaths):

    1. 当前目录下的 trickle-overload.so
    2. /usr/local/lib/trickle/trickle-overload.so(注意多一层 trickle 子目录)
  • 我最初装到 /usr/local/lib/ 少了子目录,且 Makefile 的 libtrickle 规则为空,

    实际产物名为 trickle-overload.so(不是 libtrickle.so)。

  • 解决mkdir -p /usr/local/lib/trickle && cp trickle-overload.so /usr/local/lib/trickle/

  • 验证:trickle -d 100 /bin/true 不再报错即正常;

    "Could not reach trickled" 为正常提示(独立模式限速,无需守护进程)。

  • 标准路径: 大多数常规程序(如 wget, curl)在发起网络请求时,会调用 GNU C 库(libc.so)中封装好的标准 Socket 函数。trickle 就是专门针对这些标准函数进行拦截的。

  • 非标准/异步路径: 现代 Python 程序(如 modelscope download)为了实现高并发,通常会使用异步网络库(如 aiohttp、uvloop 等)。为了追求极致性能,这些底层库可能会:

    自带静态编译的 OpenSSL 等依赖库。

    直接通过底层的系统调用(System Calls)与 Linux 内核交互,而不经过标准的 libc 封装函数。

  • 失效原因: trickle 只能拦截标准的 libc Socket API。如果 Python 的底层网络库绕过了 libc,直接在内核层面收发数据,trickle 就"看"不到这些网络请求,也就无法进行任何干预。

3. modelscope/ceval-exam 下载不到实际数据

  • 现象:只下载 3 个元数据文件(README/加载脚本/dataset_infos.json,共 113KB),无题目。
  • 原因:该仓库是 datasets 脚本式数据集,数据不在仓库内。
  • 解决 :改用 evalscope/ceval(ModelScope 官方评测框架版),52 科目 × dev/val/test parquet,3.6MB。

最终结果

数据集 来源 位置 规模
CEval evalscope/ceval /mnt/WYH/data/ceval 52 科目,dev/val/test parquet
MMLU-Pro modelscope/mmlu-pro /mnt/WYH/data/mmlu-pro test 12032 题 + validation parquet

均以 trickle -d 5000 -u 5000 限速下载,符合 data/README.md 规范。


评测脚本(evaluate.py)批量推理反复崩溃

现象 :旧版 evaluate.py 后台运行时反复报

ValueError: model_kwargs not used: ['token_type_ids'] 或卡死,

demo-1/minicpm5-2b-ppu.py 单条对话始终能跑通。

根因:批量 + padding 路径与 demo 单条路径行为不一致:

  • MiniCPM 的 tokenizer 批量编码时会额外返回 token_type_ids
    Llama 架构的 generate 参数校验会拦下;
  • 强制 min_new_tokens=64 满长度生成属于非官方口径,且掩盖真实输出。

解决 :放弃批量,评测完全复用 demo 已验证的单条推理路径

(单条编码、过滤只留 input_ids/attention_mask、greedy、max_new_tokens=256),

拆分为 eval_qwen2.5.pyeval_minicpm5.py

一次跑通,MiniCPM CEval 56.3% / MMLU-Pro 35.5%。

教训:已有能跑通的代码路径时直接复用,不要另起批量实现重新踩坑。


带宽看门狗 jk.sh 初版误杀平台进程

现象 :dry-run 演练(LIMIT_MB=0)时,jupyter-labLingma

(代码助手后端)被列为嫌疑进程------真跑会杀掉笔记本和 AI 会话。

解决 :白名单补充 lingma/jupyter/jupyter-lab/node/code-server/dsw

等平台进程;并保留"自身及祖先 PID 链绝不 kill"的保护逻辑。


双 nohup / 后台链式启动失败

现象cd X && nohup A > log 2>&1 & nohup B > log2 2>&1 & 一行内启动

多个后台任务时,第二条报 log2: No such file or directory;bench_tp 再次复现。

根因(已定位)cd X && A & B && 的优先级低于 &&

cd X && A 作为整体成为第一个后台子任务,cd 只在该子 shell 内生效

B 仍在原工作目录执行,相对路径 results/... 找不到。第一条任务的

重定向随 cd 后的子 shell 正常,所以只有第二条失败。

解决 :后台任务一律绝对路径 + 分行单独启动 ;串行更省心(本次 bench

改串行单卡跑通)。另 tail -3 f1 f2 多文件报 invalid context,用 tail -n 3


下载 MATH-500 / LiveCodeBench / IFBench 过程中的带宽问题

1. /mnt/WYH 是 ossfs2(OSS 网络挂载),直接下载必超限

  • 现象:trickle + modelscope 下载 LiveCodeBench 时,watchdog 实测
    12.5MB/s (modelscope 进度条显示 2.9MB/s),三连击被 SIGTERM;
    curl --limit-rate 3M 直接输出到 /mnt/WYH 仍测得 12.5MB/s。
  • 根因:df -T 确认 /mnt/WYH 类型为 fuse.ossfs2------往里写文件 =
    数据同步上传 OSS ,加上下载流量本身,网卡上是双份甚至更多
    (ossfs 分片 multipart 还有重传放大,实测比 4 倍)。
  • 教训:大文件严禁直接下到 /mnt/WYH ,先下本地盘(/tmp,overlay 有
    751GB),再限速搬运上去。

2. trickle 对 modelscope 完全失效(实测补充)

  • trickle 包着 modelscope 时,app 层写入 2.9MB/s,网卡层却是 12.5MB/s------
    modelscope 异步多分片下载绕过 libc socket 拦截,trickle 形同虚设。
  • 小文件(<15MB)两秒内下完、凑不满三连击,可以侥幸直接用;
    大文件必须换 curl --limit-rate(curl 自己按读节奏 sleep,可靠)。

3. curl 直链下载的坑

  • 不带 -L:GET 拿到 302 重定向,把空 body 存成 0 字节文件且退出码为 0,
    极具迷惑性(HEAD 探测时带了 -L 所以没暴露)。直链下载必须 -sSL
  • 限速 3M 下载到本地 /tmp 后 watchdog 仍测得 ~2.2 倍(6.6-7.6MB/s):
    网卡 rx/tx 都计入 + 采样周期偏差的系统性放大。降到 --limit-rate 1500K
    后 watchdog 视角 ~2-3MB/s,全程无三连击。
  • ossfs 分片 flush 会造成零星 8.5MB/s 单次尖峰(1/3 记录),但凑不满
    连续 3 次,不触发 kill;404MB/s 的单秒尖峰同理,属 ossfs 批量 flush。

4. 其他

  • 工具(如代码搜索)读取 OSS 上的大文件(274MB 的 .incomplete)本身
    就产生网络流量(~8.5MB/s),避免用 IDE 工具读 /mnt/WYH 上的大文件
  • rm /mnt/WYH/... 的审批连续 4 次超时(非拒绝),改为在拷贝时直接
    覆盖同路径文件规避删除操作;残片留待手动清理。
相关推荐
Csvn1 小时前
第 21 章 排错与调试实战
人工智能·aigc·agent
科技林总1 小时前
氛围编程场景下AI提示词使用核心原则
人工智能
面朝大海,春不暖,花不开1 小时前
翻译自 英语
人工智能·机器学习
xwz小王子1 小时前
GPT‑6 Astra 机器人实测:简单任务碾压,精细任务撞墙——大模型离“会摸”还有多远?
人工智能
深圳海导科技2 小时前
单北斗车载定位:国产车辆高精度导航技术|深圳海导科技navynav
人工智能·物联网
来自于狂人2 小时前
我在教室 75 寸大屏上跑了一个超低成本 AI 数字人:系统设计 + 口型同步、拒答根治、实时化三线攻坚实录
人工智能
tianxuanjg2 小时前
工业/协作机器人不锈钢精密零件批量加工难点与量产解决方案
人工智能·经验分享·机器人·无人机·制造
LeapMay2 小时前
中国科学院深圳先进技术研究院-深圳职业技术大学联合培养博士后招聘(具身智能/多模态感知/视觉检测方向)
人工智能·计算机视觉·3d·机器人
飞奔的猫2 小时前
锈了儿—素材工作流简化游戏场景元素的生成(三)
人工智能·游戏·个人开发