Datawhale AI夏令營 《基于帶貨視頻評論的用戶洞察挑戰賽》Part .1.

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辦公軟件、華為電腦…