|
|
|
|
|
from peft import LoraConfig, get_peft_model, PeftModel
|
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM
|
|
|
|
|
|
class MyModel():
|
|
|
def __init__(self):
|
|
|
model_name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
|
|
|
lora_path = "DS_RL_model"
|
|
|
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
model = AutoModelForCausalLM.from_pretrained(model_name)
|
|
|
self.model = PeftModel.from_pretrained(model, lora_path)
|
|
|
self.generation_config = {
|
|
|
"max_new_tokens": 2048,
|
|
|
"temperature": 0.9,
|
|
|
"top_p": 1.0,
|
|
|
"repetition_penalty": 1.2,
|
|
|
}
|
|
|
def predict(self, text):
|
|
|
prompt = "根据以下关键词生成一首歌词,歌词中包含多个句子,句子与句子之间使用/隔开,让我们一步一步的思考(思考过程包含在<think>和</think>之间):" + text
|
|
|
input_ids = self.tokenizer.encode(prompt, return_tensors="pt").to(self.model.device)
|
|
|
outputs = self.model.generate(input_ids, **self.generation_config)
|
|
|
decoded = self.tokenizer.decode(outputs[0], skip_special_tokens=False)
|
|
|
return decoded
|
|
|
|