从开发环境向实际部署环境迁移的过程中,RISC-V 环境依赖问题成为影响系统稳定性与可复现性的关键难点之一。该类问题并不直接体现在算法或模型本身的设计复杂度上,而是源于运行环境、依赖组件与底层系统之间高度耦合所带来的隐性不确定性。
本次文章将详细记录常用的RISC-V依赖及环境配置方法。
Docker Compose
需要手动安装,键入如下脚本:
bash
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://gh.llkk.cc/https://github.com/docker/compose/releases/download/v2.40.3/docker-compose-linux-riscv64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
Pytorch三大件
必须使用进迭时空源进行直接安装,必须指定如下的版本号,不可更改。
首先配置进迭时空的额外pip源:
bash
pip config set global.extra-index-url https://git.spacemit.com/api/v4/projects/33/packages/pypi/simple
注意
此源拦截了海外地址,对于Github Action可能有较大影响。
然后指定版本安装:
bash
pip install --index-url https://git.spacemit.com/api/v4/projects/33/packages/pypi/simple --trusted-host git.spacemit.com torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 --break-system-packages
经过反复实验,torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0为符合PyTorch版本匹配且能正常在RISC-V开发板上初始化的唯一版本。
接着为了解决ffmpeg依赖问题,我们需要手动降级覆盖av:
bash
pip install --index-url https://git.spacemit.com/api/v4/projects/33/packages/pypi/simple --trusted-host git.spacemit.com av==11.0.0 --break-system-packages
经过反复实验,av==11.0.0为不过低不匹配PyTorch且不过高能找到ffmpeg6.0依赖的唯一版本。
注意
若运行时提示依赖缺失,请安装以下库libsleef3、libomp5、libnuma1、libsndfile1、libavformat60
Numba
在RISC-V系统上,numba的支持极其有限。由于LLVM在RISC-V上的JIT功能等尚未被完全稳定实现,想要直接使用numba编译机器码是比较困难的,建议做好心理准备。
首先补装编译链:
bash
apt-get install -y llvm-15 llvm-15-dev clang cmake autoconf
然后编译安装:
bash
pip install --index-url https://pypi.org/simple llvmlite==0.44.0 --break-system-packages
pip install --index-url https://pypi.org/simple numpy==1.26.4 --break-system-packages
pip install --index-url https://pypi.org/simple numba==0.61.2 --break-system-packages
请务必注意不建议使用进迭时空的预编译版本,以避免出现llvm环境依赖的相关错误。
请务必注意安装顺序和版本指定,llvmlite==0.44.0为适合LLVM-15且符合numba依赖要求的唯一版本。而numpy必须在numba之前安装。numba==0.61.2为支持LLVM-15且符合常见大模型依赖要求的唯一版本。
若遇到llvm-config错误,请补充导出环境变量LLVM_CONFIG="/usr/lib/llvm-15/bin/llvm-config"
由于是编译安装,需要较长的时间(大约1h),建议用screen执行并耐心等待。

