1. Dual Edge TPU 简介与优势 [0]

thumbnail
  1. Dual Edge TPU 是一个微小的 Coral AI 双边缘加速器 [0]。
  2. 它在单个 PCI M.2 芯片 上集成了两个 张量处理单元 (TPU) [1]。
  3. 它的前期成本低,长期功耗低,几乎可以回本 [2]。
  4. 与 USB 或单 PCIe 加速器不同,它在同一 M.2 插槽中提供 双倍的 ML 算力 [3]。
  5. 它在本地 AI 方面是 无与伦比 的 [4]。
  6. Google 在其企业会议产品中使用它,以 极快的速度 执行本地 AI [5]。
  7. 一个 25 美元的 Coral TPU 性能可超越 2,000 美元的 CPU [6]。
  8. Home Assistant 用户喜欢它用于 Frigate NVR 监控 [6]。
  9. 这个微小的设备可以快速处理 TensorFlow Lite 模型 [6]。
    1. 它能以约 800 帧/秒 的速度实时分析图像中的人物和其他物体 [6]。
  10. 它本质上是 越狱版 的 Amazon Ring [7]。
  11. 更多的 TPU 意味着可以支持更多的摄像头 [8]。

2. 双 TPU 硬件挑战与解决方案 [9]

thumbnail
  1. 双 TPU 部署的复杂性 [9]

    1. 挑战在于处理 双总线 PCIe 要求 的复杂性 [10]。
    2. 还需要主板支持 分叉 (bifurcation) 才能访问两个芯片 [10]。
    3. 并非所有适配器都相同,并非所有主板都能释放全部潜力 [11]。
    4. 目标是将基本的家庭实验室设置转变为先进的 Frigate NVR 监控系统 [12]。
  2. 芯片类型和兼容性 [14]

    1. 单 PCIe 加速器 具有 A+E 键 [15]。
    2. 键控由芯片上的缺口决定 [16]。
    3. 它提供单个 Coral TPU,数据传输速度与 USB 加速器相当 [16]。
    4. Dual Edge TPU 只有一个缺口,是 E 键 [17]。
    5. 两种 PCIe 芯片几乎都适合所有 M.2 插槽 [18]。
    6. 仅仅适配并不意味着它能工作 [18]。
    7. 如果将双 TPU 放入 Pineberry AI hat 或 M2 Wi-Fi 卡中,操作系统 只能看到一个 TPU [19]。
    8. 许多声称支持双 TPU 的适配器实际上不起作用 [21]。
    9. 建议选择有良好记录的适配器 [21]。
    10. 推荐使用 Maker Fabs 的 Dual Edge TPU adapter, low profile (30 美元) [22]。
    11. Dual Edge TPU 本身很难获得,因为它们便宜且需求量大 [23]。
  3. 硬件安装和主板选择 [24]

    1. 将 Dual Edge TPU 以 30° 角 插入 M.2 插槽,然后固定 [26]。
    2. 演示中使用的主板是 Zimma Blade (Ice Whale 的原型 SBC) [27]。
    3. 该设置也已在 Zimma board 上测试并成功运行 [27]。
    4. 将其插入运行 Debian 12 的 Zimma Blade,连接以太网并开机 [29]。

3. 驱动程序和软件包安装 [31]

thumbnail
  1. 一键安装脚本 [31]

    1. 安装驱动程序和软件包以识别硬件是一个复杂过程 [31]。
    2. 作者编写了一个 超级简单的 shell 脚本,可以通过一个命令运行 [31]。
    3. 脚本链接在描述中提供 [46]。
    4. 运行脚本前,确保已安装 curl (使用 app install curl) [51]。
    5. 运行命令:curl -sS [脚本链接] | bash [56]。
    6. -sS 标志会自动接受任何提示 [56]。
    7. | bash 用于运行脚本 [56]。
    8. 脚本将安装驱动程序,安装完成后即可使用 [57]。
  2. 设备连接和重启 [40]

    1. 通过路由器 Wi-Fi 设置查找连接设备的 IP 地址和主机名 [41]。
    2. 登录设备后,切换到 root 用户 (使用 sudo su - 或 su -) [43]。
    3. 检查设备是否被识别 [59]。
    4. 由于 Coral 设备未连接,此时不会被识别 [60]。
    5. 执行 shut down now 关闭设备 [61]。
    6. 插入 Coral PCIe 适配器,然后重启 Zima blade [62]。

4. 验证 TPU 识别和 Docker/MQTT 设置 [63]

thumbnail
  1. 验证双 TPU 识别 [63]

    1. 设备重启后,再次成为 root 用户 [64]。
    2. 检查 Coral 设备是否被识别 (驱动程序已安装) [65]。
    3. 成功检测到 两条线,表示两个 TPU 都被检测到 [66]。
    4. 检查 Apex 设备 [67]。
    5. 使用星号代替索引零进行检查 (Apex *) [68]。
    6. 成功显示 Apex 1 和 Apex 2 [70]。
    7. 确认 Zima blade 能够看到两个 TPU [72]。
  2. 安装 Docker 和 Frigate 依赖 [73]

    1. 接下来将通过 Frigate 使用这些 TPU,Frigate 依赖于 Docker [74]。
    2. 创建容器时,必须传递这两个设备,以便 Frigate 能够识别和通信 [75]。
    3. 首先安装 Docker [77]。
    4. 运行 docker images 和 list containers 确认 Docker 已注册并准备就绪 [84]。
    5. Frigate 依赖于消息中继工具 MQTT [87]。
  3. 配置 MQTT [88]

    1. 运行命令安装 MQTT [89]。
    2. 检查状态,绿色圆点表示一切正常运行 [91]。
    3. 简要配置 MQTT [93]。
    4. 编辑 MQTT 配置文件 (MQTT config file) [94]。
    5. 添加两行配置,使其可供 Frigate 使用 [96]。
    6. 配置内容包括设置端口和开放订阅 [97]。
    7. 重启服务使配置生效 [97]。

5. Frigate 配置与视频流设置 [99]

thumbnail
  1. Frigate 目录和配置文件 [99]

    1. 创建一个目录来存放 Frigate 文件 [100]。
    2. 创建 config.yml 文件 (touch config, make directory Frigate) [101]。
    3. 粘贴标准的 Frigate 配置文件内容 [103]。
  2. 设置 RTSP 视频流 [106]

    1. 需要一个视频流才能使系统工作,通常应使用 IP 摄像头 [106]。
    2. 演示中使用一个 15 美元的 网络摄像头 [107]。
    3. 必须使用 FFMPEG 和其他工具将网络摄像头流提供给 Frigate [108]。
    4. 插入网络摄像头到 Zima Blade [110]。
    5. 下载并解压开源 RTSP 服务器软件 [116]。
    6. 使用 hostname -I 获取 IP 地址 [118]。
    7. 启动 RTSP 服务器,使用端口 554 (可修改) [118]。
    8. RTSP 服务器作为 RTSP 流的中继 [122]。
  3. 使用 FFmpeg 发送网络摄像头流 [124]

    1. 切换到 root 用户以避免权限问题 [124]。
    2. 使用 FFmpeg 将网络摄像头流发送到 RTSP 服务器 [125]。
    3. 运行命令将网络摄像头流馈送到 RTSP 服务器 [126]。
    4. Frigate 随后可以订阅该流 [128]。
    5. 如果未安装 FFmpeg,先安装 (App get install FFmpeg) [129]。
    6. 运行 FFmpeg 命令,它开始向 RTSP 流发送帧 [133]。
    7. RTSP 服务器显示已接收到流 (publishing to path, my stream) [135]。
    8. 现在 Frigate 可以利用通过 IP 地址寻址的 RTSP 流 [138]。

6. 运行 Frigate 容器和实时检测验证 [139]

thumbnail
  1. 运行 Frigate 容器 [139]

    1. 运行 Frigate 容器的命令 [141]。
    2. 也可以使用 Docker Compose,这可能更好 [143]。
    3. 命令的关键部分是 传递设备 (passing the device) [145]。
    4. 必须传递 Apex 0 和 Apex 1,以确保两个 TPU 都被使用 [146]。
    5. 首次运行时会下载镜像 [149]。
    6. 运行 Docker PS -A 确认容器已启动 (up) [151]。
    7. 在本地网络上,可以通过 localhost:5000 访问 Frigate 界面 [152]。
  2. Frigate 界面验证和性能 [155]

    1. Frigate 日志显示 “Two TPUs found” [156]。
    2. 这确认 Frigate 正在使用两个 Coral 设备 [157]。
    3. 在系统界面可以看到 Coral 1 和 Coral 2 [158]。
    4. 可以查看 推理速度 和 帧率 [159]。
    5. 帧率很高,达到 25 帧/秒 [160]。
  3. 调整视频质量和实时检测 [161]

    1. 初始视频质量不佳,因为 FFmpeg 命令设置为 640x480 [164]。
    2. 切换到具有 更高分辨率 的 FFmpeg 命令 [172]。
    3. Frigate 界面上的视频质量得到改善 [175]。
    4. Frigate 配置了检测到人时开始录制 (detectors true, objects track person) [178]。
    5. 当人进入画面时,Frigate 开始录制事件 [179]。
    6. 可以看到推理速度 [185]。
    7. 当张量处理器运行 TensorFlow Lite 模型时,CPU 使用率会上升 [186]。
    8. 系统以 25 帧/秒的高帧率运行,处理良好 [188]。
  4. 事件停止和热管理 [190]

    1. 当人移出画面时,检测停止 [192]。
    2. 重新加载事件页面,事件状态从“进行中”变为停止 [196]。
    3. PCIe 加速器的一个优点是可以监控 温度,并具有 热调节 功能 [198]。
    4. 作者编写了一个脚本来实时监控两个 Coral 设备的温度 [200]。
    5. 输出显示 Apex 1 为 139,Apex 0 为 140 [203]。
    6. 随着对象检测增加,温度会升高 [205]。
    7. 热调节和降速会使温度恢复正常水平 [206]。
    8. 这是一个有趣的硬件可观察性指标 [207]。

7. 功耗和本地 AI 优势总结 [208]

thumbnail
  1. 低功耗演示 [208]

    1. 演示的目的是展示 极低的功耗 [208]。
    2. 即使在双 TPU、高帧率和实时视频对象检测下,功耗仍然很低 [209]。
    3. 演示设置中,Zima Blade 仅连接了以太网和电源 [210]。
    4. 网络摄像头连接到另一个设备 (Zima board) [211]。
    5. 功耗略高于 6 瓦 [212]。
    6. 这种分离设置更接近真实世界的部署 [217]。
    7. 功耗非常适中 (super modest) [218]。
  2. 本地 AI 的优势 [218]

    1. 设备上的 ML 处理 具有以下优势:
    2. 减少延迟 [218]。
    3. 增加数据隐私 [218]。
    4. 无需持续的互联网连接 [218]。
    5. 这些优势使本地 AI 变得 引人注目 [218]。