mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2026-04-23 00:17:25 +08:00
[Optimization]Optimize CPU utilization (#6950)
* Optimize CPU utilization
This commit is contained in:
@@ -357,19 +357,19 @@ class Ernie4_5Processor(BaseDataProcessor):
|
||||
# prefix offset & read offset & history token ids & history token strings
|
||||
self.decode_status[task_id] = [0, 0, [], ""]
|
||||
|
||||
prefix_offset = self.decode_status[task_id][0]
|
||||
read_offset = self.decode_status[task_id][1]
|
||||
previous_token_ids = self.decode_status[task_id][2]
|
||||
previous_texts = self.decode_status[task_id][3]
|
||||
decode_str, prefix_offset, read_offset = self.tokenizer.decode_token(
|
||||
previous_token_ids + token_id, prefix_offset, read_offset
|
||||
)
|
||||
self.decode_status[task_id][0] = prefix_offset
|
||||
self.decode_status[task_id][1] = read_offset
|
||||
self.decode_status[task_id][2] += token_id
|
||||
self.decode_status[task_id][3] += decode_str
|
||||
status = self.decode_status[task_id]
|
||||
previous_texts = status[3]
|
||||
|
||||
return decode_str, previous_token_ids, previous_texts
|
||||
# Extend in-place first, then pass the full list to decode_token
|
||||
# Avoids creating an O(n) temporary list every token
|
||||
status[2].extend(token_id)
|
||||
|
||||
decode_str, prefix_offset, read_offset = self.tokenizer.decode_token(status[2], status[0], status[1])
|
||||
status[0] = prefix_offset
|
||||
status[1] = read_offset
|
||||
status[3] += decode_str
|
||||
|
||||
return decode_str, status[2], previous_texts
|
||||
|
||||
def _load_tokenizer(self):
|
||||
"""
|
||||
|
||||
@@ -597,38 +597,38 @@ class DataProcessor(BaseDataProcessor):
|
||||
# history token ids & history token strings & befer decode str
|
||||
self.decode_status[task_id] = [[], [], ""]
|
||||
|
||||
previous_token_ids = self.decode_status[task_id][0]
|
||||
status = self.decode_status[task_id]
|
||||
status[0].extend(token_id)
|
||||
decode_str = self.tokenizer.batch_decode(
|
||||
[previous_token_ids + token_id],
|
||||
[status[0]],
|
||||
skip_special_tokens=True,
|
||||
clean_up_tokenization_spaces=False,
|
||||
)
|
||||
if isinstance(decode_str, list) and len(decode_str):
|
||||
new_str = decode_str[0].replace(self.decode_status[task_id][2], "", 1)
|
||||
self.decode_status[task_id][1].append(new_str)
|
||||
self.decode_status[task_id][2] = decode_str[0]
|
||||
new_str = decode_str[0].replace(status[2], "", 1)
|
||||
status[1].append(new_str)
|
||||
status[2] = decode_str[0]
|
||||
else:
|
||||
new_str = ""
|
||||
self.decode_status[task_id][0] += token_id
|
||||
return new_str
|
||||
else:
|
||||
if task_id not in self.decode_status:
|
||||
# prefix offset & read offset & history token ids & history token strings
|
||||
self.decode_status[task_id] = [0, 0, [], ""]
|
||||
|
||||
prefix_offset = self.decode_status[task_id][0]
|
||||
read_offset = self.decode_status[task_id][1]
|
||||
previous_token_ids = self.decode_status[task_id][2]
|
||||
previous_texts = self.decode_status[task_id][3]
|
||||
decode_str, prefix_offset, read_offset = self.tokenizer.decode_token(
|
||||
previous_token_ids + token_id, prefix_offset, read_offset
|
||||
)
|
||||
self.decode_status[task_id][0] = prefix_offset
|
||||
self.decode_status[task_id][1] = read_offset
|
||||
self.decode_status[task_id][2] += token_id
|
||||
self.decode_status[task_id][3] += decode_str
|
||||
status = self.decode_status[task_id]
|
||||
previous_texts = status[3]
|
||||
|
||||
return decode_str, previous_token_ids, previous_texts
|
||||
# Extend in-place first, then pass the full list to decode_token
|
||||
# Avoids creating an O(n) temporary list every token
|
||||
status[2].extend(token_id)
|
||||
|
||||
decode_str, prefix_offset, read_offset = self.tokenizer.decode_token(status[2], status[0], status[1])
|
||||
status[0] = prefix_offset
|
||||
status[1] = read_offset
|
||||
status[3] += decode_str
|
||||
|
||||
return decode_str, status[2], previous_texts
|
||||
|
||||
def _load_tokenizer(self):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user