MCPcopy Create free account
hub / github.com/PaddlePaddle/FastDeploy / _initialize_attn_backend

Method _initialize_attn_backend

fastdeploy/spec_decode/mtp.py:337–407  ·  view source on GitHub ↗

Initialize attention backends and forward metadata

(
        self,
    )

Source from the content-addressed store, hash-verified

335 self._empty_cache()
336
337 def _initialize_attn_backend(
338 self,
339 ) -> None:
340 """
341 Initialize attention backends and forward metadata
342 """
343 assert len(self.attn_backends) == 0
344
345 num_heads = self.model_config.num_attention_heads // self.parallel_config.tensor_parallel_size
346 self.model_config.kv_num_heads = max(
347 1,
348 int(self.model_config.num_key_value_heads) // self.parallel_config.tensor_parallel_size,
349 )
350 head_dim = self.model_config.head_dim
351
352 # Initialize AttentionBackend buffers
353 encoder_block_shape_q = 64
354 decoder_block_shape_q = 16
355
356 self.model_inputs["decoder_batch_ids"] = paddle.zeros_like(self.target_model_inputs["decoder_batch_ids"])
357 self.model_inputs["decoder_tile_ids_per_batch"] = paddle.zeros_like(
358 self.target_model_inputs["decoder_tile_ids_per_batch"]
359 )
360 if current_platform.is_xpu() or current_platform.is_maca():
361 self.model_inputs["decoder_num_blocks_cpu"] = paddle.zeros_like(
362 self.target_model_inputs["decoder_num_blocks_cpu"]
363 ).cpu()
364 else:
365 self.model_inputs["decoder_num_blocks_cpu"] = paddle.zeros_like(
366 self.target_model_inputs["decoder_num_blocks_cpu"]
367 ).pin_memory()
368 self.model_inputs["decoder_num_blocks_device"] = paddle.zeros_like(
369 self.target_model_inputs["decoder_num_blocks_device"]
370 )
371 self.model_inputs["decoder_chunk_size_device"] = paddle.zeros_like(
372 self.target_model_inputs["decoder_chunk_size_device"]
373 )
374 self.model_inputs["max_len_tensor_cpu"] = paddle.zeros_like(
375 self.target_model_inputs["max_len_tensor_cpu"]
376 ).cpu()
377
378 self.model_inputs["encoder_batch_ids"] = paddle.zeros_like(self.target_model_inputs["encoder_batch_ids"])
379 self.model_inputs["encoder_tile_ids_per_batch"] = paddle.zeros_like(
380 self.target_model_inputs["encoder_tile_ids_per_batch"]
381 )
382 self.model_inputs["encoder_num_blocks_x_cpu"] = paddle.zeros_like(
383 self.target_model_inputs["encoder_num_blocks_x_cpu"]
384 ).cpu()
385 self.model_inputs["kv_batch_ids"] = paddle.zeros_like(self.target_model_inputs["kv_batch_ids"])
386 self.model_inputs["kv_tile_ids_per_batch"] = paddle.zeros_like(
387 self.target_model_inputs["kv_tile_ids_per_batch"]
388 )
389 self.model_inputs["kv_num_blocks_x_cpu"] = paddle.zeros_like(
390 self.target_model_inputs["kv_num_blocks_x_cpu"]
391 ).cpu()
392
393 # Get the attention backend
394 attn_cls = get_attention_backend()

Callers 1

__init__Method · 0.95

Calls 3

get_attention_backendFunction · 0.90
is_xpuMethod · 0.45
is_macaMethod · 0.45

Tested by

no test coverage detected