微信扫码
添加专属顾问
我要投稿
飞桨AI Studio带你轻松上手大模型微调,从数据准备到模型训练一站式搞定。 核心内容: 1. 飞桨AI Studio平台介绍与算力选择指南 2. ERNIE模型支持的两种数据格式解析 3. 文心大模型4.5的完整微调实战步骤
飞桨 (PaddlePaddle) 是百度自研的深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体,对标国外的 Pytorch 和 Tensorflow。
由于飞桨各个模块组件更偏底层,为了方便 AI 学习者和开发者在线使用、训练、部署各种模型,基于飞桨平台百度又推出了 AI Studio(https://aistudio.baidu.com/index)。AI Studio 是一个集教学资源、算力、开发工具和社区生态于一体的在线 AI 模型开发平台,对标国外的 HuggingFace,其实国内也有类似的社区平台 modelscope(https://www.modelscope.cn/home)。顺带一提,百度还有一个历史悠久的千帆平台,也可以满足大模型在线训练和使用。
进到 AI Studio 首页之后,最重要的是要点击右上角的小电脑图标,它显示了你拥有的算力信息,选择预训练模型时,也要注意算力和 Paddle 版本的对应关系,比如选用 Tesla V100 显卡,算力只有 7.0,支持不了最新版 Paddle 的一些底层函数,建议选择 A / H100 以上的显卡。
ERNIE 支持 alpaca 和 erniekit 两种数据集格式。alpaca 格式是 HuggingFace 社区流行的一种对话式监督数据格式,采用 JSON 行格式,强调 instruction(指令)+ input + output。ERNIEKit 格式是百度 PaddlePaddle 社区用于训练 ERNIE 模型的格式,更注重内部结构化字段。
本次微调我们使用 erniekit 格式,源数据来自百度 2025LIC 赛事的示例数据(https://aistudio.baidu.com/datasetdetail/345031),经过清洗之后,格式如下图所示。
数据准备好之后,我们就可以开始下一步微调(finetune)大模型了,我们这次选用的预训练模型是文心大模型 4.5 开源系列中最小的大模型 ERNIE-4.5-0.3B,总大小 700M 左右。
首先,安装适配 CUDA 12.6 的 PaddlePaddle GPU 版本(3.1.0),并使用中国镜像源以加速下载。如果你还不确定你电脑的 CUDA 版本,可以使用nvidia-smi
查看。
!python -m pip install paddlepaddle-gpu==3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
# 检验是否安装成功
!python -c "import paddle;paddle.utils.run_check()"
ERNIE 是百度在 PaddlePaddle 上开发的一个中文为主的预训练语言模型,文心一言后面的大模型就是 ERNIE。
!git clone https://github.com/PaddlePaddle/ERNIE.git
%cd ERNIE-develop
!python -m pip install -r requirements/gpu/requirements.txt
!python -m pip install -e .
FastDeploy 是百度开发的一个模型部署工具,可以快速启动一个带有大模型后端的 Web 服务。
!python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
接着需要下载 ERNIE-4.5-0.3B 模型。这里需要额外安装 aistudio-sdk
Python 包,这个下载服务并未集成在 ERNIE 的安装包中,这一点确实有些令人费解。
!pip install --upgrade aistudio-sdk
# 使用aistudio cli下载模型(推荐)
!aistudio download --model PaddlePaddle/ERNIE-4.5-0.3B-Paddle --local_dir baidu/ERNIE-4.5-0.3B-Paddle
修改配置文件,使用官方的模版就行,改一下参数train_dataset_path
和eval_dataset_path
,其他保持不变。
### data
train_dataset_type:"erniekit"
eval_dataset_type:"erniekit"
train_dataset_path:"./examples/data/finetune_train_dataset.jsonl"
train_dataset_prob:"1.0"
eval_dataset_path:"./examples/data/finetune_eval_dataset.jsonl"
eval_dataset_prob:"1.0"
max_seq_len:8192
num_samples_each_epoch:6000000
### model
model_name_or_path:baidu/ERNIE-4.5-0.3B-Paddle
fine_tuning:LoRA
fuse_rope:True
use_sparse_head_and_loss_fn:True
### finetuning
# base
stage:SFT
seed:23
do_train:True
do_eval:True
distributed_dataloader:False
dataloader_num_workers:1
batch_size:1
num_train_epochs:1
max_steps:100
max_evaluate_steps:10000
eval_steps:10000
evaluation_strategy:steps
save_steps:10000000
save_total_limit:5
save_strategy:steps
logging_steps:1
release_grads:True
gradient_accumulation_steps:8
logging_dir:./vdl_log
output_dir:./output
disable_tqdm:True
# train
warmup_steps:20
learning_rate:1.0e-5
lr_scheduler_type:cosine
min_lr:1.0e-6
layerwise_lr_decay_bound:1.0
# optimizer
weight_decay:0.1
adam_epsilon:1.0e-8
adam_beta1:0.9
adam_beta2:0.95
offload_optim:True
# performance
tensor_parallel_degree:1
pipeline_parallel_degree:1
sharding_parallel_degree:1
sharding:stage1
sequence_parallel:True
pipeline_parallel_config:enable_delay_scale_lossenable_release_gradsdisable_partial_send_recv
recompute:False
recompute_use_reentrant:True
compute_type:bf16
fp16_opt_level:O2
disable_ckpt_quant:True
amp_master_grad:True
amp_custom_white_list:
-lookup_table
-lookup_table_v2
-flash_attn
-matmul
-matmul_v2
-fused_gemm_epilogue
amp_custom_black_list:
-reduce_sum
-softmax_with_cross_entropy
-c_softmax_with_cross_entropy
-elementwise_div
-sin
-cos
unified_checkpoint:True
unified_checkpoint_config:async_save
微调的方法有很多,这里我们使用 LoRA(低秩适配),主要因为这次训练使用的训练集比较少。
实际结果跑下来,一共 2629 条训练数据,花了大概 3 分钟就训练完了
!erniekit train examples/configs/ERNIE-4.5-0.3B/sft/run_sft_lora_8k.yaml
!erniekit export examples/configs/ERNIE-4.5-0.3B/run_export.yaml lora=True
模型微调并导出后,即可进行部署。
!erniekit server examples/configs/ERNIE-4.5-0.3B/run_chat.yaml
!erniekit chat examples/configs/ERNIE-4.5-0.3B/run_chat.yaml
微调前,模型在回答医疗相关问题时显得有些冗长。经过训练后,面对同样的问题,模型的回答风格变得更加简洁干脆。当然,也有一些问题的回答仍有待提升。
在 AI Studio 平台进行开发时,建议选择在线VS Code开发模式。如果使用在线 Notebook,可能会频繁遇到文件找不到等服务不稳定的情况。
尽管平台提供了在线学习资源,但许多教程内容过于简化,甚至有些项目不兼容 macOS 系统(例如 PP - ASR),部分视频资源的音量也忽大忽小,整体使用体验不尽如人意。
不过,抛开这些产品体验,具体函数的执行效果上,还是不错的。百度似乎仍在坚持 “技术狂奔,产品拉胯” 的发展路径。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-04-30
2025-05-07
2025-05-26
2025-05-21
2025-05-15
2025-06-17
2025-06-21
2025-05-10
2025-05-10
2025-05-13