小白如何开始打AI比赛?记录第一次参加 Datawhale AI夏令营

Datawhale X 魔搭 AI夏令营第四期 魔搭-AIGC方向 task01笔记 Datawhale AI夏令营第四期魔搭-AIGC方向 task01笔记及个人心得分享。 从零入门AI生图原理&实践 是 Datawhale 2024 年 AI 夏令营第四期的学习活动(“AIGC”方向),基于魔搭社区“可图Kolors-LoRA风格故事挑战赛”开展的实践学习—— - 适合想 入门并实践 AIGC文生图、工作流搭建、LoRA微调 的学习者参与 学习内容提要:从文生图实现方案逐渐进阶,教程偏重图像工作流、微调、图像优化等思路,最后会简单介绍AIGC应用方向、数字人技术(选学) 阅读详情

内容介绍:

数学建模竞赛 模型蒸馏 CoT推理链 DeepSeek-R1 轻量化部署

本文记录2025年高等数学推理轻量化竞赛完整解题流程,涵盖数据清洗策略、教师模型知识蒸馏、LoRA微调实战与多维度模型评估,提供可复现的轻量化数学推理解决方案。

优秀的训练集是蒸馏小模型的最好方法,那么我们拿到的数据集,数据质量参差不齐,就需要对数据集进行清洗,减少噪声,具体代码如下

清洗代码

import json
import re

INPUT_FILE = "数学赛题训练集.jsonl"
OUTPUT_FILE = "数学赛题训练集_cleaned.jsonl"

def normalize_text(text: str) -> str:
    # 修正全角标点、空格与引号
    text = text.replace('(', '(').replace(')', ')')
    text = text.replace(',', ',').replace(':', ':')
    text = text.replace('。', '.').replace('!', '!').replace('?', '?')
    text = text.replace(';', ';').replace('“', '"').replace('”', '"')
    text = text.replace('\n', " ").replace('’', "'")
    # 合并多个空格
    text = re.sub(r'\s+', ' ', text).strip()
    return text

def is_valid_entry(entry: dict) -> bool:
    # 必须包含 id, input, output 三个字段且非空
    if not all(k in entry and entry[k].strip() for k in ("id", "input", "output")):
        return False
    return True

def clean_entry(entry: dict) -> dict:
    entry["id"] = entry["id"].strip()
    entry["input"] = normalize_text(entry["input"])
    entry["output"] = normalize_text(entry["output"])
    return entry

def main():
    valid_count = 0
    total = 0
    with open(INPUT_FILE, 'r', encoding='utf-8') as fin, \
         open(OUTPUT_FILE, 'w', encoding='utf-8') as fout:
        for line in fin:
            total += 1
            line = line.strip()
            if not line:
                continue
            try:
                obj = json.loads(line)
            except json.JSONDecodeError:
                # 跳过无法解析的行
                continue
            if not is_valid_entry(obj):
                # 跳过不符合规范的条目
                continue
            obj = clean_entry(obj)
            fout.write(json.dumps(obj, ensure_ascii=False) + "\n")
            valid_count += 1

    print(f"共处理条目: {total},保留有效条目: {valid_count}")

if __name__ == "__main__":
    main()

按照id 进行排序 代码,可忽略

import json
import os

def sort_jsonl_by_id(input_file, output_file):
    """
    读取JSONL文件,按照id排序,并写入新的JSONL文件
    
    参数:
    input_file -- 输入的JSONL文件路径
    output_file -- 输出的JSONL文件路径
    """
    print(f"正在处理文件: {input_file}")
    
    # 读取JSONL文件
    data = []
    with open(input_file, 'r', encoding='utf-8') as f:
        for line in f:
            try:
                item = json.loads(line.strip())
                data.append(item)
            except json.JSONDecodeError as e:
                print(f"解析JSON时出错: {e}")
                print(f"问题行: {line}")
                continue
    
    print(f"读取了 {len(data)} 条记录")
    
    # 按id排序
    try:
        # 尝试按照数字id排序
        data.sort(key=lambda x: int(x['id']))
        print("按数字id排序成功")
    except (KeyError, ValueError, TypeError):
        try:
            # 如果失败,尝试按照字符串id排序
            data.sort(key=lambda x: str(x.get('id', '')))
            print("按字符串id排序成功")
        except (KeyError, TypeError) as e:
            print(f"排序时出错: {e}")
            print("数据样例:", data[0] if data else "无数据")
            return False
    
    # 写入排序后的数据
    with open(output_file, 'w', encoding='utf-8') as f:
        for item in data:
            f.write(json.dumps(item, ensure_ascii=False) + '\n')
    
    print(f"排序完成,已写入文件: {output_file}")
    return True

def process_all_jsonl_files():
    """处理当前目录下所有的JSONL文件"""
    # 获取当前目录下所有的JSONL文件
    jsonl_files = [f for f in os.listdir('.') if f.endswith('.jsonl')]
    
    print(f"找到 {len(jsonl_files)} 个JSONL文件")
    
    for file in jsonl_files:
        # 生成输出文件名
        base_name = os.path.splitext(file)[0]
        output_file = f"{base_name}_sorted.jsonl"
        
        # 处理文件
        success = sort_jsonl_by_id(file, output_file)
        if success:
            print(f"成功处理文件: {file} -> {output_file}")
        else:
            print(f"处理文件失败: {file}")

def process_specific_files(file_list):
    """处理指定的JSONL文件列表"""
    for file in file_list:
        if not os.path.exists(file):
            print(f"文件不存在: {file}")
            continue
            
        # 生成输出文件名
        base_name = os.path.splitext(file)[0]
        output_file = f"{base_name}_sorted.jsonl"
        
        # 处理文件
        success = sort_jsonl_by_id(file, output_file)
        if success:
            print(f"成功处理文件: {file} -> {output_file}")
        else:
            print(f"处理文件失败: {file}")

if __name__ == "__main__":
    # 指定要处理的文件
    files_to_process = [
        "数学赛题训练集_cleaned.jsonl"
    ]
    
    print("开始按ID排序JSONL文件...")
    process_specific_files(files_to_process)
    print("处理完成!")

数据集优化

噪声解决之后,我们要对文章进行

利用API接口优化数据集,由于平台的训练太慢了,所以智能通过自己的API进行代码优化。

import os
import json
import requests
from tqdm import tqdm

# 配置DeepSeek API
API_KEY = os.getenv('DEEPSEEK_API_KEY', 'sk-fb9dce1a8b5e3c7ad0312af') #key已作废
API_URL = "https://api.deepseek.com/v1/"
MODEL_NAME = "deepseek-r1"

# 上下文长度限制(按token计算)
MAX_CONTEXT_LENGTH = 3000

# 分割长文本的函数
def split_long_text(text, max_length):
    """
    将长文本分割为不超过max_length的片段
    """
    words = text.split()
    segments = []
    current_segment = []
    current_length = 0
    
    for word in words:
        if current_length + len(word) + 1 > max_length:
            segments.append(" ".join(current_segment))
            current_segment = []
            current_length = 0
        
        current_segment.append(word)
        current_length += len(word) + 1
    
    if current_segment:
        segments.append(" ".join(current_segment))
    
    return segments

# 调用DeepSeek API生成CoT推理
def generate_cot_response(prompt):
    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json"
    }
    
    payload = {
        "model": MODEL_NAME,
        "messages": [
            {"role": "system", "content": "你是一个数学问题解决专家,请给出详细的推理过程(CoT格式)。"},
            {"role": "user", "content": prompt}
        ],
        "temperature": 0.3
    }
    
    try:
        response = requests.post(API_URL, json=payload, headers=headers, timeout=120)
        response.raise_for_status()
        return response.json()["choices"][0]["message"]["content"]
    except Exception as e:
        print(f"API调用失败: {str(e)}")
        return None

# 主处理函数
def process_dataset(input_path, output_path):
    """
    处理JSONL数据集并生成CoT格式输出
    """
    with open(input_path, 'r', encoding='utf-8') as infile, \
         open(output_path, 'w', encoding='utf-8') as outfile:
        
        for line in tqdm(infile, desc="处理进度"):
            try:
                data = json.loads(line)
                question_id = data["id"]
                question_text = data["input"]
                
                # 处理长上下文
                if len(question_text) > MAX_CONTEXT_LENGTH:
                    segments = split_long_text(question_text, MAX_CONTEXT_LENGTH)
                    full_response = ""
                    
                    for segment in segments:
                        response = generate_cot_response(segment)
                        if response:
                            full_response += response + "\n\n"
                else:
                    full_response = generate_cot_response(question_text)
                
                if full_response:
                    result = {
                        "id": question_id,
                        "input": question_text,
                        "output": full_response.strip()
                    }
                    outfile.write(json.dumps(result, ensure_ascii=False) + '\n')
            
            except Exception as e:
                print(f"处理ID {data.get('id', 'unknown')} 时出错: {str(e)}")

if __name__ == "__main__":
    INPUT_PATH = r"d:\Datawhale/数学赛题训练集_cleaned_sorted.jsonl"
    OUTPUT_PATH = r"d:\Datawhale/数学赛题训练集_cot_output.jsonl"
    
    # 检查API密钥
    if API_KEY == "":
        print("请先在代码中设置您的DeepSeek API密钥")
    else:
        process_dataset(INPUT_PATH, OUTPUT_PATH)
        print(f"处理完成! 结果已保存至: {OUTPUT_PATH}")

那么我们得到的数据就一定是好的吗?

不一定 ,我们还需要对所有的结果进行验证,这样我们导入Kimi 2 只对结果进行验证,来确保训练集中所有的结果都是对的 ,相当于找了一个外教。

数据训练蒸馏

最后就在平台上传好我们处理的文档 然后进行模型蒸馏微调吧!

模型推理的有点慢 等待他生成之后再更新吧~

2024 Datawhale 夏令营 零基础入门大模型技术竞赛 Task1 + Task2 AI夏令营 #Datawhale #夏令营记录自己参加 Datawhale 夏令营期间的学习心得,欢迎交流讨论这一版笔记主要是对 Baseline 跑通过程的记录、代码初步分析;直播讲解的观后心得。 阅读详情

相关推荐

【Datawhale AI 夏令营】2025多模态RAG方向 - Task0 & Task1 了解项目 + 跑通BaseLine

本文是DataWhale与科大讯飞联合举办的多模态RAG图文问答AI夏令营的学习记录。文章详细介绍了比赛背景、任务要求及评审规则,并分步骤指导如何跑通Baseline代码。主要内容包括: 比赛介绍:围绕多模态RAG技术,要求参赛者实现图文混合PDF的理解、检索与推理,生成准确答案并标注来源。 学习安排:分为3个任务阶段,本文主要是项目概述和第一阶段任务。

朝日-berry的博客 1430

Datawhale AI 夏令营:从零开始的数学推理模型蒸馏实践之旅

本文记录了DatawhaleAI夏令营"让AI学会数学推理"实践的全过程。通过讯飞星辰MaaS平台,作者从跑通76分的Baseline开始,逐步优化模型:首先扩充数据集至400条高质量推理数据,调整学习率(8e-5)、训练轮次(1次)等参数;然后优化LoRA配置(随机丢弃0.01,缩放系数32)。最终模型评分提升至86分,收获10分增益。实践过程中深入理解了模型蒸馏原理,掌握了数据质量把控、参数调优等关键技能,并体验了完整的AI开发流程。

Cwenyifan的专栏 1290

Datawhale AI夏令营 从零入门 AI 逻辑推理 心得第一弹

一次偶然的机会,看到了Datawhale的AI夏令营,授课的内容正是当下火热的机器学习——人工智能技术发展的根基。可以说,没有机器学习理论的发展,也没有人工智能的今天。但是呢,学习机器学习的过程并不是那么容易,网上有很多资源:GitHub上的各种开源代码、B站的各种中外网课,亦或是像“西瓜书”“南瓜书”等等,但是对于一个新手来说,确实不知道从哪里下手。但是看到了Datawhale的这个夏令营后,我认为这也许是一次新的机会,于是我果断选择了报名参加。

nightmare1820的博客 1896

Datawhale AI夏令营:机器学习方向

这篇笔记记录了AI夏令营机器学习方向的学习过程,主要包括两个任务:1)跑通baseline,参赛者需注册竞赛平台、使用ModelScope魔塔社区并运行baseline代码;2)理解项目目标并进行优化,通过分析15个用户行为特征字段,重点解析udmap字段JSON数据和时间特征,提出用户级建模、标签传播、特征解析等优化方案,预期能提高预测精度。笔记详细记录了从参赛报名到模型优化的全流程,特别强调了基于用户行为聚合的特征工程改进方法。

qq_56558042的博客 1101

AMD Ross FPGA Agent 实战:用 AI 驱动 Vivado 开发流程

在 EDA 领域,FPGA 开发长期面临工具链重、反馈周期长、报错晦涩等痛点。AI Agent 通过自然语言交互与工具调用,将 Vivado 的 Tcl 批处理流程封装为可编排、可观测的智能体,显著降低查文档与读报告的时间成本。其核心在于 Harness 与 Agent 的协同:Harness 提供安全执行环境,Agent 负责决策与迭代。典型应用包括工程创建、约束生成、综合实现报告解读及比特流失败排查。本文以 AMD Ross 为例,拆解其架构设计与实操方法,帮助开发者理解如何将 Agent 落地到高门槛

weixin_29189363的博客 1029

【嵌入式原理系列-第七篇】ld脚本实战:从零构建MCU内存布局

本文是一篇针对嵌入式开发者的实战指南,详细讲解了如何从零开始为MCU编写ld链接器脚本以构建自定义内存布局。文章以STM32F103C8T6为例,深入剖析了MEMORY和SECTIONS指令的用法,并提供了OTA分区、非易失数据存储等高级定制案例,帮助开发者解决实际工程中的Flash与RAM管理难题,实现对程序运行的深度掌控。

weixin_29271263的博客 249

Datawhale AI夏令营——复杂推理能力评估Task1 跑通Baseline

本文记录了参加Datawhale AI夏令营的第一个任务经历,比赛为第二届世界科学智能大赛逻辑推理赛道:复杂推理能力评估。这个任务总体比较简单,主要在跑通Baseline,了解使用第三方平台进行ai任务的基本流程。

Morderay的博客 1025

【信息学奥赛一本通】1215:迷宫(bfs版)

同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能办到。每组测试数据的第1行是一个正整数n(1≤n≤100),表示迷宫的规模是n×n的。接下来是一个n×n的矩阵,矩阵中的元素为‘再接下来一行是4个整数ha,la,hb,lb,描述A处在第ha行, 第la列,B处在第hb行, 第lb列。一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n×n的格点组成,每个格点只有2种状态,.

chu_xiaojie的博客 945

【datawhale夏令营2024】学习笔记01-如何跑通baseline

不同的软件应用程序之间进行通信。

youtedian_的博客 1951

从零到一:i.MX8M Plus开发板全流程开发指南(源码编译、烧录、镜像运行)

本文详细介绍了i.MX8M Plus开发板的全流程开发指南,包括源码编译、烧录和镜像运行等关键步骤。通过实战案例和配置技巧,帮助开发者快速掌握工业级应用开发,提升在边缘计算和AI推理等领域的开发效率。

weixin_30687051的博客 571

极智嘉嵌入式面试题及参考答案

IIC(Inter-Integrated Circuit)即集成电路总线,是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它仅使用两根线,即串行数据线 SDA 和串行时钟线 SCL,就能实现多个设备之间的通信,具有简单、高效、占用资源少等优点,广泛应用于各种嵌入式系统中。

大模型大数据攻城狮的专栏 922

机器学习 Datawhale AI夏令营

摘要:本文记录了参加Datawhale机器学习夏令营的实践过程,重点描述了如何完成科大讯飞AI大赛的Baseline打卡任务。任务要求跑通用户新增预测项目,涉及数据处理、特征工程、LightGBM模型训练等环节。文章详细介绍了操作步骤,包括下载Baseline文件、运行notebook等,并解释了交叉验证和阈值优化等核心概念。通过实践,作者初步掌握了机器学习竞赛的基本流程,包括数据预处理、模型训练与评估、结果提交等关键步骤,对LightGBM分类模型和F1分数评估指标有了更深入的理解。(149字)

2301_79234584的博客 1061

生产环境中redis的SCAN命令如何替代KEYS命令?

本文介绍了使用SCAN命令替代KEYS的完整方案。SCAN通过游标分批迭代,避免KEYS命令遍历整个键空间导致的阻塞风险。文章详细说明了SCAN的基础语法、迭代流程和Java实现示例,强调必须关闭Cursor避免连接泄漏。针对生产环境,提供了COUNT参数调优、客户端去重、集群模式适配等优化建议,并列举了典型错误场景。SCAN通过分批次迭代和游标管理,可安全实现高性能键空间遍历。全文150字。

DN金猿的博客 179

Datawhale AI夏令营第二期——机器学习 电力需求预测挑战赛

随着全球经济的快速发展和城市化进程的加速,电力系统面临着越来越大的挑战。电力需求的准确预测对于电网的稳定运行、能源的有效管理以及可再生能源的整合至关重要。然而,电力需求受到多种因素的影响,为了提高电力需求预测的准确性和可靠性,推动智能电网和可持续能源系统的发展,本场以“电力需求预测”为赛题的数据算法挑战赛。选手需要根据历史数据构建有效的模型,能够准确的预测未来电力需求。

weixin_61149295的博客 2246

大语言模型与ROS集成的自然语言机器人控制:开源框架与应用实例

