桃子屁屁🍑

主页🏠 信息📑 链接🔗 关于我🧙‍♂️
https://gcore.jsdelivr.net/gh/Peachfart/IMG@master/PicGo-Core/wallhaven-gpz2g7_960x540_2022-10-19_22:52:01.png

torch小实例

2024-12-19 13:41

代码如下

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

# 加载模型和分词器
def load_model_and_tokenizer(model_name):
    """
    加载预训练模型和分词器
    :param model_name: 模型名称或路径
    :return: 模型和分词器
    """
    tokenizer = AutoTokenizer.from_pretrained(model_name)
    model = AutoModelForCausalLM.from_pretrained(model_name)
    return model, tokenizer

# 生成回复
def generate_response(prompt, model, tokenizer, max_length=50, temperature=0.7):
    """
    生成模型的回复
    :param prompt: 用户输入的文本
    :param model: 加载的模型
    :param tokenizer: 分词器
    :param max_length: 生成文本的最大长度
    :param temperature: 控制生成文本的随机性
    :return: 生成的回复
    """
    # 对输入进行编码
    inputs = tokenizer.encode(prompt, return_tensors="pt").to(device)
    
    # 生成回复
    outputs = model.generate(
        inputs,
        max_length=max_length,
        num_return_sequences=1,
        temperature=temperature,
        pad_token_id=tokenizer.eos_token_id,
        do_sample=True
    )
    
    # 解码生成的回复
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    
    return response

# 主函数
def main():
    # 模型名称或路径
    model_name = "./Llama-3.2-1B-Instruct"  # 你可以替换为你自己的模型路径
    
    # 加载模型和分词器
    print("正在加载模型,请稍等...")
    model, tokenizer = load_model_and_tokenizer(model_name)
    
    # 设置设备为 GPU(如果可用)
    global device
    device = "cuda" if torch.cuda.is_available() else "cpu"
    model.to(device)
    print(f"模型已加载到设备: {device}")
    
    # 开始对话
    print("开始对话吧!输入 '退出' 结束对话。")
    while True:
        user_input = input("你: ")
        if user_input.lower() in ["退出", "exit", "quit"]:
            print("对话结束。")
            break
        
        # 生成回复
        response = generate_response(user_input, model, tokenizer)
        print(f"模型: {response}")

if __name__ == "__main__":
    main()

代码说明

  1. 加载模型和分词器:
  • 使用 AutoModelForCausalLM 和 AutoTokenizer 加载预训练模型(如 GPT-2)。

  • 支持本地模型路径或 Hugging Face 模型名称。

  1. 生成回复:
  • 使用 model.generate 方法生成回复。

  • 支持参数调整,如 max_length(生成文本的最大长度)和 temperature(控制生成文本的随机性)。

  1. 连续对话:
  • 使用 while 循环实现连续对话。

  • 用户输入“退出”或类似指令时,对话结束。

  1. 设备设置:
  • 自动检测 GPU 是否可用,如果可用则将模型加载到 GPU,否则使用 CPU。

运行代码

  1. 将上述代码保存为 chatbot.py 。

  2. 在命令行中运行:

python chatbot.py
  1. 开始对话:
  • 输入你的问题或对话内容。

  • 输入“退出”或类似指令结束对话。


示例对话

正在加载模型,请稍等...
模型已加载到设备: cuda
开始对话吧!输入 '退出' 结束对话。
你: 你好,今天天气怎么样?
模型: 你好!今天天气很好,阳光明媚,适合出去走走。
你: 你觉得人工智能会取代人类吗?
模型: 人工智能可能会在某些领域取代人类,但它不会完全取代人类。人类有独特的创造力和情感。
你: 退出
对话结束。

Gitea

2024-07-12 16:47

aidbdotsite

aidbdotsite

桃子屁屁🍑

Related Posts

  • Gitea
  • Gitea Actions CICD测试实例
  • 万字长文带你彻底搞懂什么是 DevOps
  • cAdvisor+Prometheus+Grafana
  • Jenkins + Ansible + Gitlab 自动化部署三剑客
  • Containerd 使用教程

© 2022 Peachfart.

本站总访问量: 次  |  本站访客数: 人

🌞 light 🌛 dark 🤖️ auto