前提条件:
x64 Linux 主机:安装CMake 和 arm-gnu-toolchain-12.2.rel1-x86_64-aarch64-none-linux-gnu
radxa O6主机
1.从 Kaggle 获取模型权重和分词器
Gemma 3 2B 模型文件:访问 Kaggle 上的 Gemma 模型页面 https://www.kaggle.com/models/google/gemma
Gemma C++ . On this tab, theVariation` 下拉菜单包含以下选项。请注意,bfloat16 权重选项具有更高的保真度,而 8 位切换浮点权重可实现更快的推理。
下载如下:
2b-it-sfp 20 亿参数的指令调优模型,8 位切换浮点
2.解压缩文件 模型权重和分词器
tar -zxf archive.tar.gz
这应该会生成一个包含模型权重(例如 2b-it-sfp.sbs)和分词器文件 (tokenizer.spm) 的文件
2b-it-sfp.sbs
tokenizer.spm
3.构建可执行程序
下载代码:
git clone https://github.com/google/gem... -b v0.1.4
交叉编译
进入到gemma.cpp代码目录下:
mkdir build && cd build
cmake -DCMAKE_C_COMPILER=${ARMCC_PREFIX}gcc \
-DCMAKE_CXX_COMPILER=${ARMCC_PREFIX}g++ \
-DCMAKE_C_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_CXX_FLAGS="${ARMCC_FLAGS}" \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
-DBENCHMARK_ENABLE_TESTING=ON \
-DCMAKE_BUILD_TYPE=Release \
..
在build目录中生成gemma、benchmarks可执行程序
4.执行
拷贝gemma、tokenizer.spm、2b-it-sfp.sbs到O6主机主机中。
修改文件权限:
chmod 700 benchmarks
chmod 700 gemma
执行:
./gemma --tokenizer tokenizer.spm --weights 2b-it-sfp.sbs --model 2b-it
5.性能测试
./benchmarks --weights 2b-it-sfp.sbs --tokenizer tokenizer.spm --model 2b-it
如其中的1个测试项:
[ Timing info ] Prefill: 2368 ms for 54 prompt tokens (22.80 tokens / sec); Time to first token: 2714 ms
[ Timing info ] Generate: 49690 ms for 256 tokens (5.15 tokens / sec)
5.总结
从CPU性能测试数据看,与HW Krini 9020芯片、2022年的高通8gen1或HW的数据相当。作为创业公司的首颗SOC就能有如此表现,表现令人赞叹。