File size: 6,795 Bytes
38d8dc2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "initial_id",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-02T06:42:56.681032Z",
     "start_time": "2025-04-02T06:42:19.346090Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from transformers import AutoModelForCausalLM, AutoTokenizer\n",
    "from peft import PeftModel\n",
    "# 1. 加载基础模型和LoRA适配器\n",
    "base_model = AutoModelForCausalLM.from_pretrained(\"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B\")#您也可以使用GPU推理\n",
    "model = PeftModel.from_pretrained(base_model, \"../DS_RL_model\")  # .to(\"cuda\")使用GPU加速推理\n",
    "tokenizer = AutoTokenizer.from_pretrained(\"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B\")\n",
    "tokenizer.pad_token = tokenizer.eos_token\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c805805aeaabd6a8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-04-02T07:41:36.715675Z",
     "start_time": "2025-04-02T07:41:27.640736Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型输出: 根据以下关键词生成一首歌词,歌词中包含多个句子,确保句子通顺,诗意,格式正确.让我们一步一步的思考(思考过程包含在<think>和</think>之间):月光,欢乐,伊甸园,月光下的欢乐,小猪们、小羊们,月光下的欢乐。月光下的欢乐,小猪们、小羊们,月光下的欢乐,小猪们、小羊们,月光下的欢乐,月光下的欢乐,小猪们、小羊们,月光下的欢乐。月光,小猪们、小羊们,月光下的欢乐,月光下的欢乐,月光下的欢乐,月光下的欢乐,月光下的欢乐,月光下的欢乐,月光下的欢乐,月光下的欢乐,月光下的欢乐。\n",
      "\n",
      "嗯,我现在需要帮用户生成一首关于月光、欢乐、伊甸园的歌词。用户给了一个比较长的查询,里面有很多重复的句子,可能想要更简洁或者更流畅的歌词。我得先理解用户的需求,可能他们是在做一个儿童文学作品,或者是在学习如何创作歌词。\n",
      "\n",
      "首先,关键词有月光、欢乐、伊甸园、小猪、小羊。所以歌词里要包含这些元素。用户给出的回复里有很多重复,可能是因为想通过多个句子来强调主题,让读者更容易理解和记忆。\n",
      "\n",
      "我需要确保歌词结构合理,有起承转合,句子通顺。可能用户希望歌词有一定的押韵和节奏感,这样读起来更顺口。同时,格式要正确,可能需要遵循中文诗歌的格式,比如分句、押韵等。\n",
      "\n",
      "另外,用户提供的回复是多次重复的句子,可能是因为想强调月光下的欢乐,让读者感受到那种温馨和欢乐。我需要在生成歌词时,把这些元素自然地融入进去,而不是单纯地重复。\n",
      "\n",
      "我还得考虑歌词的情感基调,是欢快的还是带有感慨的。用户没有特别说明,但关键词中提到“欢乐”和“月光”,感觉偏向于积极向上的情感。\n",
      "\n",
      "可能需要避免过于复杂的结构,保持歌词简洁明了,同时有足够的意象来传达主题。比如,用“月光下的欢乐”这样的词句,可以增强画面感,让读者有身临其境的感觉。\n",
      "\n",
      "另外,用户提到了小猪和小羊,可能是在描绘一个小动物们的场景,或者是在描述一个充满欢乐的小世界。可能需要把这些元素融合在歌词中,让读者感受到那种温暖和快乐。\n",
      "\n",
      "我还需要注意押韵,虽然中文诗歌不一定严格押韵,但要有一定的节奏感。选择合适的结尾词来增强主题的表达。\n",
      "\n",
      "总的来说,我需要把月光、欢乐、小猪、小羊、伊甸园这几个元素有机地融入歌词中,确保结构合理,情感流畅,同时保持格式正确。可能需要多试几遍,调整用词和句式,直到满意为止。\n",
      "</think>\n",
      "\n",
      "## 《月光下的欢乐》\n",
      "\n",
      "月光如水般温柔,\n",
      "在掌心流淌着幸福的泪。\n",
      "\n",
      "小猪们、小羊们,\n",
      "在伊甸园里跳跃舞。\n",
      "月光下欢声笑语,\n",
      "欢声笑语映照着我们的脸。\n",
      "\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语。\n",
      "\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语。\n",
      "\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语。\n",
      "\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语。\n",
      "\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语,\n",
      "月光下欢声笑语。\n"
     ]
    }
   ],
   "source": [
    "# 2. 准备提示词\n",
    "prompt = \"根据以下关键词生成一首歌词,歌词中包含多个句子,确保句子通顺,诗意,格式正确.让我们一步一步的思考(思考过程包含在<think>和</think>之间):月光,欢乐,伊甸园\" \n",
    "\n",
    "# 3. 编码并生成回复\n",
    "inputs = tokenizer(prompt, return_tensors=\"pt\")\n",
    "\n",
    "# 4. 生成参数设置\n",
    "outputs = model.generate(\n",
    "    input_ids=inputs[\"input_ids\"],\n",
    "    attention_mask=inputs[\"attention_mask\"],\n",
    "    max_new_tokens=2048,  # 生成的最大token数\n",
    "    do_sample=True,      # 启用随机采样\n",
    "    temperature=0.9,     # 控制随机性 (0.1-1.0)\n",
    "    top_p=0.9,           # nucleus sampling参数\n",
    "    pad_token_id=tokenizer.eos_token_id\n",
    ")\n",
    "\n",
    "# 5. 解码并打印结果\n",
    "generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)\n",
    "print(\"模型输出:\", generated_text)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}