在 Raspberry Pi 上运行 CodeProject.AI 服务器





5.00/5 (5投票s)
在 Raspberry Pi 上构建、运行和调试 CodeProject.AI 服务器
这篇文档是为那些有勇气直接从 VS Code 运行代码的人准备的。如果你只想使用带 Coral 加速器的 RPi 而不想折腾,请查看我们的 Docker 文档中的 Raspberry Pi (Arm64) 部分,了解如何在 Raspberry Pi 上使用 Docker 镜像和 Coral 加速器来运行 CodeProject.AI 服务器。
Raspberry Pi 是一款非常、非常普通的微型计算机。它配备四核 Arm64 CPU,主频为 1.8GHz,4GB DDR4 内存,蓝牙、Wi-Fi、一些接口,仅此而已。它价格便宜,体积小巧,并且可以运行 Visual Studio Code 来调试一个 .NET 7 应用程序,该应用程序又启动了半打运行 AI 推理的 Python 模块。
我们来一步步看。
第一步:升级到 64 位操作系统
我的 Raspberry Pi 400 最初配备的是 32 位操作系统,原因不明。我们可以通过访问 Raspberry Pi 官网并下载 imager 来解决这个问题。
要使用imager,请确保你的电脑已连接 microSD 卡。我最初选择了 1TB 的 SD 卡(30 美元!),以确保一切都能装下,但这似乎导致了 imager 的问题。在使用 imager 之前格式化卡片也没有帮助,所以我换成了更普通的(且信誉更好的品牌)128GB 卡。
将新 64 位操作系统镜像写入卡片后,将其插入 Raspberry Pi 并开机。
第二步:Visual Studio Code
幸亏有微软,这一步很简单。在 Pi 上打开一个终端窗口并输入:
sudo apt update
sudo apt install code
启动 VS Code,登录,同步你的设置,并将其设置得“恰到好处”,然后你就可以开始工作了。在 Raspberry Pi 上运行 VS Code,充分展示了 Raspberry Pi 的强大功能和 VS Code 的高效性。
第三步:CodeProject.AI 服务器
在 VS Code 中,像平常一样克隆 CodeProject.AI 服务器仓库。**确保你的 Raspberry Pi SD 卡上有足够的空间**。几个 GB 应该就足够了。
拉取仓库后,你需要进行一些设置。同样,这也很直接。
打开一个新的终端,然后进入仓库中的 *src* 文件夹。最简单的方法是通过 VS Code 的终端菜单:选择“**新建终端**”,然后在终端窗口中输入“cd src”即可到达。或者,从 Raspberry Pi 系统菜单打开终端,然后导航到 CodeProject.AI 服务器仓库的 */src* 目录。
到达那里后,运行:
bash setup.sh
运行时
设置脚本通常很快,除了初始安装 Python 3.7 的过程极其缓慢。Raspberry Pi 自带 Python 3.9,但对于 3.7,你需要从源代码编译。幸运的是,Theo van der Sluijs 创建了一个脚本来帮助我们完成这项工作。在我的 Pi 上,这个过程花费了近一个小时才完成,其中大部分时间都花在了运行回归测试上。
Python 之后是 .NET 7,这由 Pete Gallaghar 的另一个脚本处理。
不用担心 - 你不需要下载任何东西:*setup.sh* 脚本包含了你需要的一切,并会为你完成这些。
模块
运行时设置完成后,模块安装与其他任何平台都相同。只需让脚本自行运行即可。Python 虚拟环境将为每个需要的模块设置好,并且每个模块将运行的模型将被下载并放置在正确的位置。
构建和调试
设置脚本运行完成后,就可以构建和启动了。同样,这很简单,因为你只需转到 VS Code 的**运行和调试**面板,然后从下拉菜单中选择**构建所有 & 启动服务器 Arm64**。
我们有单独的 x64 和 Arm64 构建,因为某些模块,例如使用 Microsoft.ML.OnnxRuntime
的 PortraitFilter
,在 Arm64 上不受支持,因此需要从 Arm64 构建中排除。
点击下拉菜单旁边的箭头将启动服务器。你可以在 Raspberry Pi 上像调试任何其他 VS Code 安装一样,调试和单步执行服务器代码。启动时,会出现相同的仪表板 UI,你可以打开相同的浏览器体验。
再次,我们需要记住这是一台内存非常有限的小型计算机。我倾向于使用给定模块允许我使用的最小模型,但即使如此,推理时间也可能超过一秒。
提高性能
下一步针对 Raspberry Pi 的开发将通过三种方法进行:
- 寻找新的、更快、更精简、更适合 Pi 这种资源受限环境的模块。
- 提供更小、更精简的模型。
- 为外部 AI 加速器提供支持,例如 Coral AI USB 棒。
但就目前而言,我们可以在 Pi 上原生调试 Python 包、.NET 安装、服务器的奇怪行为、硬件报告和我们的设置脚本中的问题。这使得针对 Raspberry Pi 的开发变得异常简单,只要有耐心。