MCPcopy Create free account
hub / github.com/NVIDIA/FasterTransformer / ft_bert

Function ft_bert

examples/tensorflow/bert/utils/bert.py:344–420  ·  view source on GitHub ↗

Run the bert transformer layer by FasterTransformer. Args: inputs: A tf.Tensor with shape [batch_size, seq_len, hidden_dimension]. The inputs tensor of encoder. The rank must be 3. encoder_args: The arguments for encoder. The details are in the class "Transfo

(inputs,
            encoder_args,
            encoder_vars_dict,
            sequence_length)

Source from the content-addressed store, hash-verified

342 (name, scope_name, actual_rank, str(tensor.shape), str(expected_rank)))
343
344def ft_bert(inputs,
345 encoder_args,
346 encoder_vars_dict,
347 sequence_length):
348 '''
349 Run the bert transformer layer by FasterTransformer.
350 Args:
351 inputs: A tf.Tensor with shape [batch_size, seq_len, hidden_dimension].
352 The inputs tensor of encoder. The rank must be 3.
353 encoder_args: The arguments for encoder. The details are in the class "TransformerArgument" of common.py
354 attention_mask: A tf.Tensor. The attention mask for self attention.
355 encoder_vars_dict: A dict of tf.Tensor or numpy array.
356 The variables for encoder. They can be either some tensor or some numpy array.
357 The key is the name of the tensor, like 'layer_0/attention/self/query/kernel:0'.
358 The value is the corresponding tensor or numpy array
359 sequence_length: A tf.Tensor or numpy array with shape [batch_size].
360 The sequence length of the sentences
361 Outputs:
362 outputs: A tensor with shape [batch_size, seq_len, hidden_dimension].
363 The results of encoder.
364 '''
365 transformer_op_module = tf.load_op_library(os.path.join('./lib/libtf_bert.so'))
366 if encoder_args.int8_mode == 0:
367 outputs = transformer_op_module.bert(
368 inputs,
369 inputs,
370 sequence_length,
371 [encoder_vars_dict['layer_%d/attention/self/query/kernel:0' % id] for id in range(encoder_args.num_layer)],
372 [encoder_vars_dict['layer_%d/attention/self/query/bias:0' % id] for id in range(encoder_args.num_layer)],
373 [encoder_vars_dict['layer_%d/attention/self/key/kernel:0' % id] for id in range(encoder_args.num_layer)],
374 [encoder_vars_dict['layer_%d/attention/self/key/bias:0' % id] for id in range(encoder_args.num_layer)],
375 [encoder_vars_dict['layer_%d/attention/self/value/kernel:0' % id] for id in range(encoder_args.num_layer)],
376 [encoder_vars_dict['layer_%d/attention/self/value/bias:0' % id] for id in range(encoder_args.num_layer)],
377 [encoder_vars_dict['layer_%d/attention/output/dense/kernel:0' % id] for id in range(encoder_args.num_layer)],
378 [encoder_vars_dict['layer_%d/attention/output/dense/bias:0' % id] for id in range(encoder_args.num_layer)],
379 [encoder_vars_dict['layer_%d/attention/output/LayerNorm/beta:0' % id] for id in range(encoder_args.num_layer)],
380 [encoder_vars_dict['layer_%d/attention/output/LayerNorm/gamma:0' % id] for id in range(encoder_args.num_layer)],
381 [encoder_vars_dict['layer_%d/intermediate/dense/kernel:0' % id] for id in range(encoder_args.num_layer)],
382 [encoder_vars_dict['layer_%d/intermediate/dense/bias:0' % id] for id in range(encoder_args.num_layer)],
383 [encoder_vars_dict['layer_%d/output/dense/kernel:0' % id] for id in range(encoder_args.num_layer)],
384 [encoder_vars_dict['layer_%d/output/dense/bias:0' % id] for id in range(encoder_args.num_layer)],
385 [encoder_vars_dict['layer_%d/output/LayerNorm/beta:0' % id] for id in range(encoder_args.num_layer)],
386 [encoder_vars_dict['layer_%d/output/LayerNorm/gamma:0' % id] for id in range(encoder_args.num_layer)],
387 head_num = encoder_args.head_num, size_per_head = encoder_args.size_per_head,
388 inter_size = encoder_args.inter_size,
389 num_layer = encoder_args.num_layer, remove_padding=encoder_args.remove_padding,
390 q_scaling = 1.0)
391 else:
392 outputs = transformer_op_module.bert_int8(
393 inputs,
394 inputs,
395 sequence_length,
396 [encoder_vars_dict['layer_%d/attention/self/query/kernel:0' % id] for id in range(encoder_args.num_layer)],
397 [encoder_vars_dict['layer_%d/attention/self/query/bias:0' % id] for id in range(encoder_args.num_layer)],
398 [encoder_vars_dict['layer_%d/attention/self/key/kernel:0' % id] for id in range(encoder_args.num_layer)],
399 [encoder_vars_dict['layer_%d/attention/self/key/bias:0' % id] for id in range(encoder_args.num_layer)],
400 [encoder_vars_dict['layer_%d/attention/self/value/kernel:0' % id] for id in range(encoder_args.num_layer)],
401 [encoder_vars_dict['layer_%d/attention/self/value/bias:0' % id] for id in range(encoder_args.num_layer)],

Callers 3

bert_exampleFunction · 0.90
_ft_bodyFunction · 0.90
_eff_bodyFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected