Datawhale AI夏令营
好运天选 2024-08-17 13:01:02 阅读 81
Task1(附代码解析)
从零入门 AI 逻辑推理“AI+逻辑推理”方向
包含了
赛题分析大模型技术基础方案传统机器学习解题思路
(btw,抱着尝试的心态来看task1,以为很难,但是教程可以说是保姆级别的,一步一步的操作下来可以说是很丝滑,生成结果的时候花了较长的时间,得分并不是很高,但整体的感觉还是很棒的)
启动魔塔Notebook!
新用户可能需要先开通灵积模型服务,申领大模型API
不需要选择GPU和CPU,选择默认的即可
30 分钟体验一站式 baseline!
下载代码及测试集,导入并填写阿里云申请的API-KEY,一键跑通代码
下载结果文件,提交文件,拿下第一个分数!
代码解析
库文件的下载
引用大部分文件作多进程处理异步任务执行日记记录,http请求,json处理,模型名称的定义等多项内容
api_retry函数用于调用自己编写的call_qwen_api函数(该函数用于调用一个名为 dashscope.Generation 的 API 来生成文本)时增加了一个重试机制,这意味着在调用 API 失败时,函数会自动重试最多 3 次,每次重试间隔 3 秒。
接下来是大模型常用的prompt提示词工程,作用是通过下的定义生成一个逻辑推理的问题的提示prompt。
这个函数接受三个参数:题目problem(用于展示逻辑推理问题的背景或者情景),问题question(主要针对问题里的具体问题是什么)和 options(问题的多个选项,通常是列表式形式)。
需要注意的是:\n 是将列表的选项转换成字符串的形式,在每个选项前加一个abcdefg,并用换行符进行分割,也就是说可以将文字形式转换为电脑可读的形式。
处理过程
定义了process_datas函数,用于处理数据集,并使用多线程任务处理任务,每一个数据是一项字典,包含problem和多个question,函数通过调用API来获取问题的答案,并将最后的结果存储在返回的列表中。
文件的读取和操作
读取输入文件和设置输出文件的路径 ,检查文件是否是空的,检查输出文件是否存在。
如果存在不需要做任何操作,直接pass掉;如果不存在,那么进行下面的操作,首先定义空列表用于存储输入文件中读取的数据,之后打开输入文件,确保文件在使用后能正确关闭,之后循环读取文件中的内容,将每行数据转换为json可读文件(json对象),添加到data的列表中去,接下来处理数据。
ifn是输入的文件的文件名,ofn是处理后的数据保存到输出文件中
评估模型在处理任务中的主要表现
这里主要注意这三个的作用
初始化计数器
pse主要用于记录是否包含MODEL_NAME键样本数量
cnt主要用于记录模型正确回答问题的数量
tot主要用于记录总的问题数量
之后遍历数据并计算准确率,然后输出结果,print一下
主要函数
主要用于提取文本中的特定信息,调用main函数传入两个文件作为参数(当然输出的就是这两个文件)最后的upload.json1就是我们要提交的最终文件
第一行代码是python中比较常见的语句,主要用于判断当前脚本是否可以作为主程序进行运行,如果是,就执行下面的代码
(注意这里,每个人生成的所需时间不同,需要耐心等待)
find_missing_ids
构造find_missing_ids函数,作用是寻找列表中缺失的序号,具体来说就是从我们的结果列表中提取出所有序号,和完整序号进行比较,去查找结果序号中缺失的部分并打印
这部分的代码还是较好理解的,用于数据完整性的检查,特别是有序数据的时候,确保所有的预期数据都存在。
通过这段代码的实现可以看出缺失的序号,证明前面的代码有需要迭代更新的工作(
总结
整体还是丝滑的,直播的讲解也很详细,学到了很多
关于分数
在find_missing_ids函数部分,会发现缺失了13个序号,说明之前的代码需要迭代更新。没处理的数据可以在后处理进行调整,这样可以提高一点分数。
源码中的思路是缺失的问题补充上答案A,要做到更好的话可以再多写一段代码,比如将答案缺失的数据重新整理为新的数据集等,保证每一个问题的答案都根据语言模型给出了 ,就可以得到更高的分数。
大模型会有幻觉,有时候不能按照要求输出,用已给的函数没办法提取出答案,就missing了。我们可以对这个没提取出来的样本继续重新调用api获得答案,也可以直接用默认值填充。
(排行榜的高分可能是优化了算法跑的,改prompt等)
综上,谢谢大家!
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。