构建开放域聊天机器人是机器学习研究中的一个具有挑战性的领域。虽然先前的研究表明,增加神经模型的参数数量和训练数据规模可以带来更好的结果,但我们发现,要打造高性能的聊天机器人,其他因素也同样重要。良好的对话需要多种技能,专业的对话者能够将这些技能无缝融合:提供引人入胜的话题并倾听对方,既能提问也能回答问题,并根据具体情况恰当地展现知识、同理心和个性。我们证明,当提供适当的训练数据和生成策略选择时,大规模模型能够学习这些技能。我们基于 9000 万、27 亿和 94 亿参数的神经模型构建了这些方案的变体,并公开了我们的模型和代码。人类评估表明,在多轮对话中,我们的最佳模型在吸引力和类人性指标上优于现有方法。然后,我们通过分析模型的失败案例来讨论这项工作的局限性。
import argparse
import torch
from openmind import pipeline, is_torch_npu_available
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--model_name_or_path", type=str, help="Path to model", default=None)
args = parser.parse_args()
return args
if __name__ == '__main__':
args = parse_args()
if is_torch_npu_available():
device = "npu:0"
else:
device = "cpu"
print("device",device)
model_path = args.model_name_or_path
print("Model path is:", model_path)
try:
generator = pipeline('text-generation', model=model_path, device=device)
print("Generator initialized successfully")
except Exception as e:
print(f"Error initializing generator: {e}")
try:
output = generator("Hello, I'm a language model,", max_length=30, num_return_sequences=5, num_beams=5, truncation=True)
print("Run successful. Generated outputs:")
for idx, sequence in enumerate(output):
print(f"Generated sequence {idx + 1}: {sequence['generated_text']}")
except Exception as e:
print(f"Error during generation: {e}")