当前位置: 首页 > news >正文

Datawhale AI夏令营学习笔记:大模型微调与数据处理实践

目录

一、项目背景与目标

二、核心技术实现

1. 数据预处理基础

2. 大模型API调用

3. 增量处理与断点续传

4. 数据格式转换

三、学习收获与心得

1. 技术层面

2. 学习方法

3. 避坑指南

四、未来改进方向

五、总结


这篇笔记记录了我在Datawhale AI夏令营期间的学习心得和实践经验,主要围绕大模型微调技术和数据处理流程展开。通过参与夏令营项目,我不仅掌握了核心技术,还积累了一套实用的学习方法,希望能帮助到同样在AI领域探索的你。

一、项目背景与目标

Datawhale AI夏令营是一个汇聚产学研资源的免费学习活动,旨在通过项目实践提升参与者的AI技术能力和就业竞争力。我选择的是大模型技术方向,具体任务是利用Qwen3-8B模型处理列车班次信息,生成问答对数据集。

这个项目的核心目标是通过实践掌握:

  1. 大模型API调用与结果解析
  2. 结构化数据的处理与转换
  3. 增量式数据生成与断点续传机制
  4. JSON与JSONL格式转换

二、核心技术实现

1. 数据预处理基础

项目开始时,我们需要先加载并清洗Excel数据:

 
import pandas as pd# 读取数据并处理缺失值
data = pd.read_excel('data/info_table(训练+验证集).xlsx')
data = data.fillna('无数据')  # 空值填充

这种基础但关键的操作确保了后续处理的稳定性。Datawhale提供的Baseline让我快速上手,避免了在环境配置上浪费时间。

2. 大模型API调用

项目中使用了硅基流动平台的Qwen3-8B模型,通过API实现问答生成:

 
def call_llm(content: str):url = " https://api.siliconflow.cn/v1/chat/completions "payload = {"model": "Qwen/Qwen3-8B","messages": [{"role": "user", "content": content}]}headers = {"Authorization": "Bearer <KEY>", "Content-Type": "application/json"}resp = requests.request("POST", url, json=payload, headers=headers).json()# 正则提取JSON内容content = resp['choices'][0]['message']['content'].split('</think>')[-1]pattern = re.compile(r'^```json\s*([\s\S]*?)```$', re.IGNORECASE)match = pattern.match(content.strip())if match:return json.loads(match.group(1).strip())return content

这个函数封装了API调用和响应解析的全过程,特别是正则表达式处理部分,解决了模型返回结果中JSON的提取问题。

3. 增量处理与断点续传

为避免网络中断导致前功尽弃,项目实现了断点续传功能:

 
def load_existing_data():"""加载已有数据和进度"""train_data_list = []processed_indices = set()error_data_list = []# 分别加载训练数据、进度信息和错误记录if os.path.exists(OUTPUT_FILE):try:with open(OUTPUT_FILE, 'r', encoding='utf-8') as f:train_data_list = json.load(f)except:print("训练数据加载失败,将重新开始")# 类似处理进度和错误文件...return train_data_list, processed_indices, error_data_list

这种方法特别适合处理大规模数据集,每次运行都能从上次中断的地方继续。

4. 数据格式转换

项目最后需要将JSON数组转换为JSONL格式提交:

 
def convert_json_to_jsonl(input_file, output_file):with open(input_file, 'r', encoding='utf-8') as f:data = json.load(f)with open(output_file, 'w', encoding='utf-8') as f:for item in data:f.write(json.dumps(item, ensure_ascii=False) + '\n')

JSONL格式(每行一个JSON对象)比传统JSON数组更适合大规模数据存储和处理。

三、学习收获与心得

1. 技术层面

通过这次实践,我深入掌握了:

  • 大模型调用技巧:学会了如何构造有效的prompt,控制模型输出格式
  • 数据处理流程:从原始数据清洗到最终格式转换的全流程实践
  • 工程化思维:通过断点续传、错误处理等机制提升代码健壮性

2. 学习方法

Datawhale夏令营强调"做中学",这种模式让我受益匪浅:

  1. 从Baseline入手:先跑通提供的示例代码,再逐步深入
  2. 迭代优化:从简单实现开始,不断添加新功能
  3. 问题驱动:遇到实际问题时查阅资料,理解更深刻

3. 避坑指南

在项目中遇到的典型问题及解决方案:

  • API限流:添加延时或使用代理IP池
  • JSON解析失败:严格校验模型返回格式,添加异常处理
  • 内存不足:采用增量处理而非全量加载

四、未来改进方向

根据夏令营中学到的知识,我计划在以下方面继续深入:

  1. Prompt工程优化:尝试few-shot learning等高级技巧提升生成质量
  2. 数据增强:通过回译、同义词替换等方法扩充训练数据
  3. 模型微调:使用LoRA等技术对基座模型进行领域适配
  4. 自动化流水线:引入Airflow等工具管理整个数据处理流程

五、总结

Datawhale AI夏令营为我打开了大模型应用开发的大门,从最初的"跑通Baseline"到最终完成项目,这种循序渐进的实践方式让我在短时间内获得了显著成长。特别感谢组织者和志愿者的付出,这种开源共享的精神正是AI社区最宝贵的财富。

http://www.lryc.cn/news/598764.html

相关文章:

  • 01_FOC学习之先让电机转动起来
  • 长糖链皂苷的生物合成研究进展-文献精读149
  • FreeRTOS—计数型信号量
  • Unity UI的未来之路:从UGUI到UI Toolkit的架构演进与特性剖析(3)
  • 【自动化运维神器Ansible】Ansible常用模块之shell模块详解
  • 深入解析Hadoop NameNode的Full GC问题、堆外内存泄漏及元数据分治策略
  • Lua(数组)
  • DBA常用数据库查询语句(2)
  • 详解FreeRTOS开发过程(六)-- 队列
  • Redis操作
  • PostgreSQL 跨库查询方法
  • CMake ARGV变量使用指南
  • 基于C语言的Zynq SOC FPGA嵌入式裸机设计和开发教程
  • 外企本土化布局对国内连接器企业影响几何?
  • 模型的存储、加载和部署
  • rust-切片类型
  • centos7中把nginx更新到1.26 版(centos7默认只能更新到1.20)
  • IROS-2025 | OIKG:基于观察-图交互与关键细节引导的视觉语言导航
  • 【LeetCode 热题 100】39. 组合总和——(解法一)选或不选
  • windwos11网页切换残留/卡屏/冻结/残影问题
  • Java学习---Spring及其衍生(下)
  • 基于SpringBoot+Vue的电脑维修管理系统(WebSocket实时聊天、Echarts图形化分析)
  • 类和包的可见性
  • 磁性材料如何破解服务器电源高频损耗难题?
  • Linux C 网络基础编程
  • Redis高可用架构演进面试笔记
  • 13-C语言:第13天笔记
  • mysql索引底层B+树
  • HTTP/1.0、HTTP/1.1 和 HTTP/2.0 主要区别
  • OpenLayers 综合案例-基础图层控制