大模型微调、蒸馏记录

1,是什么
知识蒸馏(Knowledge Distillation)是一种模型压缩和加速技术,旨在将大型模型(通常称为教师模型)所学到的知识迁移到小型模型(通常称为学生模型)中,从而让小型模型在减少计算资源消耗和推理时间的同时,尽可能达到接近大型模型的性能。
2,为什么
知识蒸馏可以用小模型来实现(接近)大模型的推理效果,用于加快应用落地,尤其是移动端的应用落地
3,怎么做
用教师模型创建软标签,学生模型结合软标签以及Ground truth来计算损失函数,损失函数是比如KL散度,然后反向传播调整权重;

4,实际操作

用教师模型生成QA对,然后通过微调过程来对学生模型进行微调(让学生模型尽可能作出与教师模型一样的回答)

5,与传统模型训练的区别:
目标同样是学生模型,不同的是损失函数的计算需要用到教师模型的输出

6,用Trainer or STFTrainer:
Trainer更加通用,可配置的参数较多,需要对数据集进行tokenize预处理,可能需要写继承自Dataset的自己的数据集类
STFTrainer继承Trainer,在少量数据集上表现更加高效率以及更少的内存占用,接受对话式的数据集,对话式数据集不需要对数据集进行预处理,接受文本列表,json,参考:

监督微调训练器 - Hugging Face 机器学习平台

如果用了LoRA,最后需要合并模型参数

还可以用LLama Factory,微调、训练、评估框架

7,LLamaFactory使用

