赛题背景
图表是一种将数据可视化的工具,它通过图形的方式呈现信息,使得数据之间的关系、趋势和模式更加直观易懂。使用图表可以有效地传达复杂数据,帮助人们快速抓住要点,提高信息的理解和记忆。大模型在图表理解方面已经取得了显著的进展,正在帮助用户以更直观、更高效的方式处理和解释数据。
赛题任务
构建一个模型,该模型能基于给定的表格数据,结合表格内容回答指定的问题。
数据说明
赛题数据分为训练集和测试集两部分,需要参赛选手利用模型建模对测试集的样本进行预测。其中训练集和测试集都包含了提问的表原始文件和对应的提问。需要参赛选手建模并对测试集回答对应的提问。
此外,tables文件夹中保存相关的表信息,可以按照文本文件读取。
评审规则
赛题使用提交方案在测试集使用字符交叉比进行评估,分数越高越好。
Baseline思路
赛题是一个典型的知识问答思路,需要通过大模型来完成问答。
加载开源 qwen 大模型
import pandas as pd
import numpy as np
from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model onto
model = AutoModelForCausalLM.from_pretrained(
"/home/lyz/hf-models/Qwen/Qwen1.5-1.8B-Chat/",
torch_dtype="auto",
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("/home/lyz/hf-models/Qwen/Qwen1.5-0.5B-Chat/")
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
构建提示词进行问答
test_answer = []
for row in test.iterrows():
content = ''.join(open('tables/' + row[1].table).readlines()[:50])
prompt_template = f'请结合给定的资料客观回答问题,如果问题无法从表中回答则回复无法回答,回答结果要精简,简短直接回答结果,不要分析如何回答的,直接回答,出了答案之外不需要有其他内容。\n -资料\n {content} -提问 \n {row[1].question}'
messages = [
{"role": "user", "content": prompt_template}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=512
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
完整代码见:
https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2024
# 学习大模型 & 讨论Kaggle #
每天大模型、算法竞赛、干货资讯