如何在 OrangePi 5 Pro 的 NPU 上运行 LLM

在OrangePi 5 Pro上访问NPU需要安装最新版Ubuntu的定制版本,还需要安装特殊软件,让你能在NPU 而不是CPU上运行专门转换的LLM。整个过程肯定要比运行Ollama 复杂得多,但如果你愿意迎接挑战,就能获得不菲的收益。所以,如果你感兴趣,就让我们深入了解一下吧!

安装操作系统

首先要安装合适的操作系统。我推荐 GitHub 用户Joshua Riek 专门为 Rockchip SoC 定制的 Ubuntu。你需要的是 24.04 版本,因为它拥有运行 LLM 所需的最新版 NPU 驱动程序。为 OrangePi在SD卡上刷新操作系统的方法与 Raspberry Pi 基本相同,以下是简要介绍:

1.将操作系统镜像下载到你选择的电脑上。

2.打开一个可以帮助闪存 SD 卡的程序。在本指南中,我们将使用 balenaEtcher。

3.选择 “从文件闪存”,然后选择之前下载的操作系统映像文件。

4.确保已插入 SD 卡,然后单击 “选择目标”。

5.从列表中选择 SD 卡,然后单击 “选择”。

6.选择 Flash!

这个过程可能需要 10 分钟才能完成,所以在程序运行时请耐心等待。

成功闪存操作系统后,将 SD卡传输到你的 OrangePi 中,然后打开电源。确保你手边有键盘和显示器,因为我们需要直接访问我们的 SBC,至少需要足够长的时间来安装 SSH。

安装 SSH

在 OPi 上完成初始操作系统设置后,按 Ctrl + Alt + T 键打开终端,在终端中输入 sudo apt install openssh-server。这将允许你从另一台电脑访问你的 OrangePi。我们之所以要这么麻烦,是因为运行 LLM 的程序在桌面上无法运行,但在 SSH 终端上可以运行。

在离开你的 OrangePi 之前,记下它的 IP 地址,然后通过 SSH 登录。如果你不喜欢 SSH,也可以在你的设备上按照本指南操作,但你必须按 Ctrl + Alt + F5 退出桌面,只在 shell 中工作。

安装 RKNN LLM 和 RKNN 工具包 2

现在,我们可以开始安装运行 LLM 的软件了。RKNN LLM 是在我们的机器上运行 LLM 的程序。RKNN Toolkit 2 是让其他软件与 NPU 通信的软件。我们将使用 GitHub 用户 Pelochus 提供的脚本一次性安装这两个软件。在终端中输入:

sudo curl https://raw.githubusercontent.com/Pelochus/ezrknpu/main/install.sh | sudo bash

运行需要 5 到 10 分钟,请耐心等待。

安装 LLM

安装完 RKNN LLM 和 RKNN Toolkit 2 后,就可以安装模型了(这还需要 5 到 10 分钟)。为了让 LLM利用OrangePi 上Rockchip RK3588S SoC 的 NPU,需要使用 RKNN Toolkit 2 对其进行转换(这远远超出了本指南的范围)。

幸运的是,Pelochus 维护着一个可与 RK3588S 配合使用的 LLM 的 Hugging Face 资源库。遗憾的是,并非所有这些模型都与我们刚刚下载的软件兼容。您需要寻找已使用 RKLLM runtime 1.0.1 转换的模型。我们要安装的是微软的 Phi-3 Mini 型号,参数为 3.8B。在终端中输入以下命令:

GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/Pelochus/phi-3-mini-rk3588

命令第一部分的大写字母将确保我们只先克隆较小的文件。如果我们试图一次性克隆整个版本库,可能会出现一些错误。接下来,导航到我们刚刚创建的新目录(cd ~/phi-3-mini-rk3588),然后运行 git lfs pull 命令。这将下载数千兆字节的大型模型文件。

OrangePi 5 Pro NPU 上运行 LLM

如果一切按计划进行,你就可以启动 LLM 了。在终端中输入 rkllm phi-3-mini-4k-rk3588.rkllm 即可。

