AI/ML Full Stack Engineer · System Design / Data Engineering

Apple 200TB 媒体数据进云 GPU 集群:迁移、校验与训练吞吐

按带宽算端到端时间,比较网络与离线迁移,再将对象存储、数据分片和训练读取解耦。

题目重点:按带宽算端到端时间,比较网络与离线迁移,再将对象存储、数据分片和训练读取解耦。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 按十进制 1TB=10¹² byte,200TB=1.6×10¹⁵ bit;速率按链路有效吞吐计算,实际用时还受源盘、目标存储、加密和小文件开销限制。
  • 源在本地,目的地是云中多机 GPU 集群,这是题目澄清后的场景;一台主机不承担全部 200TB 的最终存储。
  • 先签数据敏感级别、传输期限、已有专线、出口费用、目标云与法规边界;题目没有真实价目或设备容量,因此不填造厂商报价。

解题路线

  1. 先算理论下界 T=8B/R:1Gbps 约 18.5 天,10Gbps 约 1.85 天,100Gbps 约 4.44 小时。若端到端有效利用率假设 70%,分别约 26.5 天、2.65 天、6.35 小时;这不是供应商 SLA。
  2. 将网络方案与离线搬运比较完整时间:源端读盘/封装、排队与运输、云端导入;不能只比较网线传输和快递在途。已有高带宽链路且数天可用时可多流分片并行上传,若链路明显不足则评估加密迁移设备。
  3. 以对象存储作持久 landing zone,上传清单记录内容 ID、尺寸、校验和、分片状态和版本;按分片幂等重试并校验整文件,不把一次失败变成全量重传。
  4. 对象落地后进行格式校验与数据目录登记。训练前将海量小文件预处理为适度大小、可寻址的分片;训练 worker 并行读取、预取与解码,观测 GPU 等待数据的比例及网络/CPU/IO 的瓶颈。
  5. 若需求从一次性迁移变为持续导入,再加入事件或任务队列和幂等消费;一次性场景不必先引入常驻消息系统。

手动走一遍

若只有 10Gbps 专线且能保持 70% 端到端利用率,纯数据面理论约 2.65 天;再加预处理、校验和重试缓冲后要留更长交付窗口。若只有 1Gbps,同样假设下约 26.5 天,便应核算离线设备的装载、运输与云导入时间。选择哪条路径由实测吞吐和交付期限决定。

规模与取舍

迁移时间下界为 O(B/R),其中 B 是数据 bit 数、R 是有效 bit/s;清单与校验扫描 O(F+B) 工作量,F 为文件数。对象与训练读路径须按 GPU 消费速率、并发 worker 和每批解码成本容量规划,不能用 200TB 总量单独推出所需 GPU 或带宽。

易错点与追问

容易失分的边界

  • 把 200TB 按 200Tbit 计算,传输时间少算 8 倍。
  • 只看标称链路速率,忽略源盘/对象写入上限和小文件请求放大。
  • 直接向一台 GPU 主机本地盘导入全部数据,使迁移和训练生命周期耦合。
  • 只校验分片上传成功而不校验最终对象内容。
  • 盲目对训练数据全局 shuffle,导致随机小文件读取和 GPU 空转。
  • 把云产品设备容量、时效和价格当作题目固定条件。

继续深挖

  • 如果每日新增 5TB,链路和队列如何重新定容?
  • 如何设计 manifest 保证重复上传与失败重试不产生多份逻辑数据?
  • 训练 worker 若远程读成为瓶颈,应先加缓存、预取、重打包还是扩大网络?
  • 如何处理同一媒体文件的重复版本与隐私删除请求?
✓已复制微信号!