pip install transformers torch
GPT(Generative Pre-trained Transformer)是一种强大的文本生成模型,就像一个有超强记忆力的作家:
传统写作:你告诉作家每个字写什么
GPT写作:你给作家看很多书,它自己学会写作风格和知识
想象你在玩"词语接龙"游戏:
这就是GPT的核心机制——基于前面所有词预测下一个词。
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# 加载GPT-2模型和分词器(小规模模型,适合教学演示)
# 第一次运行会自动下载模型文件(约500MB)
model = GPT2LMHeadModel.from_pretrained("gpt2")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
# 设置模型为评估模式(不更新权重)
model.eval()
def generate_text(prompt, max_length=50):
# 将输入文本转换为模型能理解的数字ID
input_ids = tokenizer.encode(prompt, return_tensors="pt")
# 生成文本
output = model.generate(
input_ids,
max_length=max_length, # 生成的最大长度
num_return_sequences=1, # 生成几个结果
no_repeat_ngram_size=2, # 避免重复短语
do_sample=True, # 随机采样
top_k=50, # 从概率最高的50个词中选
temperature=0.7, # 控制随机性(0.1-1.0)
)
# 将生成的ID转换回文本
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
return generated_text
# 输入你的提示词
prompt = "人工智能的未来发展"
# 生成文本
result = generate_text(prompt, max_length=100)
# 打印结果
print("生成的文本:")
print(result)
内存不足:如果报错CUDA out of memory,尝试:
max_length
值model.to('cpu')
强制使用CPU下载失败:如果模型下载失败:
lesson_36_gpt/
├── gpt_demo.py # 主程序文件
├── requirements.txt # 依赖文件
└── README.md # 说明文档
transformers==4.28.1
torch==2.0.0
from transformers import GPT2LMHeadModel, GPT2Tokenizer
def init_model():
print("正在加载GPT-2模型...")
model = GPT2LMHeadModel.from_pretrained("gpt2")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model.eval()
return model, tokenizer
def generate_text(model, tokenizer, prompt, max_length=50):
input_ids = tokenizer.encode(prompt, return_tensors="pt")
output = model.generate(
input_ids,
max_length=max_length,
num_return_sequences=1,
no_repeat_ngram_size=2,
do_sample=True,
top_k=50,
temperature=0.7,
)
return tokenizer.decode(output[0], skip_special_tokens=True)
if __name__ == "__main__":
model, tokenizer = init_model()
print("\nGPT-2文本生成演示(输入'quit'退出)")
while True:
prompt = input("\n请输入提示词:")
if prompt.lower() == 'quit':
break
print("\n生成结果:")
print(generate_text(model, tokenizer, prompt))
正在加载GPT-2模型...
GPT-2文本生成演示(输入'quit'退出)
请输入提示词:人工智能的未来发展
生成结果:
人工智能的未来发展将会深刻改变人类社会的方方面面。从医疗诊断到自动驾驶,从智能家居到教育领域,AI技术将不断提高效率和精确度。专家预测,到2030年,AI可能会创造超过2000万个新的就业岗位,同时也会取代部分重复性工作...
修改max_length
参数,但注意:
尝试调整参数:
temperature
值(如0.3)减少随机性top_k
值(如100)扩大候选词范围使用中文优化模型:
model_name = "uer/gpt2-chinese-cluecorpussmall"
model = GPT2LMHeadModel.from_pretrained(model_name)