!32293 FL x86 ST for lenet

Merge pull request !32293 from zhangzhaoju/master_st
This commit is contained in:
i-robot 2022-04-13 06:18:53 +00:00 committed by Gitee
commit b587006ea7
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 128 additions and 24 deletions

View File

@ -28,6 +28,7 @@ MS_ALL:
mindspore/ccsrc/backend/kernel_compiler mindspore/ccsrc/backend/kernel_compiler
mindspore/ccsrc/fl mindspore/ccsrc/fl
mindspore/ccsrc/ps mindspore/ccsrc/ps
tests/st/fl
MS_CLOUD: MS_CLOUD:
mindspore/python mindspore/python
mindspore/ccsrc mindspore/ccsrc

View File

@ -14,6 +14,7 @@ inference_finish_tag="inference finish"
resource_path=$1 resource_path=$1
packages_path=$2 packages_path=$2
jdk_path=$3 jdk_path=$3
case_code_path=$4
scrip_path=$(dirname "$(dirname "$(readlink -f "$0")")") scrip_path=$(dirname "$(dirname "$(readlink -f "$0")")")
@ -24,14 +25,14 @@ echo "$tag the packages_path: $packages_path"
echo "$tag the scrip_path: $scrip_path" echo "$tag the scrip_path: $scrip_path"
echo "$tag the cloud_tarin file: $cloud_tarin" echo "$tag the cloud_tarin file: $cloud_tarin"
exit_opt() clear_env()
{ {
echo "$tag Clear temporary files." echo "$tag Clear temporary files."
cd $scrip_path cd $scrip_path
rm -rf temp rm -rf temp
echo "$tag finish server" echo "$tag finish server"
python finish_mobile.py --scheduler_port=6001 python finish_mobile.py --scheduler_port=${scheduler_port}
echo "$tag finish client" echo "$tag finish client"
cd ./ci_script cd ./ci_script
@ -50,7 +51,7 @@ check_exe_result()
{ {
if [ "$?" != "0" ]; then if [ "$?" != "0" ]; then
echo "$tag catch error when $1, will return 1, please check" echo "$tag catch error when $1, will return 1, please check"
exit_opt clear_env
exit 1 exit 1
fi fi
} }
@ -58,7 +59,7 @@ check_exe_result()
check_document() { check_document() {
if [ ! -d "$1" ]; then if [ ! -d "$1" ]; then
echo "$tag the $2: $1 is not exist, will return 1, please check" echo "$tag the $2: $1 is not exist, will return 1, please check"
exit_opt clear_env
exit 1 exit 1
fi fi
} }
@ -66,7 +67,7 @@ check_document() {
check_file() { check_file() {
if [ ! -f "$1" ]; then if [ ! -f "$1" ]; then
echo "$tag the $2: $1 is not exist, will return 1, please check" echo "$tag the $2: $1 is not exist, will return 1, please check"
exit_opt clear_env
exit 1 exit 1
fi fi
} }
@ -83,7 +84,7 @@ echo "$tag the server_package: $server_package"
if [ ! -f "$client_package" ] || [ ! -f "$server_package" ]; then if [ ! -f "$client_package" ] || [ ! -f "$server_package" ]; then
echo "$tag the client_package or the server_package is not exist, do not start the FL ci, will return 0." echo "$tag the client_package or the server_package is not exist, do not start the FL ci, will return 0."
exit_opt clear_env
exit 0 exit 0
fi fi
@ -116,14 +117,17 @@ temp_path=$scrip_path/temp
echo "$tag ****add code for server****" echo "$tag ****add code for server****"
cd $resource_path/server/script/ cd $resource_path/server/script/
sh del_code.sh $cloud_tarin #delete first avoid, duplicate add
sh add_code.sh $cloud_tarin sh add_code.sh $cloud_tarin
check_exe_result "add code for server" check_exe_result "add code for server"
echo "$tag **************** <4> prepare parameters for server ****************" echo "$tag **************** <4> prepare parameters for server ****************"
scheduler_ip=$ip scheduler_ip=$ip
scheduler_port=6001 PORT_START_POS=6000
scheduler_manage_port=6000 #PORT_RANG=$(($RANDOM % 100 * 10 + $PORT_START_POS))
fl_server_port=6003 scheduler_manage_port=${PORT_START_POS}
scheduler_port=$((PORT_START_POS + 1))
fl_server_port=$((PORT_START_POS + 3))
server_num=1 server_num=1
worker_num=0 worker_num=0
enable_ssl="False" enable_ssl="False"
@ -144,7 +148,7 @@ echo "$tag **************** <5> prepare libs,jar,initial model for client*******
cd $resource_path/client/ cd $resource_path/client/
cp -rf $client_package $temp_path/packages/ cp -rf $client_package $temp_path/packages/
cd $temp_path/packages cd $temp_path/packages
tar -zxvf mindspore-*.tar.gz tar -zxf mindspore-*.tar.gz
libminddata_lite=$(ls $temp_path/packages/mindspore-*/runtime/lib/libminddata-lite.so) libminddata_lite=$(ls $temp_path/packages/mindspore-*/runtime/lib/libminddata-lite.so)
libmindspore_lite_jni=$(ls $temp_path/packages/mindspore-*/runtime/lib/libmindspore-lite-jni.so) libmindspore_lite_jni=$(ls $temp_path/packages/mindspore-*/runtime/lib/libmindspore-lite-jni.so)
libmindspore_lite_train=$(ls $temp_path/packages/mindspore-*/runtime/lib/libmindspore-lite-train.so) libmindspore_lite_train=$(ls $temp_path/packages/mindspore-*/runtime/lib/libmindspore-lite-train.so)
@ -183,17 +187,21 @@ echo "$tag the frame jar file: $frame_jar_path for fl is exist"
echo "$tag ****5-3: prepare case jar for client****" echo "$tag ****5-3: prepare case jar for client****"
mkdir case_jar mkdir case_jar
root_path=$(dirname "$(dirname "$(dirname "$(dirname $scrip_path)")")") #root_path=$(dirname "$(dirname "$(dirname "$(dirname $scrip_path)")")")
case_code_path=$root_path/mindspore/lite/examples/quick_start_flclient #case_code_path=$root_path/mindspore/lite/examples/quick_start_flclient
client_tar_path=$(ls $temp_path/packages/mindspore-*.tar.gz) if [ -e "$resource_path"/ci_jar/quick_start_flclient.jar ]; then
cd $case_code_path cp -rf "$resource_path"/ci_jar/quick_start_flclient.jar "$temp_path"/packages/case_jar/
sh ./build.sh -r $client_tar_path else
check_exe_result "sh ./build.sh -r $client_tar_path" client_tar_path=$(ls "$temp_path"/packages/mindspore-*.tar.gz)
build_case_jar_path=$case_code_path/target/quick_start_flclient.jar cd $case_code_path
echo "$tag check the case jar file <$build_case_jar_path> after run sh build.sh in document <$case_code_path> for fl" sh ./build.sh -r "$client_tar_path"
check_file $build_case_jar_path "build_case_jar_path" check_exe_result "sh ./build.sh -r $client_tar_path"
echo "$tag the case jar file: $build_case_jar_path for fl is exist" build_case_jar_path=$case_code_path/target/quick_start_flclient.jar
cp -rf $build_case_jar_path $temp_path/packages/case_jar/ echo "$tag check the case jar file <$build_case_jar_path> after run sh build.sh in document <$case_code_path> for fl"
check_file $build_case_jar_path "build_case_jar_path"
echo "$tag the case jar file: $build_case_jar_path for fl is exist"
cp -rf $build_case_jar_path $temp_path/packages/case_jar/
fi
case_jar_path=$temp_path/packages/case_jar/quick_start_flclient.jar case_jar_path=$temp_path/packages/case_jar/quick_start_flclient.jar
echo "$tag check the case jar file: $case_jar_path for fl" echo "$tag check the case jar file: $case_jar_path for fl"
check_file $case_jar_path "case_jar_path" check_file $case_jar_path "case_jar_path"
@ -248,7 +256,7 @@ echo "$tag $cmd_server"
server_start=`date +%s` server_start=`date +%s`
server_tag=1 server_tag=1
python finish_mobile.py --scheduler_port=${scheduler_port} #stop server before start avoid pre stop not execute.
python run_mobile_sched.py --scheduler_ip=$scheduler_ip --scheduler_port=$scheduler_port --server_num=$server_num --worker_num=$worker_num --scheduler_manage_port=$scheduler_manage_port --enable_ssl=$enable_ssl --config_file_path=$config_file_path \ python run_mobile_sched.py --scheduler_ip=$scheduler_ip --scheduler_port=$scheduler_port --server_num=$server_num --worker_num=$worker_num --scheduler_manage_port=$scheduler_manage_port --enable_ssl=$enable_ssl --config_file_path=$config_file_path \
&& python run_mobile_server.py --scheduler_ip=$scheduler_ip --scheduler_port=$scheduler_port --fl_server_port=$fl_server_port --server_num=$server_num \ && python run_mobile_server.py --scheduler_ip=$scheduler_ip --scheduler_port=$scheduler_port --fl_server_port=$fl_server_port --server_num=$server_num \
--worker_num=$worker_num --start_fl_job_threshold=$start_fl_job_threshold --client_batch_size=$client_batch_size --client_epoch_num=$client_epoch_num --fl_iteration_num=$fl_iteration_num \ --worker_num=$worker_num --start_fl_job_threshold=$start_fl_job_threshold --client_batch_size=$client_batch_size --client_epoch_num=$client_epoch_num --fl_iteration_num=$fl_iteration_num \
@ -272,6 +280,13 @@ do
done done
if [ "$server_tag" = 0 ]; then if [ "$server_tag" = 0 ]; then
echo "$tag server started successfully" echo "$tag server started successfully"
else
echo "server_log log start ++++++++++++++++++++++++++++++++++++++"
cat $server_log
echo "server_log log end ++++++++++++++++++++++++++++++++++++++"
echo "scheduler_log log start ++++++++++++++++++++++++++++++++++++++"
cat $scrip_path/scheduler/scheduler.log
echo "scheduler_log log end ++++++++++++++++++++++++++++++++++++++"
fi fi
server_end=`date +%s` server_end=`date +%s`
server_time=`echo $server_start $server_end | awk '{print $2-$1}'` server_time=`echo $server_start $server_end | awk '{print $2-$1}'`
@ -292,6 +307,7 @@ check_exe_result "export PATH=$jdk_path:$PATH"
train_start=`date +%s` train_start=`date +%s`
train_tag=1 train_tag=1
cd ./ci_script cd ./ci_script
python fl_client_finish.py --kill_tag=mindspore-lite-java-flclient #stop client before start
python fl_client_run_lenet.py --jarPath=$frame_jar_path --case_jarPath=$case_jar_path --train_dataset=$train_dataset \ python fl_client_run_lenet.py --jarPath=$frame_jar_path --case_jarPath=$case_jar_path --train_dataset=$train_dataset \
--test_dataset="null" --vocal_file="null" --ids_file="null" --flName=$flName --train_model_path=$train_model_path \ --test_dataset="null" --vocal_file="null" --ids_file="null" --flName=$flName --train_model_path=$train_model_path \
--infer_model_path=$infer_model_path --ssl_protocol=$ssl_protocol --deploy_env=$deploy_env --domain_name=$domain_name \ --infer_model_path=$infer_model_path --ssl_protocol=$ssl_protocol --deploy_env=$deploy_env --domain_name=$domain_name \
@ -318,6 +334,11 @@ done
if [ "$train_tag" = 0 ]; then if [ "$train_tag" = 0 ]; then
echo "$tag client train finished" echo "$tag client train finished"
else
echo "begin dump train_log..."
cat ${train_log_path}
cat ${server_log}
cat ${scheduler_log}
fi fi
train_end=`date +%s` train_end=`date +%s`
@ -446,12 +467,12 @@ fi
if [ "$train_result" = failed ] || [ "$inference_result" = failed ]; then if [ "$train_result" = failed ] || [ "$inference_result" = failed ]; then
echo "$tag the total results are, train: $train_result, inference: $inference_result" echo "$tag the total results are, train: $train_result, inference: $inference_result"
exit_opt clear_env
exit 1 exit 1
fi fi
echo "$tag the total results are, train: $train_result, inference: $inference_result" echo "$tag the total results are, train: $train_result, inference: $inference_result"
exit_opt clear_env
clear_log clear_log
exit 0 exit 0

View File

@ -0,0 +1,82 @@
#!/bin/bash
# Copyright 2022 Huawei Technologies Co., Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
set -e
usage()
{
echo "Usage:"
echo "bash run_benchmark_net.sh [-h] [-l level] [-r PATH] [-p PATH] [-j PATH] [-m PATH]"
echo "Options:"
echo " -h Print usage"
echo " -l st level, now not used"
echo " -r fl resource path"
echo " -p mindspore x86_whl and lite_x86 pkg/"
echo " -j java jdk path, version 1.9 or later"
echo " -m example module path"
}
base_path=$(dirname "$(readlink -f "$0")")
# Process the options
while getopts 'h:l:r:p:j:m:' opt
do
case "${opt}" in
h)
usage;;
l)
FL_TEST_LEVEL=${OPTARG}
echo "FL_TEST_LEVEL is ${FL_TEST_LEVEL}";;
r)
FL_RESOURCE_PATH=${OPTARG}
echo "FL_RESOURCE_PATH is ${FL_RESOURCE_PATH}";;
p)
X86_PKG_PATH=${OPTARG}
echo "X86_PKG_PATH is ${X86_PKG_PATH}";;
j)
FL_JDK_PATH=${OPTARG}
echo "FL_JDK_PATH is ${FL_JDK_PATH}";;
m)
FL_MODELS_PATH=${OPTARG}
echo "FL_MODELS_PATH is ${FL_MODELS_PATH}";;
*)
echo "Unknown option ${opt}!"
usage
exit 1
esac
done
if [ "X${FL_JDK_PATH}" == "X" ] && [ "X${JAVA_HOME}" != "X" ]; then
FL_JDK_PATH=${JAVA_HOME}/bin
fi
if [ "X${FL_RESOURCE_PATH}" == "X" ]; then
FL_RESOURCE_PATH=${base_path}/fl_resources
fi
if [ "X${FL_RESOURCE_PATH}" == "X" ] || [ "X${X86_PKG_PATH}" == "X" ] || \
[ "X${FL_JDK_PATH}" == "X" ] || [ "X${FL_MODELS_PATH}" == "X" ]; then
echo "FL_RESOURCE_PATH, X86_PKG_PATH, FL_JDK_PATH must be set."
usage
exit 1
fi
cd $base_path/mobile/ci_script
echo "lenet_train_and_infer.sh ${FL_RESOURCE_PATH} ${X86_PKG_PATH} ${FL_JDK_PATH} ${FL_MODELS_PATH} start..."
bash lenet_train_and_infer.sh ${FL_RESOURCE_PATH} ${X86_PKG_PATH} ${FL_JDK_PATH} ${FL_MODELS_PATH}
ret=$?
echo "lenet_train_and_infer.sh ${FL_RESOURCE_PATH} ${X86_PKG_PATH} ${FL_JDK_PATH} ${FL_MODELS_PATH} success."
exit $ret