Added text streaming
This commit is contained in:
@@ -7,7 +7,7 @@ RUN pip3 install -r requirements.txt
|
|||||||
FROM requirements AS test
|
FROM requirements AS test
|
||||||
COPY ./test/ /root/test/
|
COPY ./test/ /root/test/
|
||||||
RUN mkdir -p /root/model
|
RUN mkdir -p /root/model
|
||||||
CMD ["python3", "-m", "unittest", "discover", "-p", "*test.py", "-v"]
|
CMD ["python3", "-m", "unittest", "discover", "-v", "-p", "*test.py", "-v"]
|
||||||
|
|
||||||
FROM requirements
|
FROM requirements
|
||||||
CMD ["python3", "-m", "sia"]
|
CMD ["python3", "-m", "sia"]
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
|
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline, TextStreamer
|
||||||
import torch
|
import torch
|
||||||
|
|
||||||
from . import util
|
from . import util
|
||||||
@@ -34,12 +34,18 @@ class LlmEngine:
|
|||||||
self.tokenizer.pad_token_id = self.tokenizer.eos_token_id
|
self.tokenizer.pad_token_id = self.tokenizer.eos_token_id
|
||||||
if model.config.pad_token_id is None:
|
if model.config.pad_token_id is None:
|
||||||
model.config.pad_token_id = model.config.eos_token_id
|
model.config.pad_token_id = model.config.eos_token_id
|
||||||
|
streamer = TextStreamer(
|
||||||
|
self.tokenizer,
|
||||||
|
skip_prompt=True
|
||||||
|
)
|
||||||
self.pipeline = pipeline(
|
self.pipeline = pipeline(
|
||||||
"text-generation",
|
"text-generation",
|
||||||
model=model,
|
model=model,
|
||||||
tokenizer=self.tokenizer,
|
tokenizer=self.tokenizer,
|
||||||
torch_dtype=torch.bfloat16,
|
torch_dtype=torch.bfloat16,
|
||||||
device_map="auto",
|
device_map="auto",
|
||||||
|
streamer=streamer,
|
||||||
|
return_full_text=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
def infer(self, system_prompt: str, main_context: str, action_schema: str) -> InferenceResult:
|
def infer(self, system_prompt: str, main_context: str, action_schema: str) -> InferenceResult:
|
||||||
@@ -64,8 +70,8 @@ class LlmEngine:
|
|||||||
)
|
)
|
||||||
outputs = self.pipeline(prompt, max_new_tokens=120, do_sample=True)
|
outputs = self.pipeline(prompt, max_new_tokens=120, do_sample=True)
|
||||||
generated_text = outputs[0]["generated_text"]
|
generated_text = outputs[0]["generated_text"]
|
||||||
response = generated_text.split("<|start_header_id|>assistant<|end_header_id|>",1)[1].strip()
|
#response = generated_text.split("<|start_header_id|>assistant<|end_header_id|>",1)[1].strip()
|
||||||
result = util.split_response(response, valid_elements)
|
result = util.split_response(generated_text, valid_elements)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def finetune(self, dataset_paths: list, output_dir: str):
|
def finetune(self, dataset_paths: list, output_dir: str):
|
||||||
|
|||||||
Reference in New Issue
Block a user