近年来,大语言模型(LLM)与机器人操作系统(ROS)的集成逐步成熟,使得自然语言驱动的机器人控制成为可能。用户输入“捡起绿色方块”或“把微波炉里的饭热好端过来”这类日常语句,机器人能够自动拆解步骤、规划动作并执行。本文梳理2026年前后发布的三个代表性开源框架——ROS-LLM、ROSClaw以及LLM+Nav2基准测试系统,介绍其技术路径与工程落地情况。

Studying…… 634

YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)

YOLOv11 由 Ultralytics 在 2024 年 9 月 30 日发布, 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 28万+

【Datawhale AI 夏令营】CV图像 Task 1记录

比赛任务是判断一张人脸图像是否为Deepfake图像,并输出其为Deepfake图像的概率评分。参赛者需要开发和优化检测模型,以应对多样化的Deepfake生成技术和复杂的应用场景,从而提升Deepfake图像检测的准确性和鲁棒性。

qq_44900224的博客 1542

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

DataWhale 机器学习夏令营第二期——AI量化模型预测挑战赛 学习记录

DataWhale 机器学习夏令营第二期——AI量化模型预测挑战赛

FFTang的博客 1640

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Datawhale AI 夏令营 Task1 笔记&心得】

大模型部署【搭建你的智能编程助手】大模型RAG实战【搭建你的AI科研助手】大模型微调实战【搭建你的AI简历助手】整个学习活动聚焦于跑通 “星火大模型驱动阅读理解题库构建挑战赛挑战赛”,基于讯飞大模型定制训练平台和spark-13b微调模型,生成高考语文现代文阅读和英语阅读问题Q&A对。

qq_41783320的博客 1347

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Datawhale AI夏令营

扩散模型扩散模型是一种生成式模型,它的灵感来源于物理学中的扩散过程。前向扩散(Forward Diffusion):这是一个固定的、逐渐加噪声的过程。从一张清晰的图像开始,模型会逐步向图像中添加高斯噪声,直到图像最终完全变成随机的噪声。这个过程是可控的,每个步骤的噪声量都是预设的。反向扩散(Reverse Diffusion):这是模型需要学习的阶段。模型的目标是学习如何逐步地从纯噪声中“去噪”,从而逆转前向扩散过程,最终还原出清晰、有意义的图像。这个去噪过程通常由一个U-Net神经网络。

2401_88241058的博客 1091

DataWhale AI 夏令营 多模态RAG 心得笔记

本文介绍了讯飞AI多模态RAG图文问答挑战赛的参赛实践,重点解析了赛事内容和关键技术要点。比赛要求从图文混排财报PDF中提取多模态信息回答问题并提供溯源,DataWhale提供的baseline教程使用免费CPU环境和Qwen3-8B API实现基础功能。文章详细说明了赛事数据、评价指标和四大核心要素(数据源、可溯源、多模态、问答),并分析了PDF信息提取工具和多模态处理方法的优劣势。针对赛事难点(多模态融合、检索优化、答案生成可控性、指标优化)提出了技术思考,为参赛者提供了实用指导。

qq_64856123的博客 299

【Datawhale AI夏令营】数学建模:市场博弈和价格预测学习记录

Datawhale 2024 年 AI 夏令营第三期的学习活动,基于阿里云天池平台“第二届世界科学智能大赛社会科学赛道:市场博弈和价格预测” 开展的实践学习

qq_51366016的博客 1406

Datawhale AI夏令营 模型蒸馏学习 task1笔记

本文介绍了数学推理蒸馏技术,通过让大模型(如DeepSeek)生成高质量推理数据并迁移到轻量级小模型,实现高效数学解题能力。实践框架包括:报名比赛、下载数据集、LoRA微调、发布服务和提交赛事。文章指出CoT(思维链)微调能显著提升模型推理能力,并探讨了数据清洗优化方法。进阶思考包括大模型处理数学推理的机制、CoT的作用原理、数据优化策略等。该技术可在保持推理质量的同时降低计算资源需求,适用于实际部署场景。

2301_79411237的博客 1126

Datawhale AI 夏令营-CV竞赛-Task2

本文主要介绍了目标检测算法与YOLO模型

少年小子的博客 1017

DataWhale AI夏令营 Task1 baseline

本系列文章将记录参加Datawhale夏令营学习过程中的一些心得和想法,以及自己对赛题的理解。

weixin_43718818的博客 1581

Datawhale X 魔搭 AI夏令营 第一次笔记打卡

AIGC夏令营笔记——Task1

加油加油!!! 541
上一篇: 从公元前开始安装Docker
争渡青年学Python
博客等级 码龄4年 9粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值