Package            Version      Editable project location
------------------ ------------ ----------------------------------------------accelerate                        1.2.1
aiofiles                          23.2.1
aiohappyeyeballs                  2.4.6
aiohttp                           3.11.12
aiohttp-cors                      0.7.0
aiosignal                         1.3.2
airportsdata                      20241001
annotated-types                   0.7.0
anyio                             4.8.0
astor                             0.8.1
async-timeout                     5.0.1
attrs                             25.1.0
audioread                         3.0.1
av                                14.1.0
bitsandbytes                      0.45.2
blake3                            1.0.4
cachetools                        5.5.1
certifi                           2025.1.31
cffi                              1.17.1
charset-normalizer                3.4.1
click                             8.1.8
cloudpickle                       3.1.1
colorful                          0.5.6
compressed-tensors                0.9.1
contourpy                         1.3.1
cycler                            0.12.1
datasets                          3.2.0
decorator                         5.1.1
deepspeed                         0.16.2
depyf                             0.18.0
dill                              0.3.8
diskcache                         5.6.3
distlib                           0.3.9
distro                            1.9.0
docstring_parser                  0.16
einops                            0.8.1
exceptiongroup                    1.2.2
fastapi                           0.115.8
ffmpy                             0.5.0
filelock                          3.17.0
fire                              0.7.0
fonttools                         4.56.0
frozenlist                        1.5.0
fsspec                            2024.9.0
gguf                              0.10.0
google-api-core                   2.24.1
google-auth                       2.38.0
googleapis-common-protos          1.66.0
gradio                            5.12.0
gradio_client                     1.5.4
grpcio                            1.70.0
h11                               0.14.0
hjson                             3.1.0
httpcore                          1.0.7
httptools                         0.6.4
httpx                             0.28.1
huggingface-hub                   0.28.1
idna                              3.10
importlib_metadata                8.6.1
iniconfig                         2.0.0
interegular                       0.3.3
jieba                             0.42.1
Jinja2                            3.1.5
jiter                             0.8.2
joblib                            1.4.2
jsonschema                        4.23.0
jsonschema-specifications         2024.10.1
kiwisolver                        1.4.8
lark                              1.2.2
lazy_loader                       0.4
librosa                           0.10.2.post1
llamafactory                      0.9.2.dev0    /media/PycharmProjects/llama_factory/LLaMa-Factory-Ubuntu
llvmlite                          0.44.0
lm-format-enforcer                0.10.9
markdown-it-py                    3.0.0
MarkupSafe                        2.1.5
matplotlib                        3.10.0
mdurl                             0.1.2
mistral_common                    1.5.3
modelscope                        1.22.3
mpmath                            1.3.0
msgpack                           1.1.0
msgspec                           0.19.0
multidict                         6.1.0
multiprocess                      0.70.16
nest-asyncio                      1.6.0
networkx                          3.4.2
ninja                             1.11.1.3
nltk                              3.9.1
numba                             0.61.0
numpy                             1.26.4
nvidia-cublas-cu12                12.4.5.8
nvidia-cuda-cupti-cu12            12.4.127
nvidia-cuda-nvrtc-cu12            12.4.127
nvidia-cuda-runtime-cu12          12.4.127
nvidia-cudnn-cu12                 9.1.0.70
nvidia-cufft-cu12                 11.2.1.3
nvidia-curand-cu12                10.3.5.147
nvidia-cusolver-cu12              11.6.1.9
nvidia-cusparse-cu12              12.3.1.170
nvidia-ml-py                      12.570.86
nvidia-nccl-cu12                  2.21.5
nvidia-nvjitlink-cu12             12.4.127
nvidia-nvtx-cu12                  12.4.127
openai                            1.61.1
opencensus                        0.11.4
opencensus-context                0.1.3
opencv-python-headless            4.11.0.86
orjson                            3.10.15
outlines                          0.1.11
outlines_core                     0.1.26
packaging                         24.2
pandas                            2.2.3
partial-json-parser               0.2.1.1.post5
peft                              0.12.0
pillow                            11.1.0
pip                               24.2
platformdirs                      4.3.6
pluggy                            1.5.0
pooch                             1.8.2
prometheus_client                 0.21.1
prometheus-fastapi-instrumentator 7.0.2
propcache                         0.2.1
proto-plus                        1.26.0
protobuf                          5.29.3
psutil                            6.1.1
py-cpuinfo                        9.0.0
py-spy                            0.4.0
pyarrow                           19.0.0
pyasn1                            0.6.1
pyasn1_modules                    0.4.1
pybind11                          2.13.6
pycountry                         24.6.1
pycparser                         2.22
pydantic                          2.10.6
pydantic_core                     2.27.2
pydub                             0.25.1
Pygments                          2.19.1
pyparsing                         3.2.1
pytest                            8.3.4
python-dateutil                   2.9.0.post0
python-dotenv                     1.0.1
python-multipart                  0.0.20
pytz                              2025.1
PyYAML                            6.0.2
pyzmq                             26.2.1
ray                               2.42.0
referencing                       0.36.2
regex                             2024.11.6
requests                          2.32.3
rich                              13.9.4
rouge-chinese                     1.0.3
rpds-py                           0.22.3
rsa                               4.9
ruff                              0.9.5
safehttpx                         0.1.6
safetensors                       0.5.2
scikit-learn                      1.6.1
scipy                             1.15.1
semantic-version                  2.10.0
sentencepiece                     0.2.0
setuptools                        75.2.0
shellingham                       1.5.4
shtab                             1.7.1
six                               1.17.0
smart-open                        7.1.0
sniffio                           1.3.1
soundfile                         0.13.1
soxr                              0.5.0.post1
sse-starlette                     2.2.1
starlette                         0.45.3
sympy                             1.13.1
termcolor                         2.5.0
threadpoolctl                     3.5.0
tiktoken                          0.8.0
tokenizers                        0.21.0
tomli                             2.2.1
tomlkit                           0.13.2
torch                             2.5.1
torchaudio                        2.5.1
torchvision                       0.20.1
tqdm                              4.67.1
transformers                      4.48.3
triton                            3.1.0
trl                               0.9.6
typer                             0.15.1
typing_extensions                 4.12.2
tyro                              0.8.14
tzdata                            2025.1
urllib3                           2.3.0
uvicorn                           0.34.0
uvloop                            0.21.0
virtualenv                        20.29.1
vllm                              0.7.2
watchfiles                        1.0.4
websockets                        14.2
wrapt                             1.17.2
xformers                          0.0.28.post3
xgrammar                          0.1.11
xxhash                            3.5.0
yarl                              1.18.3
zipp                              3.21.0

我的机器Titan XP用不了fatten attention,因为架构太老,vllm也用不了

按照官方文档进行微调即可,自定义的数据集要把格式弄成sharegpt那样的。微调用lora或者全量。

lora微调的话,输出的文件是适配器文件,也就是仅包含微调参数的文件,测试时,可以分别加载原始模型和适配器文件,也可以合并原始模型和适配器文件之后,再加载合并后的模型来进行推理;

分布微调:比如在两台机器上做微调,用llamafactory-cli没有成功,用deepspeed成功了,脚本如下:

