| |
|
| | 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
|
| | |