【AI學習】大模型微調實踐

參加了書生?浦語(InternLM)端側小模型論文分類微調練習打榜賽

具體的實踐教程在:
https://aicarrier.feishu.cn/wiki/D7kZw9Nx4iMyDnkpL0Gc5giNn5g

折騰了十多天,各種嘗試,AB榜單終于進入了前十都,累死
在這里插入圖片描述
貼一下最后成績最好的配置文件:

# Copyright (c) OpenMMLab. All rights reserved.
import torch
from datasets import load_dataset
from mmengine.dataset import DefaultSampler
from mmengine.hooks import (CheckpointHook,DistSamplerSeedHook,IterTimerHook,LoggerHook,ParamSchedulerHook,
)
from mmengine.optim import AmpOptimWrapper, CosineAnnealingLR, LinearLR
from peft import LoraConfig
from torch.optim import AdamW
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfigfrom xtuner.dataset import process_hf_dataset
from xtuner.dataset.collate_fns import default_collate_fn
from xtuner.dataset.map_fns import alpaca_map_fn, template_map_fn_factory
from xtuner.engine.hooks import (DatasetInfoHook,EvaluateChatHook,VarlenAttnArgsToMessageHubHook,
)
from xtuner.engine.runner import TrainLoop
from xtuner.model import SupervisedFinetune
from xtuner.parallel.sequence import SequenceParallelSampler
from xtuner.utils import PROMPT_TEMPLATE, SYSTEM_TEMPLATE#######################################################################
#                          PART 1  Settings                           #
#######################################################################
# Model
pretrained_model_name_or_path = "/root/share/new_models/Shanghai_AI_Laboratory/internlm2_5-7b-chat"
use_varlen_attn = False# Data
alpaca_en_path = "/root/sft/output8.jsonl"#換成自己的數據路徑
prompt_template = PROMPT_TEMPLATE.internlm2_chat
max_length = 2048
pack_to_max_length = True# parallel
sequence_parallel_size = 1# Scheduler & Optimizer
batch_size = 4  # per_device
accumulative_counts = 1
accumulative_counts *= sequence_parallel_size
dataloader_num_workers = 0
max_epochs = 6
optim_type = AdamW
lr = 2e-4
betas = (0.9, 0.999)
weight_decay = 0
max_norm = 1  # grad clip
warmup_ratio = 0.03# Save
save_steps = 500
save_total_limit = 2  # Maximum checkpoints to keep (-1 means unlimited)# Evaluate the generation performance during the training
evaluation_freq = 500
SYSTEM = SYSTEM_TEMPLATE.alpaca
evaluation_inputs = ["請給我介紹五個上海的景點", "Please tell me five scenic spots in Shanghai"]#######################################################################
#                      PART 2  Model & Tokenizer                      #
#######################################################################
tokenizer = dict(type=AutoTokenizer.from_pretrained,pretrained_model_name_or_path=pretrained_model_name_or_path,trust_remote_code=True,padding_side="right",
)model = dict(type=SupervisedFinetune,use_varlen_attn=use_varlen_attn,llm=dict(type=AutoModelForCausalLM.from_pretrained,pretrained_model_name_or_path=pretrained_model_name_or_path,trust_remote_code=True,torch_dtype=torch.float16,quantization_config=dict(type=BitsAndBytesConfig,load_in_4bit=True,load_in_8bit=False,llm_int8_threshold=6.0,llm_int8_has_fp16_weight=False,bnb_4bit_compute_dtype=torch.float16,bnb_4bit_use_double_quant=True,bnb_4bit_quant_type="nf4",),),lora=dict(type=LoraConfig,r=32,lora_alpha=64,#       target_modules=["wqkv", "wo"],  # 優先注意力層lora_dropout=0.1,bias="none",task_type="CAUSAL_LM",),
)#######################################################################
#                      PART 3  Dataset & Dataloader                   #
#######################################################################
alpaca_en = dict(type=process_hf_dataset,dataset=dict(type=load_dataset, path='json', data_files=alpaca_en_path),tokenizer=tokenizer,max_length=max_length,dataset_map_fn=alpaca_map_fn,template_map_fn=dict(type=template_map_fn_factory, template=prompt_template),remove_unused_columns=True,shuffle_before_pack=True,pack_to_max_length=pack_to_max_length,use_varlen_attn=use_varlen_attn,
)sampler = SequenceParallelSampler if sequence_parallel_size > 1 else DefaultSampler
train_dataloader = dict(batch_size=batch_size,num_workers=dataloader_num_workers,dataset=alpaca_en,sampler=dict(type=sampler, shuffle=True),collate_fn=dict(type=default_collate_fn, use_varlen_attn=use_varlen_attn),
)#######################################################################
#                    PART 4  Scheduler & Optimizer                    #
#######################################################################
# optimizer
optim_wrapper = dict(type=AmpOptimWrapper,optimizer=dict(type=optim_type, lr=lr, betas=betas, weight_decay=weight_decay),clip_grad=dict(max_norm=max_norm, error_if_nonfinite=False),accumulative_counts=accumulative_counts,loss_scale="dynamic",dtype="float16",
)# learning policy
# More information: https://github.com/open-mmlab/mmengine/blob/main/docs/en/tutorials/param_scheduler.md  # noqa: E501
param_scheduler = [dict(type=LinearLR,start_factor=1e-5,by_epoch=True,begin=0,end=warmup_ratio * max_epochs,convert_to_iter_based=True,),dict(type=CosineAnnealingLR,eta_min=0.0,by_epoch=True,begin=warmup_ratio * max_epochs,end=max_epochs,convert_to_iter_based=True,),
]# train, val, test setting
train_cfg = dict(type=TrainLoop, max_epochs=max_epochs)#######################################################################
#                           PART 5  Runtime                           #
#######################################################################
# Log the dialogue periodically during the training process, optional
custom_hooks = [dict(type=DatasetInfoHook, tokenizer=tokenizer),dict(type=EvaluateChatHook,tokenizer=tokenizer,every_n_iters=evaluation_freq,evaluation_inputs=evaluation_inputs,system=SYSTEM,prompt_template=prompt_template,),
]if use_varlen_attn:custom_hooks += [dict(type=VarlenAttnArgsToMessageHubHook)]# configure default hooks
default_hooks = dict(# record the time of every iteration.timer=dict(type=IterTimerHook),# print log every 10 iterations.logger=dict(type=LoggerHook, log_metric_by_epoch=False, interval=10),# enable the parameter scheduler.param_scheduler=dict(type=ParamSchedulerHook),# save checkpoint per `save_steps`.checkpoint=dict(type=CheckpointHook,by_epoch=False,interval=save_steps,max_keep_ckpts=save_total_limit,),# set sampler seed in distributed evrionment.sampler_seed=dict(type=DistSamplerSeedHook),
)# configure environment
env_cfg = dict(# whether to enable cudnn benchmarkcudnn_benchmark=False,# set multi process parametersmp_cfg=dict(mp_start_method="fork", opencv_num_threads=0),# set distributed parametersdist_cfg=dict(backend="nccl"),
)# set visualizer
visualizer = None# set log level
log_level = "INFO"# load from which checkpoint
load_from = None# whether to resume training from the loaded checkpoint
resume = False# Defaults to use random seed and disable `deterministic`
randomness = dict(seed=None, deterministic=False)# set log processor
log_processor = dict(by_epoch=False)```

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/88553.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/88553.shtml
英文地址,請注明出處:http://en.pswp.cn/web/88553.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ElementUI:高效優雅的Vue.js組件庫

Hi,我是布蘭妮甜 !在當今快節奏的前端開發領域,選擇一個功能強大、設計優雅且易于使用的UI組件庫至關重要。ElementUI作為基于Vue.js的知名組件庫,憑借其豐富的組件體系、一致的設計語言和出色的開發體驗,已成為眾多企…

Java Stream流介紹及使用指南

背景在Java 8之前,處理集合數據(如List, Set, Map)通常意味著編寫冗長的、以操作為中心的代碼:創建迭代器、使用for或while循環遍歷元素、在循環體內進行條件判斷和操作、收集結果。這種方式雖然有效,但不夠簡潔、可讀…

JDK 1.7 vs JDK 1.8

JDK版本比較 Java平臺的兩次重大飛躍:JDK 7的穩定優化與JDK 8的革命性創新引言:Java的進化之路Java作為企業級開發的支柱語言,其版本更新直接影響著全球數百萬開發者。JDK 1.7(2011年發布)和JDK 1.8(2014年…

張量與維度

3x4x5的張量: x torch.tensor([[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]], [[21, 22, 23, 24, 25], …

智慧菜場系統(源碼+文檔+講解+演示)

引言 在數字化浪潮的推動下,傳統菜市場也在尋求創新與變革。智慧菜場系統作為一種新型的菜市場管理工具,通過數字化手段優化菜市場的全流程,提高運營效率,增強消費者體驗,提升市場管理質量。本文將詳細介紹智慧菜場系統…

【GESP】C++一級真題 luogu-B4355 [GESP202506 一級] 值日

GESP C一級,2025年6月真題,基礎運算和循環語句,難度★☆☆☆☆。 題目題解詳見:【GESP】C一級真題 luogu-B4355 [GESP202506 一級] 值日 | OneCoder 【GESP】C一級真題 luogu-B4355 [GESP202506 一級] 值日 | OneCoderGESP C一級…

【Linux應用】Ubuntu20.04 aarch64開發板一鍵安裝ROS2(清華源)

【Linux應用】Ubuntu20.04 aarch64開發板一鍵安裝ROS2(清華源) 文章目錄相關資料更改UTF8執行更新一鍵安裝ROS2驗證配置環境變量附錄:開發板快速上手:鏡像燒錄、串口shell、外設掛載、WiFi配置、SSH連接、文件交互(RAD…

【HDLBits習題 2】Circuit - Sequential Logic(4)More Circuits

1. Rule90&#xff08;Rule 90&#xff09;方法1&#xff1a;module top_module (output reg [511:0] q,input clk,input load,input [511:0] data ); integer i;always (posedge clk) beginif (load 1b1) beginq < data;end else beginfor (i0; i<$bits(q);…

基于mysqlfrm工具解析mysql數據結構文件frm表結構和數據庫版本信息

這里使用Linux系統上操作。win上搞了下 python報錯。所以在這里記錄一下推薦大家使用linux系統操作。 安裝mysql utilswget https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5.tar.gztar -xf mysql-utilities-1.6.5.tar.gzcd mysql-utilities-1.6.5py…

【C++ 深入解析 C++ 模板中的「依賴類型」】

深入解析 C 模板中的「依賴類型」 依賴類型是 C 模板編程中的核心概念&#xff0c;特指那些依賴于模板參數的類型。迭代器是依賴類型的常見例子&#xff0c;但遠不止于此。讓我們全面解析這個重要概念&#xff1a; 依賴類型的本質定義 依賴類型是&#xff1a; 在模板中定義直接…

Telnet遠程連接實驗(Cisco)

Telnet遠程連接實驗&#xff08;Cisco&#xff09; 拓撲圖一并實現DHCP服務、HTTP服務、FTP服務。 二層交換機配置&#xff1a; 交換機Switch0配置&#xff1a; vlan 10vlan 20int f0/1switchport mode accessswitchport access vlan 10int f0/2switchport mode accessswitchpo…

C++:非類型模板參數,模板特化以及模板的分離編譯

目錄 一、前言 二、非類型模板參數 三、模板的特化 3.1 類模板特化 3.11 全特化 3.12 偏特化 3.2 函數模板特化 3.3 注意 四、模板的分離編譯 一、前言 前面的文章梳理了模板初階的一些用法&#xff0c;在后面梳理了STL的一些容器的用法后&#xff0c;下面將用到含有S…

【Qt 學習之路】Qt Android開發環境搭建:Ubuntu的Vmware虛擬機中的踩坑實錄

文章目錄1、簡介2、虛擬機內USB設備識別難題2.1、正確連接手機2.2、打開USB相關配置2.3、打開虛擬機中的手機設備3、Gradle下載速度緩慢之困3.1、下載 Gradle 鏡像3.2、安放鏡像位置3.3、修改項目中的gradle路徑1、簡介 許久未曾使用Qt進行Android開發&#xff0c;今日在Ubunt…

MySQL中使用group_concat遇到的問題及解決

在使用group_concat的過程中遇到個問題&#xff0c;這里記錄一下&#xff1a;在MySQL中有個配置參數group_concat_max_len&#xff0c;它會限制使用group_concat返回的最大字符串長度&#xff0c;默認是1024。 查詢group_concat_max_len大小&#xff1a; show variables like…

高性能小型爬蟲語言與代碼示例

高性能小型爬蟲現在有哪幾種新興語言可以選擇。我看到了很多關于爬蟲框架的信息&#xff0c;特別是使用Go語言和Node.js的框架。Go語言方面有Kaola1和Katana2這兩個框架。Kaola被描述為高性能的Go語言爬蟲框架&#xff0c;輕量級且強大&#xff0c;提供靈活配置選項。 Node.js…

【PTA數據結構 | C語言版】在順序表 list 中查找元素 x

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;將 n 個整數存入順序表&#xff0c;對任一給定整數 x&#xff0c;查找其在順序表中的位置。 輸入格式&#xff1a; 輸入首先在第一行給出正整數 n&#xff08;≤10^4 &#…

claude code-- 基于Claude 4 模型的智能編程工具,重塑你的編程體驗

文章目錄0.前言1.安裝nodejs2.使用指南3.快速上手4.總結0.前言 最近的這個claudecode非常的火&#xff0c;因為可能是這個cursoe定價的一些原因吧&#xff0c;我是聽其他的這個大佬說的&#xff0c;因為這個cursor其實我就是最開始的使用用過一下&#xff0c;現在基本上不使用…

HTTP API 身份認證

互聯網系統通常需要根據用戶身份決定是否有資源的訪問權限&#xff0c;這就需要對用戶進行身份認證&#xff08;Authentication&#xff09;&#xff0c;驗證用戶所聲稱的身份。驗證手段通常是驗證只有用戶知道或擁有的東西&#xff0c;比如密碼、手機號、指紋等。 基于瀏覽器…

Python畢業設計232—基于python+Django+vue的圖書管理系統(源代碼+數據庫)

畢設所有選題&#xff1a; https://blog.csdn.net/2303_76227485/article/details/131104075 基于pythonDjangovue的圖書管理系統(源代碼數據庫)232 一、系統介紹 本項目前后端分離&#xff0c;分為用戶、管理員兩種角色 1、用戶&#xff1a; 注冊、登錄、新聞資訊、圖書信…

Koa+Puppeteer爬蟲教程頁面設計

當我使用Koa作為web服務器&#xff0c;Puppeteer作為爬蟲工具來編寫一個簡單的爬蟲教程時&#xff0c;發生了戲劇性的一幕。 下面我將創建一個完整的Koa Puppeteer爬蟲教程頁面&#xff0c;包含代碼示例、執行演示和詳細說明。設計思路 左側為教程內容區域右側為實時爬蟲演示區…