MindSpore Federated--端侧部署

编译出包
1.配置编译环境。
2.开启联邦编译选项,在mindspore根目录进行编译,编译包含aarch64和aarch32的AAR包

代码如下:
export MSLITE_ENABLE_FL=on
bash build.sh -A on -j32

获取生成的Android AAR包。
如下:

mindspore-lite-maven-{version}.zip

运行时要注意运行依赖:

所以要构建运行依赖:

将文件mindspore-lite-maven-{version}.zip解压后,所得到的目录结构如下所示:

mindspore-lite-maven-{version}
└── mindspore
└── mindspore-lite
└── {version}
└── mindspore-lite-{version}.aar # MindSpore Lite训练框架AAR包

由此可知联邦学习相关的AAR包路径是

mindspore/output/mindspore/mindspore-lite/{version}/mindspore-lite-{version}.aar

其中AAR包中与联邦学习相关的目录结构如下:

mindspore-lite-{version}
├── jni
│ ├── arm64-v8a
│ │ ├── libjpeg.so # 图像处理动态库文件
│ │ ├── libminddata-lite.so # 图像处理动态库文件
│ │ ├── libmindspore-lite.so # MindSpore Lite推理框架依赖的动态库
│ │ ├── libmindspore-lite-jni.so # MindSpore Lite推理框架依赖的jni动态库
│ │ ├── libmindspore-lite-train.so # MindSpore Lite训练框架依赖的动态库
│ │ ├── libmindspore-lite-train-jni.so # MindSpore Lite训练框架依赖的jni动态库
│ │ └── libturbojpeg.so # 图像处理动态库文件
│ └── armeabi-v7a
│ ├── libjpeg.so # 图像处理动态库文件
│ ├── libminddata-lite.so # 图像处理动态库文件
│ ├── libmindspore-lite.so # MindSpore Lite推理框架依赖的动态库
│ ├── libmindspore-lite-jni.so # MindSpore Lite推理框架依赖的jni动态库
│ ├── libmindspore-lite-train.so # MindSpore Lite训练框架依赖的动态库
│ ├── libmindspore-lite-train-jni.so # MindSpore Lite训练框架依赖的jni动态库
│ └── libturbojpeg.so # 图像处理动态库文件
├── libs
│ ├── mindspore-lite-java-common.jar # MindSpore Lite训练框架jar包
│ └── mindspore-lite-java-flclient.jar # 联邦学习框架jar包
└── classes.jar # MindSpore Lite训练框架jar包

注意,由于生成Android环境中的联邦学习jar包时未包含所依赖的第三方开源软件包,因此在Android环境中,使用AAR包前,需要用户在Android工程下的app/build.gradle文件的dependencies{}字段中添加相关依赖语句,用于加载联邦学习所依赖的三个开源软件,如下所示:

dependencies {

//添加联邦学习所依赖第三方开源软件
implementation group: ‘com.squareup.okhttp3’, name: ‘okhttp’, version: ‘3.14.9’
implementation group: ‘com.google.flatbuffers’, name: ‘flatbuffers-java’, version: ‘2.0.0’
implementation(group: ‘org.bouncycastle’,name: ‘bcprov-jdk15on’, version: ‘1.68’)
}

联邦学习依赖的第三方开源软件bcprov-jdk15on包含多版本class文件,为防止低版本jdk编译高版本class文件出错,在Android工程的gradle.properties文件中可添加如下设置语句:

android.jetifier.blacklist=bcprov

工程中设置好了如上所示依赖之后,只需依赖 AAR包即可调用联邦学习提供的相关接口

x86环境
编译出包
3.配置编译环境。
4.在mindspore根目录进行编译,编译x86架构相关包。

bash build.sh -I x86_64 -j32

获取生成的x86架构相关包。
如下:

mindspore/output/mindspore-lite-{version}-linux-x64.tar.gz

构建运行依赖环境:

代码如下:

mindspore-lite-{version}-linux-x64
├── tools
│ ├── benchmark_train # 训练模型性能与精度调测工具
│ ├── converter # 模型转换工具
│ └── cropper # 库裁剪工具
│ ├── cropper # 库裁剪工具可执行文件
│ └── cropper_mapping_cpu.cfg # 裁剪cpu库所需的配置文件
└── runtime
├── include # 训练框架头文件
│ └── registry # 自定义算子注册头文件
├── lib # 训练框架库
│ ├── libminddata-lite.a # 图像处理静态库文件
│ ├── libminddata-lite.so # 图像处理动态库文件
│ ├── libmindspore-lite-jni.so # MindSpore Lite推理框架依赖的jni动态库
│ ├── libmindspore-lite-train.a # MindSpore Lite训练框架依赖的静态库
│ ├── libmindspore-lite-train.so # MindSpore Lite训练框架依赖的动态库
│ ├── libmindspore-lite-train-jni.so # MindSpore Lite训练框架依赖的jni动态库
│ ├── libmindspore-lite.a # MindSpore Lite推理框架依赖的静态库
│ ├── libmindspore-lite.so # MindSpore Lite推理依赖的动态库
│ ├── mindspore-lite-java.jar # MindSpore Lite训练框架jar包
│ └── mindspore-lite-java-flclient.jar # 联邦学习框架jar包
└── third_party
└── libjpeg-turbo
└── lib
├── libjpeg.so.62 # 图像处理动态库文件
└── libturbojpeg.so.0 # 图像处理动态库文件
其中联邦学习所需的相关x86包名如下:

libjpeg.so.62 # 图像处理动态库文件
libminddata-lite.so # 图像处理动态库文件
libmindspore-lite.so # MindSpore Lite推理框架依赖的动态库
libmindspore-lite-jni.so # MindSpore Lite推理框架依赖的jni动态库
libmindspore-lite-train.so # MindSpore Lite训练框架依赖的动态库
libmindspore-lite-train-jni.so # MindSpore Lite训练框架的jni动态库
libturbojpeg.so.0 # 图像处理动态库文件
mindspore-lite-java-flclient.jar # 联邦学习框架jar包

在x86中设置环境变量(

export LD_LIBRARY_PATH=/resource/x86libs/:$LD_LIBRARY_PATH

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值