deepspeed \
--hostfile hostfile \
--no_ssh \
--node_rank=0 \
--master_addr 192.168.10.1 \
--master_port=9900 \
src/train.py \
--stage sft \
--finetuning_type lora \
--lora_rank 8 \
--lora_target all \
--model_name_or_path /media/PycharmProjects/QWen2.5-0.5B-Instruct  \
--template qwen \
--do_train true \
--dataset gx_bank_data \
--cutoff_len 2048 \
--max_samples 1000000 \
--preprocessing_num_workers 16 \
--output_dir  saves/qwen2.5-0.5B/lora/sft-dist \
--overwrite_cache true \
--overwrite_output_dir true \
--plot_loss true \
--per_device_train_batch_size 2 \
--gradient_accumulation_steps 8 \
--learning_rate 1.0e-4 \
--num_train_epochs 3.0 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 500 \
--learning_rate 1e-4 \
--bf16 true \
--warmup_ratio 0.1 \
--deepspeed examples/deepspeed/ds_z0_config.json

hostfile的内容:

192.168.10.1 slots=1
192.168.10.2 slots=1

主机是ip为192.168.10.1,有一块GPU,从机是192.168.10.2,ZeRO 阶段选择z0,因为两个机器的显存都能加载完模型参数,因此选择z0,如果选z3,显存占用会降低,但是速度会比较慢

注意脚本中没有加上--num_nodes 2 和--num_gpus 2,加了会不成功,原因未知。

8,评测

每一种数据集评测方法不一样,比如文本生成,指标用BLEU,看回答跟数据集的相似度和流畅度有多少,如果是题目,只需要回答A,B,C,D这种,那就要提示大模型,仅需要回答A,B,C,D,然后用回答跟数据集的文本做比较;

如果是代码类的数据集,就要看生成的代码运行结果是否跟标答的运行结果一致,指标是pass@k

参考:

ceval/README_zh.md at main · hkust-nlp/ceval · GitHub

https://zhuanlan.zhihu.com/p/691397120

开源的评测框架:

opencompass/README_zh-CN.md at main · open-compass/opencompass · GitHub

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

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

相关文章

八大排序——简单选择排序

目录 1.1基本操作: 1.2动态图: 1.3代码: 代码解释 1. main 方法 2. selectSort 方法 示例运行过程 初始数组 每轮排序后的数组 最终排序结果 代码总结 1.1基本操作: 选择排序(select sorting)也…

2025有哪些关键词优化工具好用

越来越多的企业和个人开始意识到搜索引擎优化(SEO)对于网站曝光和业务增长的重要性。在SEO优化的过程中,关键词优化占据着至关重要的地位。关键词是用户在搜索引擎中输入的词语,优化关键词有助于提高网站在搜索结果中的排名&#…

(Xshell 8 + Xftp 8)下载安装miniconda至服务器指定目录+配置虚拟环境

一一一一 Xshell 8 Xftp 8均已登录,miniconda.sh安装包已经放在服务器指定目录中 二二二二 赋予脚本执行权限 chmod x Miniconda3-latest-Linux-x86_64.sh安装miniconda ./Miniconda3-latest-Linux-x86_64.sh -p /data1/huyan/zhangyifeng/miniconda3一直Enter…

Python学习

1 class MyClass:def __init__(self):print("Constructor called.")def __str__(self):return "MyClass instance"obj MyClass()print(obj) # 调用__str__方法 在Python中,__str__是一个特殊的方法,当你使用print()函数打印一个…

vueDevtools和文档整合(前端常用工具/插件)

3.vueDevtools安装 chrome插件vue-devtools下载地址: https://chrome.zzzmh.cn/info/nhdogjmejiglipccpnnnanhbledajbpd下载完放到chrome的拓展程序中即可,注意点:vue2和vue3下载版本不同,vue2的话使用稍微老点的版本才行。 详细…

dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型

要将 dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型. 申请阿里云百练的KEY 添加模型 测试模型

将Sqlite3数据库挂在内存上处理

创作灵感:最近把小学生的口算题从2位数改到3位数,100以内四则运算练习(千纬数学)再次更新,选取难题-CSDN博客要不断刷题目,以前100以内的加减乘除也是这样刷出来的,代码如下: impor…

【第1章:深度学习概览——1.1 深度学习的历史背景与发展轨迹】

你可能不知道,现在能自动给照片上色、帮医生看CT片、甚至写诗作曲的AI技术,其实早在二战时期就埋下了种子。这段故事里充满了天才的灵光乍现、整个行业的集体打脸、以及无数个"山穷水尽疑无路,柳暗花明又一村"的神转折。系好安全带,我们要从1943年的脑科学实验室…

九.Spring Boot使用 ShardingSphere + MyBatis + Druid 进行分库分表

