scGPT关于细胞类型注释的预训练模型微调的文档内容详细而系统,但对于使用来说有点复杂,看着让人眼花缭乱。这样整个过程摊开在使用者面前,虽然调整的自由度很高,但也同时增加了复杂性,这对于仅仅想简单使用一下的用户来说有些头重脚轻。
为此,就有研究者将微调的过程模块化,并将每一个模块封装成了python脚本,使用时只需调用现成的脚本即可运行相应的功能,大大降低了使用的复杂度,让scGPT模型微调平民化,让更多的人在数据分析时可以尝试大模型的解法。

整个过程分成三个模块:预处理、微调、推断,分别对应脚本protocol_preprocess.py、protocol_finetune.py、protocol_inference.py。
-
预处理
将自有数据准备成微调需要的形式:
# 查看所有参数
python protocol_preprocess.py --help
python protocol_preprocess.py \
--dataset_directory=../datasets/retina_snRNA.h5ad \
--cell_type_col=celltype \
--batch_id_col=sampleid \
--load_model=../scGPT_human \
--wandb_sync=True \
--wandb_project=finetune_retina_snRNA \
--wandb_name=finetune_example1
-
微调
开始使用自有数据集对基础scGPT模型进行微调。请根据自身的需求调整相关参数。
python protocol_finetune.py \
--max_seq_len=5001 \
--include_zero_gene=True \
--epochs=3 \
--batch_size=32 \
--schedule_ratio=0.9
batch_size参数会影响程序的运行,可以利用dry-run模式找到当前运行环境可以使用的最大值。
python protocol_finetune.py \
--dry_run=True \
--batch_size=32 \
--max_seq_len=5001 \
--include_zero_gene=True
-
推断
使用微调好的模型,评估和基准测试也在该部分执行。
python protocol_inference.py \
--load_model=save/dev_eyescGPT_May0520 \
--batch_size=32 \
--wandb_sync=True \
--wandb_project=benchmark_BC \
--wandb_name=sample_bm_0520
过程经过这么一封装使用起来显得相当简单,只要会跑程序的人看了都会觉得自己又行了,这就是让事情简单化的意义所在吧。
https://doi.org/10.1038/s41596-025-01220-1
https://github.com/RCHENLAB/scGPT_fineTune_protocol