1. 赛题

参赛者需要构建端到端的评论分析系统,完成三大核心任务:

  1. 商品识别
    • 输入:视频描述文本(video_desc)和标签(video_tags)
    • 输出:精准识别推广商品名称(Xfaiyx Smart Translator/Recorder)
  2. 多维情感分析
    • 维度:情感倾向(5类)、用户场景、用户疑问、用户建议
    • 挑战:处理隐晦表达如"这重量出门带着刚好"(场景暗示)
  3. 评论聚类与主题提炼
    • 对5类特定评论进行聚类分析
    • 生成5-8个具有代表性的主题词

由于这里只有很少量的数据是有标签的(商品识别中总共86个数据,大约30个有label;评论总共6400+数据,大约1700+有label),而且不同类别的分布数目相差很大,因此很明显不能从头训练模型。如果选用传统的DNN,如Seq2Seq等,即使微调也需要足够的数据,没有能力接收少量且差异化特别大的数据就能够进行分类。

因此,我们需要使用原本就具有所需的分类能力的模型——LLM

2. 商品识别——SFT 微调

主要流程为:

  1. 下载模型权重checkpoint
  2. 处理数据集dataset
  3. 微调LLM
  4. 在测试集上运行

2.1 准备第三方工具

这里作者使用了算力平台,有条件的可以本地部署,也可以直接调用大模型的API

2.1.1 安装 LLaMA-Factory

LLaMA-Factory可以很方便的进行Pre-Training, SFT, PPO, DPO等

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]" --no-build-isolation

2.1.2 安装 huggingface_hub

后续checkpoint都需要从huggingface中下载,相比较本地下载再upload到服务器上,直接从官网下载会方便很多

pip install -U huggingface_hub

直接从官网下载网速会有点慢,可以使用国内镜像

vim ~/.bashrc# vim下修改文件, 增加下方内容
export HF_ENDPOINT="https://hf-mirror.com"
# 保存并退出source ~/.bashrc

2.2 下载模型权重

下载过程由于耗时较长,为了防止ssh关闭导致下载终止,可以使用screen开个后台

选择参数量较小的Qwen3-1.7B进行微调,在单卡下微调时长约为3分钟

huggingface-cli download --resume-download Qwen/Qwen3-1.7B --local-dir models/qwen3-1.7B

2.3 处理数据

大致思路为:

  1. 将video_desc与video_tag合并,作为模型输入
  2. 添加instruction作为prompt
  3. 选择有label的部分,作为训练集

那么直接贴代码:

import argparse
import pandas as pd
from transformers import AutoTokenizer, AutoModelForCausalLMvideo_data = pd.read_csv("origin_videos_data.csv")
video_data["text"] = video_data["video_desc"].fillna("") + " " + video_data["video_tags"].fillna("")def preprocess_data():text_data = video_data[["text", "product_name"]]text_data = text_data[text_data["product_name"].notnull()]instruction = '''你是一个专业的电商产品识别系统。请从视频描述中识别推广商品,必须严格选择以下选项之一:- Xfaiyx Smart Translator- Xfaiyx Smart Recorder规则说明:1. 当描述提到"翻译"、"多语言"等关键词时选择Translator2. 当描述出现"录音"、"转写"等关键词时选择Recorder3. 遇到不确定情况时选择更符合主要功能的选项示例:输入:这款设备支持实时语音转文字输出:Xfaiyx Smart Recorder'''text_data["instruction"] = instruction.strip()text_data.to_json("text_data.json", orient="records", force_ascii=False)if __name__ == "__main__":parser = argparse.ArgumentParser()parser.add_argument("--preprocess", type=bool, default=False)parser.add_argument("--device", type=str, default="cuda")args = parser.parse_args()if args.preprocess:preprocess_data()

运行后数据变为:
在这里插入图片描述

2.4 微调模型

2.4.1 修改data_info

在LLaMA-Factory/data/dataset_info.json中增加自定义数据集

"dw_data_video": {"file_name": "DW/text_data.json","formatting": "alpaca","spilt": "train","columns": {"query": "text","response": "product_name","prompt": "instruction"}},

