Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TIPC] Add scripts for npu and xpu, test=develop #3377

Merged
merged 7 commits into from
Sep 29, 2022
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/language_model/gpt-3/dygraph/args.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ def parse_args(MODEL_CLASSES):
parser.add_argument("--device",
type=str,
default="gpu",
choices=["cpu", "gpu", "xpu"],
choices=["cpu", "gpu", "xpu", "npu"],
help="select cpu, gpu, xpu devices.")
parser.add_argument("--lr_decay_style",
type=str,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def parse_args():
parser.add_argument("--device",
default="gpu",
type=str,
choices=["gpu", "xpu", "cpu"],
choices=["gpu", "xpu", "cpu", "npu"],
help="Device to use during inference. ")
parser.add_argument("--use_mkl",
default=False,
Expand Down Expand Up @@ -131,7 +131,9 @@ def create_predictor(cls,
if args.device == "gpu":
config.enable_use_gpu(100, 0)
elif args.device == "xpu":
config.enable_xpu(100)
config.enable_xpu()
elif args.device == "npu":
config.enable_npu()
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add npu device

else:
# CPU
config.disable_gpu()
Expand Down
12 changes: 12 additions & 0 deletions examples/machine_translation/transformer/predict.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,13 @@ def parse_args():
type=str,
help="The eos token. It should be provided when use custom vocab_file. "
)
parser.add_argument(
"--device",
default="gpu",
choices=["gpu", "cpu", "xpu", "npu"],
help="Device selected for inference."
)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add arguement "--device" to enable npu/xpu

args = parser.parse_args()
return args

Expand All @@ -83,6 +90,10 @@ def post_process_seq(seq, bos_idx, eos_idx, output_bos=False, output_eos=False):
def do_predict(args):
if args.device == "gpu":
place = "gpu"
elif args.device == "xpu":
place = "xpu"
elif args.device == "npu":
place = "npu"
else:
place = "cpu"

Expand Down Expand Up @@ -157,6 +168,7 @@ def do_predict(args):
args.unk_token = ARGS.unk_token
args.bos_token = ARGS.bos_token
args.eos_token = ARGS.eos_token
args.device = ARGS.device
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

transform ARGS.device to args.device

pprint(args)

do_predict(args)
13 changes: 13 additions & 0 deletions examples/machine_translation/transformer/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ def parse_args():
type=str,
choices=['true', 'false', 'True', 'False'],
help="Whether to use amp to train Transformer. ")
parser.add_argument("--device",
default="gpu",
choices=["gpu", "cpu", "xpu", "npu"],
help="Device selected for inference.")
parser.add_argument(
"--amp_level",
default=None,
Expand All @@ -126,6 +130,14 @@ def do_train(args):
if args.device == "gpu":
rank = dist.get_rank()
trainer_count = dist.get_world_size()
elif args.device == "npu":
rank = dist.get_rank()
trainer_count = dist.get_world_size()
paddle.set_device("npu")
elif args.device == "xpu":
rank = dist.get_rank()
trainer_count = dist.get_world_size()
paddle.set_device("xpu")
else:
rank = 0
trainer_count = 1
Expand Down Expand Up @@ -401,6 +413,7 @@ def do_train(args):
args.bos_token = ARGS.bos_token
args.eos_token = ARGS.eos_token
args.to_static = ARGS.to_static
args.device = ARGS.device
pprint(args)

args.profiler_options = ARGS.profiler_options
Expand Down
2 changes: 1 addition & 1 deletion model_zoo/bert/run_pretrain.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def parse_args():
parser.add_argument("--device",
type=str,
default="gpu",
choices=["cpu", "gpu", "xpu"],
choices=["cpu", "gpu", "xpu", "npu"],
help="Device for selecting for the training.")
parser.add_argument("--use_amp",
type=distutils.util.strtobool,
Expand Down
2 changes: 1 addition & 1 deletion model_zoo/gpt/args.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ def parse_args(MODEL_CLASSES):
parser.add_argument("--device",
type=str,
default="gpu",
choices=["cpu", "gpu", "xpu"],
choices=["cpu", "gpu", "xpu", "npu"],
help="select cpu, gpu, xpu devices.")
parser.add_argument("--lr_decay_style",
type=str,
Expand Down
7 changes: 5 additions & 2 deletions tests/test_tipc/bigru_crf/deploy/predict.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
parser.add_argument("--data_dir", type=str, default=None, help="The folder where the dataset is located.")
parser.add_argument("--batch_size", type=int, default=2, help="The number of sequences contained in a mini-batch.")
parser.add_argument("--max_seq_len", type=int, default=128, help="Number of words of the longest seqence.")
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu", "npu", "xpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
parser.add_argument("--benchmark", type=eval, default=False, help="To log some information about environment and running.")
parser.add_argument("--save_log_path", type=str, default="./log_output/", help="The file path to save log.")
parser.add_argument('--use_tensorrt', default=False, type=eval, choices=[True, False], help='Enable to use tensorrt to speed up.')
Expand Down Expand Up @@ -202,7 +202,10 @@ def __init__(self,
config.set_cpu_math_library_num_threads(args.cpu_threads)
elif device == "xpu":
# set XPU configs accordingly
config.enable_xpu(100)
config.enable_xpu()
elif device == "npu":
# set NPU configs accordingly
config.enable_npu()
config.switch_use_feed_fetch_ops(False)
self.predictor = paddle.inference.create_predictor(config)

Expand Down
7 changes: 5 additions & 2 deletions tests/test_tipc/ernie_information_extraction/predict.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,10 @@ def __init__(self,
config.set_cpu_math_library_num_threads(cpu_threads)
elif device == "xpu":
# set XPU configs accordingly
config.enable_xpu(100)
config.enable_xpu()
elif device == "npu":
# set NPU configs accordingly
config.enable_npu()

config.switch_use_feed_fetch_ops(False)
self.predictor = paddle.inference.create_predictor(config)
Expand Down Expand Up @@ -250,7 +253,7 @@ def predict(self,
parser.add_argument("--model_dir", type=str, default='./output', help="The path to parameters in static graph.")
parser.add_argument("--data_dir", type=str, default="./waybill_ie/data", help="The folder where the dataset is located.")
parser.add_argument("--batch_size", type=int, default=32, help="The number of sequences contained in a mini-batch.")
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu", "npu", "xpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
parser.add_argument('--use_tensorrt', default=False, type=eval, choices=[True, False], help='Enable to use tensorrt to speed up.')
parser.add_argument("--precision", default="fp32", type=str, choices=["fp32", "fp16", "int8"], help='The tensorrt precision.')
parser.add_argument('--cpu_threads', default=10, type=int, help='Number of threads to predict when using cpu.')
Expand Down
2 changes: 1 addition & 1 deletion tests/test_tipc/ernie_information_extraction/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ def do_train(args):
parser.add_argument("--save_dir", default='./checkpoint', type=str, help="The output directory where the model checkpoints will be written.")
parser.add_argument("--epochs", default=10, type=int, help="Total number of training epochs to perform.")
parser.add_argument("--batch_size", default=200, type=int, help="Batch size per GPU/CPU for training.")
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
parser.add_argument("--device", default="gpu", type=str, choices=["cpu", "gpu", "npu", "xpu"] ,help="The device to select to train the model, is must be cpu/gpu.")
parser.add_argument("--seed", type=int, default=1000, help="Random seed for initialization.")
parser.add_argument("--max_steps", default=-1, type=int, help="If > 0: set total number of training steps to perform.")
parser.add_argument("--data_dir", default='./waybill_ie/data', type=str, help="The folder where the dataset is located.")
Expand Down
2 changes: 1 addition & 1 deletion tests/test_tipc/ernie_text_cls/predict.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ def predict(self, data, tokenizer, label_map):
parser.add_argument("--model_dir", type=str, required=True, help="The directory to static model.")
parser.add_argument("--max_seq_length", default=128, type=int, help="The maximum total input sequence length after tokenization. Sequences longer than this will be truncated, sequences shorter will be padded.")
parser.add_argument("--batch_size", default=2, type=int, help="Batch size per GPU/CPU for training.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu', 'npu'], default="gpu", help="Select which device to train model, defaults to gpu.")
parser.add_argument('--use_tensorrt', default=False, type=eval, choices=[True, False], help='Enable to use tensorrt to speed up.')
parser.add_argument("--precision", default="fp32", type=str, choices=["fp32", "fp16", "int8"], help='The tensorrt precision.')
parser.add_argument('--cpu_threads', default=10, type=int, help='Number of threads to predict when using cpu.')
Expand Down
2 changes: 1 addition & 1 deletion tests/test_tipc/ernie_text_cls/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ def do_train(args):
parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.")
parser.add_argument("--seed", type=int, default=1000, help="random seed for initialization")
parser.add_argument("--max_steps", default=-1, type=int, help="If > 0: set total number of training steps to perform.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu', 'npu'], default="gpu", help="Select which device to train model, defaults to gpu.")
args = parser.parse_args()
# yapf: enable

Expand Down
7 changes: 5 additions & 2 deletions tests/test_tipc/ernie_text_matching/predict.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@ def __init__(self,
config.set_cpu_math_library_num_threads(cpu_threads)
elif device == "xpu":
# set XPU configs accordingly
config.enable_xpu(100)
config.enable_xpu()
elif device == "npu":
# set NPU configs accordingly
config.enable_npu()

config.switch_use_feed_fetch_ops(False)
self.predictor = paddle.inference.create_predictor(config)
Expand Down Expand Up @@ -183,7 +186,7 @@ def predict(self, data, tokenizer, label_map):
parser.add_argument("--model_dir", type=str, required=True, help="The directory to static model.")
parser.add_argument("--max_seq_length", default=128, type=int, help="The maximum total input sequence length after tokenization. Sequences longer than this will be truncated, sequences shorter will be padded.")
parser.add_argument("--batch_size", default=32, type=int, help="Batch size per GPU/CPU for training.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu', 'npu'], default="gpu", help="Select which device to train model, defaults to gpu.")
parser.add_argument('--use_tensorrt', default=False, type=eval, choices=[True, False], help='Enable to use tensorrt to speed up.')
parser.add_argument("--precision", default="fp32", type=str, choices=["fp32", "fp16", "int8"], help='The tensorrt precision.')
parser.add_argument('--cpu_threads', default=10, type=int, help='Number of threads to predict when using cpu.')
Expand Down
2 changes: 1 addition & 1 deletion tests/test_tipc/ernie_text_matching/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ def do_train(args):
parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.")
parser.add_argument("--seed", type=int, default=1000, help="Random seed for initialization.")
parser.add_argument("--max_steps", default=-1, type=int, help="If > 0: set total number of training steps to perform.")
parser.add_argument('--device', choices=['cpu', 'gpu'], default="gpu", help="Select which device to train model, defaults to gpu.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'npu', 'xpu'], default="gpu", help="Select which device to train model, defaults to gpu.")
args = parser.parse_args()
# yapf: enable
do_train(args)
42 changes: 42 additions & 0 deletions tests/test_tipc/test_train_inference_python_npu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash
source test_tipc/common_func.sh

function readlinkf() {
perl -MCwd -e 'print Cwd::abs_path shift' "$1";
}

function func_parser_config() {
strs=$1
IFS=" "
array=(${strs})
tmp=${array[2]}
echo ${tmp}
}

BASEDIR=$(dirname "$0")
REPO_ROOT_PATH=$(readlinkf ${BASEDIR}/../)

FILENAME=$1

# change gpu to npu in tipc txt configs
sed -i "s/--device:gpu/--device:npu/g" $FILENAME
sed -i "s/state=GPU/state=NPU/g" $FILENAME
sed -i "s/trainer:pact_train/trainer:norm_train/g" $FILENAME
sed -i "s/trainer:fpgm_train/trainer:norm_train/g" $FILENAME
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change "pact_train" or "fpgm_train" to "norm_train"

sed -i "s/--device:cpu|gpu/--device:cpu|npu/g" $FILENAME
sed -i "s/--device:gpu|cpu/--device:cpu|npu/g" $FILENAME
sed -i "s/--benchmark:True/--benchmark:False/g" $FILENAME
sed -i "s/--use_tensorrt:False|True/--use_tensorrt:False/g" $FILENAME
sed -i 's/\"gpu\"/\"npu\"/g' test_tipc/test_train_inference_python.sh

# parser params
dataline=`cat $FILENAME`
IFS=$'\n'
lines=(${dataline})

# pass parameters to test_train_inference_python.sh
cmd="bash test_tipc/test_train_inference_python.sh ${FILENAME} $2"
echo $cmd
eval $cmd


42 changes: 42 additions & 0 deletions tests/test_tipc/test_train_inference_python_xpu.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash
source test_tipc/common_func.sh

function readlinkf() {
perl -MCwd -e 'print Cwd::abs_path shift' "$1";
}

function func_parser_config() {
strs=$1
IFS=" "
array=(${strs})
tmp=${array[2]}
echo ${tmp}
}

BASEDIR=$(dirname "$0")
REPO_ROOT_PATH=$(readlinkf ${BASEDIR}/../)

FILENAME=$1

# change gpu to npu in tipc txt configs
sed -i "s/--device:gpu/--device:xpu/g" $FILENAME
sed -i "s/state=GPU/state=XPU/g" $FILENAME
sed -i "s/trainer:pact_train/trainer:norm_train/g" $FILENAME
sed -i "s/trainer:fpgm_train/trainer:norm_train/g" $FILENAME
sed -i "s/--device:cpu|gpu/--device:cpu|xpu/g" $FILENAME
sed -i "s/--device:gpu|cpu/--device:cpu|xpu/g" $FILENAME
sed -i "s/--benchmark:True/--benchmark:False/g" $FILENAME
sed -i "s/--use_tensorrt:False|True/--use_tensorrt:False/g" $FILENAME
sed -i 's/\"gpu\"/\"npu\"/g' test_tipc/test_train_inference_python.sh

# parser params
dataline=`cat $FILENAME`
IFS=$'\n'
lines=(${dataline})

# pass parameters to test_train_inference_python.sh
cmd="bash test_tipc/test_train_inference_python.sh ${FILENAME} $2"
echo $cmd
eval $cmd


15 changes: 15 additions & 0 deletions tests/transformer/train.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,12 @@ def parse_args():
type=str,
help="The eos token. It should be provided when use custom vocab_file. "
)
parser.add_argument(
"--device",
default="gpu",
choices=["gpu", "cpu", "xpu", "npu"],
help="Device selected for inference.")

args = parser.parse_args()
return args

Expand All @@ -95,6 +101,14 @@ def do_train(args):
if args.device == "gpu":
rank = dist.get_rank()
trainer_count = dist.get_world_size()
elif args.device == "npu":
rank = dist.get_rank()
trainer_count = dist.get_world_size()
paddle.set_device("npu")
elif args.device == "xpu":
rank = dist.get_rank()
trainer_count = dist.get_world_size()
paddle.set_device("xpu")
else:
rank = 0
trainer_count = 1
Expand Down Expand Up @@ -317,6 +331,7 @@ def do_train(args):
args.unk_token = ARGS.unk_token
args.bos_token = ARGS.bos_token
args.eos_token = ARGS.eos_token
args.device = ARGS.device
pprint(args)

do_train(args)