文章目录 前言一、引入依赖二、创建一个light-db_1备用数据库三、配置文件 application-dev.yml四、创建shardingsphere-config.yml完整项目结构 五、测试总结 前言 在现代化微服务架构中,随着数据量的不断增长,单一数据库已难以满足高可用性、扩展性和…

XSS 常用标签及绕过姿势总结

XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…

Ubuntu20.04上搭建nginx正向代理提供上网服务

背景&#xff1a;公司很多电脑因软件管控问题不得不禁止设备上网&#xff0c;现需搭建上网代理服务器提供给这些用户使用。 操作系统&#xff1a;ubuntu20.04 工具&#xff1a;nginx-1.25.4 1、下载nginx安装包及依赖 由于nginx默认只持支持转发http协议&#xff0c;所以如…

deepseek的CoT优势、两阶段训练的有效性学习笔记

文章目录 1 DeepSeek的CoT思维链的优势1.2 open-r1的CoT训练数据1.3 ReAct任务与CoT任务适用场景 2 AI推理方向&#xff1a;deepseek与deepmind的两条路线的差异2.1 PRM与ORM的两大学派分支的差异2.2 DeepSeek-R1的两阶段训练概述 1 DeepSeek的CoT思维链的优势 DeepSeek跟之前…

DeepSeek批量生成全平台推广营销内容:高效提升营销效率

在这个信息爆炸的时代&#xff0c;内容营销的重要性不言而喻。无论是企业的官方网站、社交媒体账号&#xff0c;还是电商平台&#xff0c;都需要源源不断的高质量内容来吸引和留住用户。面对多平台发布的需求&#xff0c;人工撰写内容不仅耗时耗力&#xff0c;还容易出现内容质…

win11 终端乱码导致IDE 各种输出也乱码

因为 win11 终端乱码导致IDE 各种输出也乱码导致作者对此十分头大。所以研究了各种方法。 单独设置终端编码对 HKEY_CURRENT_USER\Console 注册表进行修改对 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processo 注册表进行修改使用命令[Console]::OutputEncoding [Syst…

字节Trae初使用感想

前言 大环境不好&#xff0c;公司为了降本增效。研发部门全员拥抱AI&#xff0c;前后端都要用起来。回归开发本源&#xff0c;前后端一个人做。 也不知道知道是哪位领导选型的&#xff0c;选的cursor&#xff0c;但是我不分享它&#xff0c;我分享Trae的初之验。也许是选curs…

笔记6——字典dict(dictionary)

文章目录 字典dict(dictionary)定义特点常用操作1.访问值2.添加键值对3.修改值4.删除键值对5.遍历字典6.合并字典 性能应用场景dict和list的区别 字典dict(dictionary) 以 键 - 值对 (key - value pairs)的形式存储数据 定义 字典使用花括号 {} 来定义&#xff0c;键和值之…

编译和链接【四】链接详解

文章目录 编译和链接【四】链接详解前言系列文章入口符号表和重定位表链接过程分段组装符号决议重定位 编译和链接【四】链接详解 前言 在我大一的时候&#xff0c; 我使用VC6.0对C语言程序进行编译链接和运行 &#xff0c; 然后我接触了VS&#xff0c; Qt creator等众多IDE&…

低空经济:开启未来空中生活的全新蓝海

引言 随着科技的进步&#xff0c;我们不再仅仅依赖地面交通和传统物流。你是否曾幻想过&#xff0c;未来的某一天&#xff0c;快递、外卖可以像魔法一样直接从空中送到你手中&#xff1f;或者&#xff0c;你能乘坐小型飞行器&#xff0c;快速穿梭于城市之间&#xff0c;告别拥堵…

IntegrAO整合不完整数据以实现患者分层

高通量组学分析技术的进步极大地推动了癌症患者的分层研究。然而&#xff0c;多组学整合中的数据不完整问题带来了巨大挑战&#xff0c;因为像样本排除或插补这样的传统方法常常会损害真实生物多样性。此外&#xff0c;将具有部分组学数据的新患者准确分类到现有亚型这一关键任…

[创业之路-299]:图解金融体系结构

一、金融体系结构 1.1 概述 金融体系结构是一个国家以行政的、法律的形式和运用经济规律确定的金融系统结构&#xff0c;以及构成这个系统的各种类型的银行和非银行金融机构的职能作用和相互关系。以下是对金融体系结构的详细分析&#xff1a; 1、金融体系的构成要素 现代金…