科大讯飞AI大赛:大模型图表问答挑战赛

学术   2024-09-18 16:18   北京  

unsetunset赛题背景unsetunset

图表是一种将数据可视化的工具,它通过图形的方式呈现信息,使得数据之间的关系、趋势和模式更加直观易懂。使用图表可以有效地传达复杂数据,帮助人们快速抓住要点,提高信息的理解和记忆。大模型在图表理解方面已经取得了显著的进展,正在帮助用户以更直观、更高效的方式处理和解释数据。

unsetunset赛题任务unsetunset

构建一个模型,该模型能基于给定的表格数据,结合表格内容回答指定的问题。

unsetunset数据说明unsetunset

赛题数据分为训练集和测试集两部分,需要参赛选手利用模型建模对测试集的样本进行预测。其中训练集和测试集都包含了提问的表原始文件和对应的提问。需要参赛选手建模并对测试集回答对应的提问。

此外,tables文件夹中保存相关的表信息,可以按照文本文件读取。

unsetunset评审规则unsetunset

赛题使用提交方案在测试集使用字符交叉比进行评估,分数越高越好。

unsetunsetBaseline思路unsetunset

赛题是一个典型的知识问答思路,需要通过大模型来完成问答。

  • 加载开源 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  #


△长按添加竞赛小助手

每天大模型、算法竞赛、干货资讯

与 36000+来自竞赛爱好者一起交流~

Coggle数据科学
Coggle全称Communication For Kaggle,专注数据科学领域竞赛相关资讯分享。
 最新文章