参数的具体含义如下:

  • file_name : 数据集的路径
  • formatting : 数据集的格式,主流LLM训练数据的格式分为alpaca和sharegpt
  • split : 将数据集划分为train, test, val,默认仅作为train
  • columns : 指定哪个key作为模型接收的输入/输出

原本模型是以"input" : “message"作为模型接收到的输入,但dw_data_video中模型输入为"text” : “message”,因此需要修改

2.4.2 修改微调配置

设置sft配置文件,文件路径随意,但在后续训练启动命令时,需要指定文件路径

### model
model_name_or_path: models/qwen3-1.7B		# 下载预训练模型的路径
### method
stage: sft
do_train: true
finetuning_type: lora #微调方式
lora_target: all### dataset
dataset: dw_data_video
template: qwen3    # 注意:这里的参数选项要严格与官方给出的表格一致
cutoff_len: 2048
max_samples: 1000
overwrite_cache: true
preprocessing_num_workers: 16### output
output_dir: output/sft/lora/qwen3-1.7B-dw-data-video
logging_steps: 10
save_steps: 500
plot_loss: true
overwrite_output_dir: true### train
per_device_train_batch_size: 16
gradient_accumulation_steps: 8
learning_rate: 1.0e-4
num_train_epochs: 10
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
run_name: qwen3-1.7B-dw-data-video		# 用于wandb展示过程### eval
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500

2.4.3. 启动训练

注意文件路径需要与上面创建文件时的路径一致

llamafactory-cli train LLaMA-Factory/workspace/lora/sft/sft_lora_qwen3.yaml

官方给出的代码为llamafactory-cli train xxxx.yaml,但由于我们的yaml文件存储路径不一定在官方默认路径下,因此使用完整路径更稳当
注意:启动时,pwd一定要在LLaMA-Factory文件夹下,不然会报错No such file data/dataset_info.json

2.5 运行测试集数据

