端侧部署
下面分别介绍如何在Android环境和x86环境部署Federated-Client。
Android环境
编译出包
配置编译环境。
目前只支持Linux环境编译,Linux编译环境配置可参考这里。
在mindspore根目录进行编译,编译包含aarch64和aarch32的AAR包。
bash build.sh -A on -j32
获取生成的Android AAR包。
mindspore-lite-maven-{version}.zip
运行依赖
Android Studio >= 3.2 (推荐4.0以上版本)
Android SDK >= 26 (Android Studio默认安装)
OpenJDK >= 1.8 (Android Studio默认安装)
构建依赖环境
将文件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训练框架依赖的动态库
│ │ └── 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训练框架依赖的动态库
│ └── libturbojpeg.so # 图像处理动态库文件
├── libs
│ ├── mindspore-lite-java-common.jar # MindSpore Lite训练框架jar包
│ └── mindspore-lite-java-flclient.jar # 联邦学习框架jar包
└── classes.jar # MindSpore Lite训练框架jar包
在Android工程中只需依赖此AAR包即可调用联邦学习提供的相关接口,接口的具体调用和运行方式可参考联邦学习接口介绍部分。
x86环境
编译出包
配置编译环境。
目前只支持Linux环境编译,Linux编译环境配置可参考这里。
在mindspore根目录进行编译,编译x86架构相关包。
bash build.sh -I x86_64 -j32
获取生成的x86架构相关包。
mindspore/output/mindspore-lite-{version}-linux-x64.tar.gz
运行依赖
构建依赖环境
将文件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.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训练框架依赖的动态库
libturbojpeg.so.0 # 图像处理动态库文件
mindspore-lite-java-flclient.jar # 联邦学习框架jar包
可将路径mindspore/output/mindspore-lite-{version}-linux-x64/runtime/lib/
以及mindspore/output/mindspore-lite-{version}-linux-x64/runtime/third_party/libjpeg-turbo/lib
中联邦学习所依赖的so文件(共6个)放入一个文件夹,比如/resource/x86libs/
。然后在x86中设置环境变量(下面需给绝对路径):
export LD_LIBRARY_PATH=/resource/x86libs/:$LD_LIBRARY_PATH
设置好依赖环境之后,可参考这里教程在x86环境中模拟启动多个客户端进行联邦学习。