Skip to content

Commit

Permalink
add NPU support for several models (#919)
Browse files Browse the repository at this point in the history
  • Loading branch information
USTCKAY authored May 5, 2023
1 parent d938b5c commit 0445177
Show file tree
Hide file tree
Showing 13 changed files with 78 additions and 41 deletions.
11 changes: 9 additions & 2 deletions models/contentunderstanding/tagspace/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,21 @@ def __init__(self, vocab_text_size, vocab_tag_size, emb_dim, hid_dim,
self.neg_size = neg_size
self.text_len = text_len

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

self.text_embedding = paddle.nn.Embedding(
self.vocab_text_size,
self.emb_dim,
padding_idx=75377,
sparse=True,
sparse=use_sparse,
name="text_emb")
self.tag_embedding = paddle.nn.Embedding(
self.vocab_tag_size, self.emb_dim, sparse=True, name="tag_emb")
self.vocab_tag_size,
self.emb_dim,
sparse=use_sparse,
name="tag_emb")

self.conv = nn.Conv1D(
in_channels=self.emb_dim,
Expand Down
6 changes: 5 additions & 1 deletion models/multitask/escm2/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,14 @@ def __init__(self, sparse_feature_number, sparse_feature_dim, num_field,
self.gate_num = 2
self.feature_size = feature_size

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

self.embedding = paddle.nn.Embedding(
self.sparse_feature_number,
self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
padding_idx=0,
weight_attr=paddle.ParamAttr(
name="SparseFeatFactors",
Expand Down
6 changes: 5 additions & 1 deletion models/multitask/esmm/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,14 @@ def __init__(self, sparse_feature_number, sparse_feature_dim, num_field,
self.ctr_layer_sizes = ctr_layer_sizes
self.cvr_layer_sizes = cvr_layer_sizes

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

self.embedding = paddle.nn.Embedding(
self.sparse_feature_number,
self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
padding_idx=0,
weight_attr=paddle.ParamAttr(
name="SparseFeatFactors",
Expand Down
6 changes: 5 additions & 1 deletion models/rank/dcn/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,15 @@ def __init__(self, sparse_feature_number, sparse_feature_dim,

self.init_value_ = 0.1

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

# sparse coding
self.embedding = paddle.nn.Embedding(
self.sparse_feature_number,
self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
padding_idx=0,
weight_attr=paddle.ParamAttr(
initializer=paddle.nn.initializer.TruncatedNormal(
Expand Down
6 changes: 5 additions & 1 deletion models/rank/dcn_v2/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,15 @@ def __init__(self, sparse_feature_number, sparse_feature_dim,

self.init_value_ = 0.1

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

# sparse coding
self.embedding = paddle.nn.Embedding(
self.sparse_feature_number,
self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
padding_idx=0,
weight_attr=paddle.ParamAttr(
initializer=paddle.nn.initializer.TruncatedNormal(
Expand Down
11 changes: 8 additions & 3 deletions models/rank/deeprec/infer.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def main(args):
# tools.vars
use_gpu = config.get("runner.use_gpu", True)
use_xpu = config.get("runner.use_xpu", False)
use_npu = config.get("runner.use_npu", False)
use_visual = config.get("runner.use_visual", False)
test_data_dir = config.get("runner.test_data_dir", None)
print_interval = config.get("runner.print_interval", None)
Expand All @@ -99,16 +100,20 @@ def main(args):

logger.info("**************common.configs**********")
logger.info(
"use_gpu: {}, use_xpu: {}, use_visual: {}, infer_batch_size: {}, \
"use_gpu: {}, use_xpu: {}, use_npu: {}, use_visual: {}, infer_batch_size: {}, \
test_data_dir: {}, start_epoch: {}, end_epoch: {}, \
print_interval: {}, model_load_path: {}"
.format(use_gpu, use_xpu, use_visual, infer_batch_size, test_data_dir,
start_epoch, end_epoch, print_interval, model_load_path))
.format(use_gpu, use_xpu, use_npu, use_visual, infer_batch_size,
test_data_dir, start_epoch, end_epoch, print_interval,
model_load_path))
logger.info("**************common.configs**********")

if use_xpu:
xpu_device = 'xpu:{0}'.format(os.getenv('FLAGS_selected_xpus', 0))
place = paddle.set_device(xpu_device)
elif use_npu:
npu_device = 'npu:{0}'.format(os.getenv('FLAGS_selected_npus', 0))
place = paddle.set_device(npu_device)
else:
place = paddle.set_device('gpu' if use_gpu else 'cpu')

Expand Down
10 changes: 7 additions & 3 deletions models/rank/deeprec/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ def main(args):
# tools.vars
use_gpu = config.get("runner.use_gpu", True)
use_xpu = config.get("runner.use_xpu", False)
use_npu = config.get("runner.use_npu", False)
use_visual = config.get("runner.use_visual", False)
train_data_dir = config.get("runner.train_data_dir", None)
epochs = config.get("runner.epochs", None)
Expand All @@ -75,16 +76,19 @@ def main(args):

logger.info("**************common.configs**********")
logger.info(
"use_gpu: {}, use_xpu: {}, use_visual: {}, train_batch_size: {}, \
"use_gpu: {}, use_xpu: {}, use_npu: {}, use_visual: {}, train_batch_size: {}, \
train_data_dir: {}, epochs: {}, print_interval: {}, \
model_save_path: {}"
.format(use_gpu, use_xpu, use_visual, train_batch_size, train_data_dir,
epochs, print_interval, model_save_path))
.format(use_gpu, use_xpu, use_npu, use_visual, train_batch_size,
train_data_dir, epochs, print_interval, model_save_path))
logger.info("**************common.configs**********")

if use_xpu:
xpu_device = 'xpu:{0}'.format(os.getenv('FLAGS_selected_xpus', 0))
place = paddle.set_device(xpu_device)
elif use_npu:
npu_device = 'npu:{0}'.format(os.getenv('FLAGS_selected_npus', 0))
place = paddle.set_device(npu_device)
else:
place = paddle.set_device('gpu' if use_gpu else 'cpu')

Expand Down
8 changes: 6 additions & 2 deletions models/rank/difm/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,21 @@ def __init__(self, sparse_field_num, sparse_feature_num,
units_list=fen_layers_size,
activation="relu")

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

self.sparse_embedding = paddle.nn.Embedding(
num_embeddings=self.sparse_feature_num,
embedding_dim=self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="SparseFeatFactors",
initializer=paddle.nn.initializer.Uniform()))
self.sparse_weight = paddle.nn.Embedding(
num_embeddings=self.sparse_feature_num,
embedding_dim=1,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="SparseFeatFactors2",
initializer=paddle.nn.initializer.Uniform()))
Expand Down
6 changes: 5 additions & 1 deletion models/rank/dlrm/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,14 @@ def __init__(self,
input_shape=self.concat_size + sparse_feature_dim,
units_list=top_layer_sizes)

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

self.embedding = paddle.nn.Embedding(
num_embeddings=self.sparse_feature_number,
embedding_dim=self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="SparseFeatFactors",
initializer=paddle.nn.initializer.TruncatedNormal()))
Expand Down
16 changes: 10 additions & 6 deletions models/rank/dmr/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,34 +48,38 @@ def __init__(self, user_size, cms_segid_size, cms_group_id_size,
self.other_embedding_size = other_embedding_size
self.history_length = 50

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

self.uid_embeddings_var = paddle.nn.Embedding(
self.user_size,
self.main_embedding_size,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="UidSparseFeatFactors",
initializer=nn.initializer.Uniform()))

self.mid_embeddings_var = paddle.nn.Embedding(
self.adgroup_id_size,
self.main_embedding_size,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="MidSparseFeatFactors",
initializer=nn.initializer.Uniform()))

self.cat_embeddings_var = paddle.nn.Embedding(
self.cate_size,
self.main_embedding_size,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="CatSparseFeatFactors",
initializer=nn.initializer.Uniform()))

self.brand_embeddings_var = paddle.nn.Embedding(
self.brand_size,
self.main_embedding_size,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="BrandSparseFeatFactors",
initializer=nn.initializer.Uniform()))
Expand All @@ -99,15 +103,15 @@ def __init__(self, user_size, cms_segid_size, cms_group_id_size,
self.campaign_id_embeddings_var = paddle.nn.Embedding(
self.campaign_id_size,
self.main_embedding_size,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="CampSparseFeatFactors",
initializer=nn.initializer.Uniform()))

self.customer_embeddings_var = paddle.nn.Embedding(
self.customer_size,
self.main_embedding_size,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
name="CustomSparseFeatFactors",
initializer=nn.initializer.Uniform()))
Expand Down
8 changes: 6 additions & 2 deletions models/rank/xdeepfm/net.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,15 @@ def __init__(self, sparse_feature_number, sparse_feature_dim,
self.sparse_num_field = sparse_num_field
self.init_value_ = 0.1

use_sparse = True
if paddle.is_compiled_with_custom_device('npu'):
use_sparse = False

# sparse part coding
self.embedding_one = paddle.nn.Embedding(
sparse_feature_number,
1,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
initializer=paddle.nn.initializer.TruncatedNormal(
mean=0.0,
Expand All @@ -80,7 +84,7 @@ def __init__(self, sparse_feature_number, sparse_feature_dim,
self.embedding = paddle.nn.Embedding(
self.sparse_feature_number,
self.sparse_feature_dim,
sparse=True,
sparse=use_sparse,
weight_attr=paddle.ParamAttr(
initializer=paddle.nn.initializer.TruncatedNormal(
mean=0.0,
Expand Down
13 changes: 4 additions & 9 deletions tools/infer.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ def main(args):
use_auc = config.get("runner.use_auc", False)
use_xpu = config.get("runner.use_xpu", False)
use_npu = config.get("runner.use_npu", False)
use_ascend = config.get("runner.use_ascend", False)
use_visual = config.get("runner.use_visual", False)
test_data_dir = config.get("runner.test_data_dir", None)
print_interval = config.get("runner.print_interval", None)
Expand All @@ -79,10 +78,10 @@ def main(args):

logger.info("**************common.configs**********")
logger.info(
"use_gpu: {}, use_xpu: {}, use_npu: {}, use_ascend: {}, use_visual: {}, infer_batch_size: {}, test_data_dir: {}, start_epoch: {}, end_epoch: {}, print_interval: {}, model_load_path: {}".
format(use_gpu, use_xpu, use_npu, use_ascend, use_visual,
infer_batch_size, test_data_dir, start_epoch, end_epoch,
print_interval, model_load_path))
"use_gpu: {}, use_xpu: {}, use_npu: {}, use_visual: {}, infer_batch_size: {}, test_data_dir: {}, start_epoch: {}, end_epoch: {}, print_interval: {}, model_load_path: {}".
format(use_gpu, use_xpu, use_npu, use_visual, infer_batch_size,
test_data_dir, start_epoch, end_epoch, print_interval,
model_load_path))
logger.info("**************common.configs**********")

if use_xpu:
Expand All @@ -91,10 +90,6 @@ def main(args):
elif use_npu:
npu_device = 'npu:{0}'.format(os.getenv('FLAGS_selected_npus', 0))
place = paddle.set_device(npu_device)
elif use_ascend:
ascend_device = 'ascend:{0}'.format(
os.getenv('FLAGS_selected_ascends', 0))
place = paddle.set_device(ascend_device)
else:
place = paddle.set_device('gpu' if use_gpu else 'cpu')

Expand Down
12 changes: 3 additions & 9 deletions tools/trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,6 @@ def main(args):
use_auc = config.get("runner.use_auc", False)
use_npu = config.get("runner.use_npu", False)
use_xpu = config.get("runner.use_xpu", False)
use_ascend = config.get("runner.use_ascend", False)
use_visual = config.get("runner.use_visual", False)
train_data_dir = config.get("runner.train_data_dir", None)
epochs = config.get("runner.epochs", None)
Expand All @@ -81,10 +80,9 @@ def main(args):

logger.info("**************common.configs**********")
logger.info(
"use_gpu: {}, use_xpu: {}, use_npu: {}, use_ascend: {}, use_visual: {}, train_batch_size: {}, train_data_dir: {}, epochs: {}, print_interval: {}, model_save_path: {}".
format(use_gpu, use_xpu, use_npu, use_ascend, use_visual,
train_batch_size, train_data_dir, epochs, print_interval,
model_save_path))
"use_gpu: {}, use_xpu: {}, use_npu: {}, use_visual: {}, train_batch_size: {}, train_data_dir: {}, epochs: {}, print_interval: {}, model_save_path: {}".
format(use_gpu, use_xpu, use_npu, use_visual, train_batch_size,
train_data_dir, epochs, print_interval, model_save_path))
logger.info("**************common.configs**********")

if use_xpu:
Expand All @@ -93,10 +91,6 @@ def main(args):
elif use_npu:
npu_device = 'npu:{0}'.format(os.getenv('FLAGS_selected_npus', 0))
place = paddle.set_device(npu_device)
elif use_ascend:
ascend_device = 'ascend:{0}'.format(
os.getenv('FLAGS_selected_ascends', 0))
place = paddle.set_device(ascend_device)
else:
place = paddle.set_device('gpu' if use_gpu else 'cpu')

Expand Down

0 comments on commit 0445177

Please sign in to comment.