飞桨 (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_loss enable_release_grads disable_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),部分视频资源的音量也忽大忽小,整体使用体验不尽如人意。
不过,抛开这些产品体验,具体函数的执行效果上,还是不错的。百度似乎仍在坚持 “技术狂奔,产品拉胯” 的发展路径。