HarmonyOS 中 MindSpore Lite 源码编译转换工具环境与步骤
最近在做鸿蒙 AI 应用开发的时候,需要用到 MindSpore Lite 的模型转换工具。官方提供的预编译版本虽然方便,但有时候我们需要自定义一些功能,或者想要了解底层的实现细节,这时候就需要从源码编译了。刚开始编译的时候,遇到了不少问题:环境配置不对、依赖版本不匹配、编译参数设置错误等等。折腾了好几天才把环境配好,成功编译出转换工具。今天我们就来聊聊 MindSpore Lite 源码编译的环

大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!
文章目录
前言
最近在做鸿蒙 AI 应用开发的时候,需要用到 MindSpore Lite 的模型转换工具。官方提供的预编译版本虽然方便,但有时候我们需要自定义一些功能,或者想要了解底层的实现细节,这时候就需要从源码编译了。
刚开始编译的时候,遇到了不少问题:环境配置不对、依赖版本不匹配、编译参数设置错误等等。折腾了好几天才把环境配好,成功编译出转换工具。今天我们就来聊聊 MindSpore Lite 源码编译的环境要求和详细步骤,以及在实际开发中可能遇到的问题和解决方案。
为什么需要从源码编译
在实际开发中,我们通常有几种方式获取 MindSpore Lite 的转换工具:
使用预编译版本:这是最简单的方式,直接下载官方提供的预编译工具,解压就能用。但这种方式有个问题,就是功能是固定的,无法自定义。
从源码编译:虽然过程复杂一些,但可以自定义功能,比如添加新的算子支持、修改转换逻辑等。而且从源码编译还能帮助我们更好地理解 MindSpore Lite 的工作原理。
什么时候需要从源码编译:
- 需要支持新的模型格式或算子
- 需要修改转换逻辑
- 需要调试转换过程中的问题
- 想要了解底层实现细节
环境要求详解
编译 MindSpore Lite 转换工具对环境有一定要求,让我们详细看看每个要求:
操作系统要求
推荐系统:Linux x86_64(推荐 Ubuntu 18.04.02LTS)
MindSpore Lite 的编译主要在 Linux 环境下进行,虽然理论上其他 Linux 发行版也可以,但 Ubuntu 18.04.02LTS 是官方测试最多的版本,兼容性最好。
为什么选择 Ubuntu 18.04.02LTS:
- 官方主要在这个版本上测试
- 依赖库的版本比较稳定
- 社区支持好,遇到问题容易找到解决方案
如果你用的是其他 Linux 发行版,比如 CentOS、Debian 等,理论上也可以,但可能需要调整一些依赖库的安装方式。
检查系统版本:
# 查看系统版本
cat /etc/os-release
# 查看系统架构
uname -m
确保是 x86_64 架构,如果是 ARM 架构,编译过程可能会有所不同。
GCC 编译器要求
要求:GCC ≥ 7.3.0
GCC 是编译 C/C++ 代码的编译器,MindSpore Lite 需要较新版本的 GCC 来支持 C++17 特性。
检查 GCC 版本:
gcc --version
如果版本不够,需要升级 GCC:
在 Ubuntu 上,可以通过以下方式安装新版本的 GCC:
# 添加 PPA 源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
# 安装 GCC 7 或更高版本
sudo apt-get install gcc-7 g++-7
# 设置默认版本(可选)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 60
验证安装:
gcc --version
g++ --version
CMake 构建工具要求
要求:CMake ≥ 3.18.3
CMake 是跨平台的构建工具,MindSpore Lite 使用 CMake 来管理编译过程。
检查 CMake 版本:
cmake --version
如果版本不够,需要升级 CMake:
在 Ubuntu 上,可以通过以下方式安装新版本的 CMake:
# 下载 CMake
wget https://github.com/Kitware/CMake/releases/download/v3.18.3/cmake-3.18.3-Linux-x86_64.tar.gz
# 解压
tar -xzf cmake-3.18.3-Linux-x86_64.tar.gz
# 移动到系统目录
sudo mv cmake-3.18.3-Linux-x86_64 /opt/cmake
# 添加到 PATH(添加到 ~/.bashrc 或 ~/.zshrc)
export PATH=/opt/cmake/bin:$PATH
# 重新加载配置
source ~/.bashrc
验证安装:
cmake --version
Git 版本控制工具要求
要求:Git ≥ 2.28.0
Git 用来获取 MindSpore Lite 的源码。
检查 Git 版本:
git --version
如果版本不够,需要升级 Git:
在 Ubuntu 上,可以通过以下方式安装新版本的 Git:
# 添加 PPA 源
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
# 安装最新版本的 Git
sudo apt-get install git
其他依赖工具
除了上面这些主要工具,还需要一些其他的依赖:
基础开发工具:
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y libssl-dev
sudo apt-get install -y libffi-dev
sudo apt-get install -y python3-dev
sudo apt-get install -y python3-pip
这些工具在编译过程中可能会用到,建议提前安装好。
编译步骤详解
环境配置好后,就可以开始编译了。让我们一步步来看:
第一步:获取源码
首先需要获取 MindSpore Lite 的源码:
# 克隆 MindSpore 仓库
git clone https://gitee.com/mindspore/mindspore.git
# 进入源码目录
cd mindspore
如果网络不好,也可以使用镜像源:
# 使用 Gitee 镜像
git clone https://gitee.com/mindspore/mindspore.git
选择合适的分支:
# 查看所有分支
git branch -a
# 切换到稳定版本(根据实际需求选择)
git checkout r2.0 # 或其他稳定版本
建议使用稳定版本,而不是最新的开发版本,因为开发版本可能不够稳定。
第二步:进入编译目录
获取源码后,需要进入编译目录:
cd mindspore/mindspore/lite
这个目录包含了 MindSpore Lite 的源码和编译脚本。
第三步:配置 PyTorch 转换支持(可选)
如果你需要支持 PyTorch 模型的转换,需要先配置相关环境变量:
设置环境变量:
# 启用 PyTorch 模型转换
export MSLITE_ENABLE_CONVERT_PYTORCH_MODEL=on
# 设置 PyTorch 库路径(根据实际安装路径调整)
export LIB_TORCH_PATH=/path/to/libtorch
# 设置库搜索路径
export LD_LIBRARY_PATH=$LIB_TORCH_PATH/lib:$LD_LIBRARY_PATH
下载 PyTorch C++ 库:
如果还没有安装 PyTorch C++ 库,需要先下载:
# 创建目录
mkdir -p ~/libtorch
cd ~/libtorch
# 下载 PyTorch C++ 库(根据你的系统选择对应版本)
wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0%2Bcpu.zip
# 解压
unzip libtorch-cxx11-abi-shared-with-deps-2.0.0+cpu.zip
# 设置环境变量
export LIB_TORCH_PATH=~/libtorch/libtorch
export LD_LIBRARY_PATH=$LIB_TORCH_PATH/lib:$LD_LIBRARY_PATH
验证环境变量:
echo $MSLITE_ENABLE_CONVERT_PYTORCH_MODEL
echo $LIB_TORCH_PATH
echo $LD_LIBRARY_PATH
确保环境变量设置正确,否则编译时可能会报错。
第四步:执行编译
环境配置好后,就可以执行编译了:
# 执行编译脚本
bash build.sh -I x86_64 -j 8
编译参数说明:
-I x86_64:指定目标平台为 x86_64-j 8:使用 8 个并行任务编译,可以根据你的 CPU 核心数调整
如果你的 CPU 核心数较多,可以增加 -j 后面的数字,比如 -j 16,这样可以加快编译速度。
编译过程:
编译过程可能需要一些时间,具体取决于你的机器配置。编译过程中会输出很多日志,如果遇到错误,可以根据错误信息来排查问题。
常见编译错误:
- 依赖库缺失:如果提示缺少某个库,需要安装对应的开发包
- 版本不匹配:如果提示版本不对,需要升级或降级相关工具
- 内存不足:如果编译过程中内存不足,可以减少
-j参数的值
第五步:查找编译产物
编译完成后,编译产物会在 output/ 目录下:
# 查看编译产物
ls -la output/
转换工具位置:
转换工具位于 output/tools/converter/converter/ 目录下:
# 查看转换工具
ls -la output/tools/converter/converter/
# 测试转换工具
./output/tools/converter/converter/converter_lite --help
如果能看到帮助信息,说明编译成功了。
实际应用场景
让我们看看几个实际应用场景,了解如何在实际项目中使用编译好的转换工具:
场景一:转换 TensorFlow 模型
如果你有一个 TensorFlow 模型需要转换为 MindSpore Lite 格式:
# 使用转换工具转换模型
./output/tools/converter/converter/converter_lite \
--fmk=TFLITE \
--modelFile=model.tflite \
--outputFile=model
这个命令会将 TensorFlow Lite 模型转换为 MindSpore Lite 格式。
场景二:转换 ONNX 模型
如果你有一个 ONNX 模型:
./output/tools/converter/converter/converter_lite \
--fmk=ONNX \
--modelFile=model.onnx \
--outputFile=model
场景三:转换 PyTorch 模型
如果你配置了 PyTorch 支持,可以转换 PyTorch 模型:
./output/tools/converter/converter/converter_lite \
--fmk=PYTORCH \
--modelFile=model.pt \
--outputFile=model
场景四:自定义转换选项
转换工具还支持很多自定义选项:
./output/tools/converter/converter/converter_lite \
--fmk=TFLITE \
--modelFile=model.tflite \
--outputFile=model \
--configFile=config.txt \
--weightFile=weight.bin
可以通过配置文件来设置更多的转换选项。
常见问题排查
在实际编译过程中,可能会遇到各种问题,让我们看看常见的问题和解决方案:
问题一:编译时提示缺少依赖库
错误信息:error: cannot find -lxxx
解决方案:
# 安装缺失的开发库
sudo apt-get install libxxx-dev
# 或者通过包管理器搜索
apt-cache search xxx
问题二:CMake 版本不够
错误信息:CMake 3.18.3 or higher is required
解决方案:按照前面的步骤升级 CMake 到 3.18.3 或更高版本。
问题三:GCC 版本不够
错误信息:error: 'xxx' is not a member of 'std'
解决方案:升级 GCC 到 7.3.0 或更高版本。
问题四:PyTorch 库找不到
错误信息:error: cannot find libtorch
解决方案:
- 检查
LIB_TORCH_PATH环境变量是否正确设置 - 检查
LD_LIBRARY_PATH是否包含 PyTorch 库路径 - 确认 PyTorch 库文件确实存在
问题五:编译时间过长
解决方案:
- 增加并行编译任务数:
-j 16或更高 - 使用更快的机器或云服务器
- 只编译需要的组件,而不是全部编译
总结
编译 MindSpore Lite 转换工具虽然过程复杂一些,但掌握了方法后其实也不难。关键是要把环境配置好,然后按照步骤一步步来。
关键点总结:
- 环境要求要满足:Linux x86_64、GCC ≥ 7.3.0、CMake ≥ 3.18.3、Git ≥ 2.28.0
- 源码获取要正确:使用官方仓库或镜像,选择稳定版本
- 环境变量要设置:如果需要 PyTorch 支持,要正确设置相关环境变量
- 编译参数要合理:根据机器配置调整并行任务数
- 问题排查要耐心:遇到错误要仔细看日志,按错误信息排查
最佳实践:
- 使用 Ubuntu 18.04.02LTS,兼容性最好
- 提前安装所有依赖,避免编译过程中中断
- 使用稳定版本的源码,而不是最新的开发版本
- 编译前检查所有环境变量是否正确设置
- 保存编译日志,方便后续排查问题
更多推荐



所有评论(0)