You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

树莓派5上部署预训练CatBoost模型进行推理的安装问题与解决方案咨询

树莓派5上部署预训练CatBoost模型进行推理的安装问题与解决方案咨询

首先非常理解你作为学习者遇到的困扰,树莓派的ARM架构确实会给一些Python库的安装带来挑战,尤其是像CatBoost这种依赖C++后端的库。下面针对你的问题给出几个可行的解决方案:

问题原因分析

你遇到的Failed building wheel for catboost错误,本质是因为PyPI官方和piwheels源目前没有针对树莓派5的aarch64架构提供CatBoost 1.2.8版本的预编译wheel包,所以pip只能尝试从源码编译。而CatBoost的源码编译需要大量的CPU、内存资源,树莓派的硬件性能很难完成这个编译过程。

可行解决方案

方案一:尝试安装piwheels上已有的CatBoost预编译版本

piwheels上可能存在旧版本的CatBoost预编译wheel(适配aarch64架构),你可以尝试指定具体版本安装:

# 尝试安装1.2.2版本(该版本在piwheels上有aarch64的预编译包)
pip install catboost==1.2.2

如果这个版本能成功安装,完全可以加载你之前训练好的模型进行推理(CatBoost的模型兼容性很好,高版本训练的模型低版本也能加载)。

方案二:导出模型到ONNX格式进行推理(推荐,轻量高效)

你之前对ONNX的理解有误:CatBoost从1.0版本开始已经支持将任意树结构的模型导出到ONNX格式,并不局限于对称树。这是树莓派上部署CatBoost推理的最优解,因为ONNX Runtime是轻量型的,且piwheels上有预编译的ARM版本。

步骤1:在Windows上导出模型为ONNX格式

在你训练模型的Windows电脑上,执行以下代码导出:

import catboost

# 加载你训练好的模型
# 分类模型用CatBoostClassifier,回归用CatBoostRegressor
model = catboost.CatBoostClassifier().load_model("your_trained_model.cbm")

# 导出为ONNX格式
model.save_model("catboost_model.onnx", format="onnx")

步骤2:在树莓派上安装ONNX Runtime并推理

在树莓派上执行:

# 安装预编译的ONNX Runtime
pip install onnxruntime

然后用以下代码加载ONNX模型进行推理:

import onnxruntime as rt
import numpy as np

# 加载ONNX模型
sess = rt.InferenceSession("catboost_model.onnx")
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name

# 准备输入数据(注意要和训练时的输入格式、数据类型一致)
# 示例:假设输入是一个2维numpy数组
input_data = np.array([[1.2, 3.4, 5.6]], dtype=np.float32)

# 执行推理
predictions = sess.run([output_name], {input_name: input_data})
print(predictions)

方案三:手动扩大swap分区后尝试源码编译(不推荐,仅作为最后手段)

如果你一定要安装最新版的CatBoost,可以尝试扩大树莓派的swap分区来提供编译所需的内存,步骤如下:

  1. 扩大swap分区:
# 关闭当前swap
sudo dphys-swapfile swapoff
# 编辑swap配置文件
sudo nano /etc/dphys-swapfile
# 将CONF_SWAPSIZE的值从默认的100改为2048(2G)或者4096(4G)
# 保存退出后重新设置swap
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
  1. 安装编译依赖:
sudo apt update && sudo apt install build-essential cmake libopenblas-dev
  1. 重新尝试安装CatBoost:
pip install catboost

⚠️ 注意:这个编译过程可能需要1-2小时,且树莓派会持续高负载,需要做好散热,避免硬件损坏。

额外提示

  • 如果你只需要模型推理功能,ONNX方案是最适合树莓派的,不仅安装简单,推理速度也更快。
  • 后续可以关注piwheels的CatBoost资源,一旦有对应架构的最新版预编译包,就可以直接用pip install catboost安装。

内容来源于stack exchange

火山引擎 最新活动