运行情况如何?它比我们在超频的 Raspberry Pi 5 上通过 Ollama 运行的 Phi-3 要快得多。它的输出似乎也有硬性限制,如果达到极限,就会中途自断。

OrangePi上的NPU 驱动 LLM 在很大程度上仍处于试验阶段,但没想到响应速度是如此之快。在树莓派上运行的 Phi-3 平均响应时间为 27 秒,中位数为 5 秒(范围为 3-295 秒)。在OrangePi 5 Pro 的 NPU上运行的 Phi-3 均响应时间约为 1 秒,中位数在 1-2 秒之间。

如果你有一台配备 RK3588或RK3588S SoC的OrangePi 5,如果你喜欢尝试使用 LLM,那么这个项目绝对值得你花时间去做,哪怕只是为了大幅提高 LLM 的响应时间。支持 OrangePi 上 LLM 的社区规模虽小,但非常活跃,我期待看到更多型号不断涌现。

### 昇腾 NPU运行的卷积神经网络 (CNN) 示例 以下是基于昇腾 Ascend 平台实现的一个简单卷积神经网络 (CNN) 的代码示例。此代码展示了如何通过 `npu_bridge` 将 TensorFlow 模型迁移到昇腾平台并执行训练或推理操作。 #### 导入必要的库 为了适配昇腾硬件环境,需引入 `npu_bridge` 提供的相关模块: ```python import tensorflow as tf from npu_bridge.estimator import npu_ops ``` --- #### 定义 CNN 模型结构 以下是一个简单的 CNN 架构定义,其中包含了卷积层、池化层以及全连接层的设计。注意,在迁移过程中需要替换部分 TensorFlow 原生函数为昇腾支持的操作符。 ```python def create_cnn_model(input_shape, num_classes): model = tf.keras.Sequential([ # 卷积层 1 tf.keras.layers.Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), # 卷积层 2 tf.keras.layers.Conv2D(64, kernel_size=(3, 3), activation='relu'), tf.keras.layers.MaxPooling2D(pool_size=(2, 2)), # 展平层 tf.keras.layers.Flatten(), # 全连接层 tf.keras.layers.Dense(128, activation='relu'), # Dropout 替换为昇腾兼容版本 npu_ops.dropout(rate=0.5), # 输出层 tf.keras.layers.Dense(num_classes, activation='softmax') ]) return model ``` 上述代码中,`tf.keras.layers.Dropout()` 被替换成昇腾专用的 `npu_ops.dropout()` 函数[^2]。 --- #### 数据预处理与模型编译 在实际应用中,数据集通常需要经过标准化或其他形式的预处理才能输入到模型中。这里假设我们已经加载了一个标准的数据集(如 CIFAR-10 或 MNIST),并对数据进行了适当转换。 ```python # 加载数据集 (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() # 归一化像素值至 [0, 1] x_train, x_test = x_train / 255.0, x_test / 255.0 # 创建模型实例 input_shape = (32, 32, 3) # CIFAR-10 图像尺寸 num_classes = 10 # 类别数量 model = create_cnn_model(input_shape, num_classes) # 编译模型 model.compile(optimizer=tf.keras.optimizers.Adam(), loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy']) ``` --- #### 使用昇腾设备进行训练 为了让模型能够在昇腾 NPU 设备上高效运行,可以通过指定策略启用分布式计算能力。如果不需要复杂的分布配置,则可以直接调用 `.fit()` 方法完成训练过程。 ```python # 训练模型 history = model.fit( x_train, y_train, epochs=10, batch_size=64, validation_split=0.1 ) ``` 在此基础上,还可以进一步优化性能参数以充分利用昇腾芯片特性[^1]。 --- #### 总结 以上展示了一种适用于昇腾 NPU 硬件架构上的基础 CNN 实现方式。通过对原有 TensorFlow 组件的功能替代及必要调整,可以有效提升程序在特定 AI 开发板中的表现效果[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值