import argparse
import pandas as pd
from transformers import AutoTokenizer, AutoModelForCausalLMvideo_data = pd.read_csv("origin_videos_data.csv")
video_data["text"] = video_data["video_desc"].fillna("") + " " + video_data["video_tags"].fillna("")def preprocess_data():text_data = video_data[["text", "product_name"]]text_data = text_data[text_data["product_name"].notnull()]instruction = '''你是一个专业的电商产品识别系统。请从视频描述中识别推广商品,必须严格选择以下选项之一:- Xfaiyx Smart Translator- Xfaiyx Smart Recorder规则说明:1. 当描述提到"翻译"、"多语言"等关键词时选择Translator2. 当描述出现"录音"、"转写"等关键词时选择Recorder3. 遇到不确定情况时选择更符合主要功能的选项示例:输入:这款设备支持实时语音转文字输出:Xfaiyx Smart Recorder'''text_data["instruction"] = instruction.strip()text_data.to_json("text_data.json", orient="records", force_ascii=False)# 定义推理函数
def predict_product(text, device):instruction = ("你是一个专业的电商产品识别系统。请从视频描述中识别推广商品,必须严格选择以下选项之一:\n""    - Xfaiyx Smart Translator\n""    - Xfaiyx Smart Recorder\n\n""规则说明:\n""1. 当描述提到\"翻译\"、\"多语言\"等关键词时选择Translator\n""2. 当描述出现\"录音\"、\"转写\"等关键词时选择Recorder\n""3. 遇到不确定情况时选择更符合主要功能的选项")input_text = f"{instruction}\n\n输入:{text}\n输出:"inputs = tokenizer(input_text, return_tensors="pt").to(device)outputs = model.generate(inputs.input_ids,max_new_tokens=20,          # 限制生成长度num_beams=1,                 # 使用贪婪搜索do_sample=False,             # 禁用随机采样pad_token_id=tokenizer.eos_token_id  # 设置填充token)full_output = tokenizer.decode(outputs[0], skip_special_tokens=True)generated_output = full_output[len(input_text):]  # 提取生成部分# 清理输出结果return generated_output.strip().split("\n")[0]if __name__ == "__main__":parser = argparse.ArgumentParser()parser.add_argument("--preprocess", type=bool, default=False)parser.add_argument("--device", type=str, default="cuda")args = parser.parse_args()if args.preprocess:preprocess_data()device = args.devicemodel_path = 'output/sft/lora/qwen3-1.7B-DWData'tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True).to(device)# 遍历csv,推理并保存结果for index, row in video_data.iterrows():# 如果product_name列非空则保存product_nameif pd.notna(row["product_name"]):video_data.at[index, "prediction"] = row["product_name"]continuetext = row["text"]prediction = predict_product(text, device)video_data.at[index, "prediction"] = prediction# 用prediction列覆盖product_name列video_data["product_name"] = video_data["prediction"]# 只保存 video_id 和 product_name 列video_data = video_data[["video_id", "product_name"]]video_data.to_csv("video_data_with_predictions.csv", index=False)

那么此时输出的文件就是预测后的文件

将输出的文件和Baseline的文件上传,发现分数提高了10分左右,目前来到了180分,说明LLM微调后效果还不错

后续内容努力码字中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/89016.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/89016.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/89016.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【博文汇项目全维度测试报告:功能与自动化双轨验证】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 项目背景:项目背景与意义:项目概述已实现的主要功能包括:当前系统存在的不足…

Java陷阱之assert关键字详解

Assert.isTrue()方法用于断言条件是否为真,如果条件不满足(即为false),则会抛出IllegalArgumentException,并附带预设的错误信息。在示例中,当1.23不小于2.23时,方法抛出了异常,显示…

mysql 散记:innodb引擎和memory引擎对比 sql语句少用函数 事务与长事务

文章目录innodb引擎和memory引擎对比对比sql 语句:尽可能不使用函数条件隐式转换隐式类型转换隐式字符编码转换补充问题事务与长事务ACIDread viewMVCC 一致性视图当前读view 虚拟表长事务的影响与排查影响排查方法预防innodb引擎和memory引擎对比 innodb引擎是索引…

APK安装器(安卓端)一键解除VX限制!轻松安装各种手机应用

VX为了防止恶意软件通过平台传播,保障用户设备安全,会把通过VX发送的 APK 文件自动改成 “apk.1” 格式,这样就能减少恶意软件传播的风险。我平时推荐安卓软件的时候,有朋友反馈说,文件发到VX里就变成 “apk.1” 了&am…

Debian:从GNOME切换到Xfce

最近为20年前的T43重新安装了Debian系统,但使用的gnome桌面太卡了。于是换成轻量级的Xfce系统。 1.安装Xfce sudo apt update sudo apt install xfce4 xfce4-goodies命令中xfce4 是Xfce桌面环境的核心组件,xfce4-goodies 是一些额外的工具和插件&#xf…

徐州服务器租用:BGP线路的特点有哪些?

BGP的中文全称为边界网关协议,是指一种运行在传输控制协议上的自治系统路由协议,主要的功能就是可以实时控制路由的传播,同时能够帮助用户选择更合适的路由线路,保证网络能够稳定的运行,不会轻易出现网络卡顿或故障的状…

Java使用OSHI获取服务器信息

OSHI可以获取系统信息&#xff08;CPU、内存、磁盘、网络等&#xff09;&#xff0c;纯Java实现&#xff08;通过JNA访问本地API&#xff0c;无需安装本地库&#xff09;&#xff0c;跨平台支持。引入依赖<dependency><groupId>com.github.oshi</groupId><…

企业数字化资产管理安全、成本、协作困局难解?

在数字化浪潮席卷全球的今天&#xff0c;3D技术已成为驱动影视动画、工业设计、建筑可视化等领域创新的核心动力。然而&#xff0c;随着3D资产规模呈指数级增长&#xff0c;企业正面临前所未有的管理挑战&#xff1a;海量模型存储混乱、版本迭代难以追溯、团队协作效率低下、知…

力扣面试150题--组合总和

Day 72 题目描述&#xff08;终于理顺回溯了&#xff09;思路 这里还是基于模板来说明代码思路void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择 : 本层集合中的元素) {处理节点;backtracking(路径, 选择列表); // 递归撤销处理; // 回溯} }对于主要函数的…

多客户端-服务器(select,poll)

多客户端-服务器结构总结一、普通CS架构的局限性核心问题&#xff1a;单线程中accept&#xff08;阻塞等待连接&#xff09;与read&#xff08;阻塞读取数据&#xff09;函数互相干扰&#xff0c;无法同时处理多客户端。本质原因&#xff1a;阻塞型函数需独立执行&#xff0c;若…

如何使用postman做接口测试?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 常用的接口测试工具主要有以下几种&#xff1a;Postman: 简单方便的接口调试工具&#xff0c;便于分享和协作。具有接口调试&#xff0c;接口集管理&#xff0c…

新型网络架构设计助力智慧医疗降本增效

随着智慧医疗的快速发展,越来越多的医院开始布局“互联网+医疗”服务,通过数字化手段提升医疗服务效率。然而,如何构建一个既稳定可靠又具备灵活扩展能力的医疗网络,成为医院数字化转型中的关键问题。本文以某智慧医疗项目为例,探讨传统网络与SD-WAN结合的最佳实践。 背景…

一文读懂现代卷积神经网络—使用块的网络(VGG)

目录 什么是使用块的网络&#xff08;VGG&#xff09;&#xff1f; 一、VGG 的核心思想&#xff1a;用块&#xff08;Block&#xff09;构建网络 二、VGG 的网络结构 三、VGG 的优势 1. 结构简洁统一 2. 强大的特征表达能力 3. 小卷积核的计算效率 4. 良好的迁移学习性…

Linux的相关学习

linux 1.文件权限怎么修改 chmod [权限模式] [文件或目录]1、**数字模式&#xff08;八进制&#xff09;**&#xff1a; chmod 755 myfile.sh # 所有者&#xff1a;rwx (7)&#xff0c;组&#xff1a;r-x (5)&#xff0c;其他用户&#xff1a;r-x (5) 7 rwx&#xff08;读写…

Kotlin集合接口

Kotlin 集合概述 Kotlin 集合提供了对数据进行各种操作的便捷方式。它们实现了接口&#xff0c;因此可以操作不同类型的数据。例如&#xff0c;你可以编写一个函数&#xff0c;同时打印 Set 和 List 的所有元素。我们来看看这是如何实现的。Iterable 接口 我们已经知道&#xf…

Git 常用操作与注意事项全攻略

1. 基本配置 git config --global user.name "你的名字" git config --global user.email "你的邮箱" git config --list # 查看当前配置建议全局配置用户名和邮箱&#xff0c;否则提交记录可能不规范2.仓库操作 初始化本地仓库 git init只在新建项目时使…

STM32-第五节-TIM定时器-1(定时器中断)

一、定时器原理&#xff1a;1.介绍&#xff1a;对指定输入时钟进行计数&#xff0c;并在计数值达到设定值时触发中断。分类&#xff1a;基本定时器&#xff0c;通用定时器&#xff0c;高级定时器频率&#xff1a;72MHZ2.框图&#xff1a; &#xff08;1&#xff09;基本定时器&…

【图像处理基石】什么是色盲仿真技术?

色盲仿真概述 色盲仿真是一种将正常色彩图像转换为色盲患者感知效果的技术。人类常见的色盲类型包括&#xff1a; 红色盲&#xff08;Protanopia&#xff09;&#xff1a;无法感知红色绿色盲&#xff08;Deuteranopia&#xff09;&#xff1a;无法感知绿色蓝黄色盲&#xff08;…

九、官方人格提示词汇总(中-3)

“参谋代写计划”功能输出欣赏&#xff0c;规则&#xff1a; 本部分统一使用 Gemini 2.5 Pro API。该 API 下的输出质量基本达到我的要求&#xff0c;已具备实用价值。严格等级均为“权衡有度&#xff08;L3&#xff09;”&#xff0c;创造力等级均为“趋势捕手&#xff08;L3…

华为MateBook D 16 SE版 2024款 12代酷睿版i5集显(MCLF-XX,MCLF-16)原厂OEM预装Win11系统

适用型号&#xff1a;MCLF-XX,MCLF-16链接&#xff1a;https://pan.baidu.com/s/1OkvUqZMdCSF98YtQfWAYXw?pwdq2gh 提取码&#xff1a;q2gh 华为开箱状态出厂Windows11系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、华为电脑…