推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载本篇指南以 FlexGen 仓库中随附的 HuggingFace Transformers PyTorch 示例目录benchmark/third_party/transformers/examples/pytorch/README.md为核心系统梳理该目录下全部按 ML 任务组织的可维护示例涵盖任务总览表、快速冒烟测试样本截断、断点恢复、模型上传 Hub、多 GPU 分布式训练与混合精度、TPU 训练、Accelerate 训练循环定制以及 TensorBoard / WB / Comet / Neptune 等实验追踪接入方式。读完本篇你将能够直接复用这些 PyTorch 示例脚本完成一次从参数配置、训练恢复到结果监控的完整微调与实验流程。一、示例目录总览按任务组织的 PyTorch 训练脚本该目录benchmark/third_party/transformers/examples/pytorch/存放的是使用 PyTorch 后端、按 NLP/CV/语音任务分类组织的示例脚本全部基于 Transformers 生态构建。目录下每个任务子目录都包含独立 README、requirements.txt与一个或多个run_*.py脚本例如language-modeling/run_clm.py因果语言建模、run_mlm.py掩码语言建模、run_plm.py以及对应的run_clm_no_trainer.py、run_mlm_no_trainer.pytext-classification/run_glue.py、run_xnli.py与run_glue_no_trainer.pytoken-classification/run_ner.py与run_ner_no_trainer.pyquestion-answering/run_qa.py、run_qa_beam_search.py、run_seq2seq_qa.py等summarization/run_summarization.py与run_summarization_no_trainer.pytranslation/run_translation.py与run_translation_no_trainer.pyspeech-recognition/、audio-classification/、image-classification/、image-pretraining/、semantic-segmentation/、multiple-choice/、text-generation/、contrastive-image-text/、speech-pretraining/、benchmarking/ 等。注意该目录位于 FlexGen 仓库的benchmark/third_party/下属于基准测试所依赖的第三方代码。FlexGen 自身的高吞吐推理脚本如 benchmark/hf_ds/hf_opt.py同样依赖transformers的模型实现例如OPTForCausalLM与accelerate的infer_auto_device_map/load_checkpoint_and_dispatch因此理解这些示例脚本有助于把握整个基准测试生态的模型加载与训练/推理管线。1.1 任务总览表Big Table of Tasks原文档以一张总览表给出全部示例的支撑信息本文完整保留其信息密度将外部链接统一替换为仓库内路径任务示例数据集Trainer 支持 Accelerate DatasetsColablanguage-modelingWikiText-2✅✅✅有multiple-choiceSWAG✅✅✅有question-answeringSQuAD✅✅✅有summarizationXSum✅✅✅有text-classificationGLUE✅✅✅有text-generation-n/a--有token-classificationCoNLL NER✅✅✅有translationWMT✅✅✅有speech-recognitionTIMIT✅-✅有multi-lingual speech-recognitionCommon Voice✅-✅有audio-classificationSUPERB KS✅-✅有image-classificationCIFAR-10✅✅✅有semantic-segmentationSCENE_PARSE_150✅✅✅-上表中「Trainer 支持」列的含义需要澄清标注 ✅ 表示脚本构建在TrainerAPI 之上标注「-」的脚本如 text-generation 的run_generation.py即使不基于Trainer也能正常工作只是可能缺少训练相关的高级特性。此外原文档注释表明未来计划加入「Cloud deployments」链接以便零配置部署大规模云端训练该功能在文档编写时尚未上线。二、快速冒烟测试用样本截断参数加速调试大多数示例脚本都内置了「将数据集样本截断到指定数量」的机制用于调试在跑完整数据集可能耗时数小时之前先快速验证程序各阶段数据加载 → 训练循环 → 评估 → 保存能否跑通。例如将训练/评估/预测三个 split 各截断为 50 个样本对应 token-classification/run_ner.pyexamples/pytorch/token-classification/run_ner.py \ --max_train_samples 50 \ --max_eval_samples 50 \ --max_predict_samples 50 \ [...]大多数脚本支持前两个参数部分脚本支持第三个。不确定某个脚本支持哪些参数时用-h快速查看examples/pytorch/token-classification/run_ner.py -h2.1 从源码看截断参数的实现原理从 run_ner.py 的源码可以看到这三个参数均以Optional[int]形式声明、默认值为None其语义为「若设置则出于调试或快速训练目的将对应 split 的样本数截断为该值」。截断动作发生在数据集预处理之后run_ner.pyif data_args.max_train_samples is not None: max_train_samples min(len(train_dataset), data_args.max_train_samples) train_dataset train_dataset.select(range(max_train_samples))实现要点先取min(len(dataset), max_train_samples)防止越界再通过datasets的select(range(...))完成截断。评估与预测 split 的逻辑完全一致且截断后的实际样本数会被写回metrics[train_samples]、metrics[eval_samples]用于日志记录。这意味着在完整训练之前你可以用极小的样本量验证「数据管线 模型前向/反向 评估」全链路而无需等待数据吞吐瓶颈。三、断点恢复从中断处继续训练训练可能因各种原因中断如抢占、断电、超时。示例脚本支持两种恢复方式从output_dir中最新 checkpoint 恢复传入--output_dir previous_output_dir但不要加--overwrite_output_dir。典型场景是训练被中断后原地恢复。从指定 checkpoint 恢复传入--resume_from_checkpoint path_to_a_specific_checkpoint从该 checkpoint 文件夹精确恢复。3.1 Trainer 级别的恢复语义如果要把示例脚本改造成 Notebook不再有命令行Trainer本身支持通过trainer.train(resume_from_checkpoint)恢复若resume_from_checkpointTrueTrainer会在TrainingArguments的output_dir中查找最后一个 checkpoint若resume_from_checkpoint是具体 checkpoint 路径则直接使用该文件夹恢复。3.2 从测试用例看恢复与断点逻辑的验证仓库内的示例回归测试 test_pytorch_examples.py 展示了脚本级冒烟测试的标准形态以distilbert-base-uncased为模型、tests/fixtures/tests_samples/MRPC/下的 CSV 为数据通过 patchsys.argv直接调用run_glue.main()并断言评估准确率不低于 0.75。这种「以参数列表为输入、直接驱动 main()」的测试模式正是快速验证脚本参数正确性与训练循环可运行性的最佳范本——你在本地复现示例时也可以照此方式构造最小参数集。四、将微调后的模型上传到 Model Hub所有示例脚本都支持在训练结束后将模型自动上传到 Model Hub只需添加--push_to_hub参数。上传后创建的仓库名为「你的用户名 / 你用作output_dir的文件夹名」例如用户名为sgugger、工作在~/tmp/test-mrpc文件夹下时将创建sgugger/test-mrpc。指定仓库名使用--hub_model_id需给出完整仓库名含用户名例如--hub_model_id sgugger/finetuned-bert-mrpc上传到组织用组织名替代用户名例如--hub_model_id huggingface/finetuned-bert-mrpc。使用注意事项需要在本地登录 Hugging Face 网站账号最简单的方式是运行huggingface-cli login并按提示输入用户名与密码也可以使用--hub_token参数直接传入认证 token所选output_dir要么是一个全新文件夹要么是远端仓库的本地克隆二者必须满足其一否则上传会冲突。五、分布式训练与混合精度多 GPU 一键启动得益于TrainerAPI上述所有 PyTorch 脚本开箱即用地支持分布式训练与混合精度。在n张 GPU 上启动脚本的通用命令为python -m torch.distributed.launch \ --nproc_per_node number_of_gpu_you_have path_to_script.py \ --all_arguments_of_the_script5.1 实战示例8 卡微调 BERT-LargeWhole Word Masking做 MNLIpython -m torch.distributed.launch \ --nproc_per_node 8 pytorch/text-classification/run_glue.py \ --model_name_or_path bert-large-uncased-whole-word-masking \ --task_name mnli \ --do_train \ --do_eval \ --max_seq_length 128 \ --per_device_train_batch_size 8 \ --learning_rate 2e-5 \ --num_train_epochs 3.0 \ --output_dir /tmp/mnli_output/参数速查--nproc_per_node每节点进程数等于可用 GPU 数--model_name_or_path预训练模型名Hub ID 或本地路径--task_nameGLUE 任务名此处为mnli--do_train/--do_eval开启训练 / 评估阶段--max_seq_length输入序列最大长度token 数控制显存占用与速度--per_device_train_batch_size每设备训练 batch 大小--learning_rate/--num_train_epochs学习率与训练轮数--output_dircheckpoint 与最终模型的输出目录。5.2 混合精度fp16如果你的 GPU 具备混合精度能力Pascal 架构或更新可使用 PyTorch 1.6.0 或更新版本直接训练旧版本可安装 Apex 库。只需在上述任意脚本命令中加入--fp16标志即可启用。原文档指出混合精度训练通常在保持最终结果一致的前提下带来约 2 倍训练加速该结论对应原文档引用的 text-classification 混合精度对比表。5.3 与 FlexGen 的关联作为对比参照FlexGen 基准测试中的 HuggingFace/DeepSpeed 对照脚本 benchmark/hf_ds/hf_opt.py 展示了另一个维度的「分布式 资源受限」用法它通过accelerate.infer_auto_device_map自动切分 OPT 模型权重配合--cpu-offload/--disk-offload参数在单 GPU CPU/磁盘上运行大模型例如deepspeed --num_gpus 1 hf_opt.py --model facebook/opt-1.3b --use-deepspeed --cpu-offload。这与本目录示例的「多 GPU 数据并行」互为补充前者面向吞吐优先的推理基准后者面向标准训练/微调任务。六、TPU 训练xla_spawn.py 启动器使用 TensorFlow 时TPU 作为tf.distribute.Strategy开箱即用使用 PyTorch 时仓库通过pytorch/xla提供 TPU 支持。仓库自带一个极简启动器 xla_spawn.py可在多个 TPU core 上运行示例脚本而无需任何样板代码用法与torch.distributed.launch类似只需传--num_cores标志然后跟常规训练脚本及其参数。python xla_spawn.py --num_cores num_tpu_you_have \ path_to_script.py \ --all_arguments_of_the_script6.1 实战示例8 个 TPU core 微调 BERT-LargeWW Masking做 MNLIpython xla_spawn.py --num_cores 8 \ text-classification/run_glue.py \ --model_name_or_path bert-large-uncased-whole-word-masking \ --task_name mnli \ --do_train \ --do_eval \ --max_seq_length 128 \ --per_device_train_batch_size 8 \ --learning_rate 2e-5 \ --num_train_epochs 3.0 \ --output_dir /tmp/mnli_output/6.2 源码解读从 xla_spawn.py 可以看到该启动器使用argparse.REMAINDER收集训练脚本参数保证脚本自身参数不被解析器吞掉--num_cores默认值为 1取 1 或 8内部依赖torch_xla.distributed.xla_multiprocessing的xmp以多进程方式在多个 TPU core 上并行执行。仓库还提供了对应的回归测试 test_xla_examples.py 验证该启动链路。七、用 Accelerate 定制训练循环大部分 PyTorch 示例脚本都有使用 Accelerate 库的版本文件名带_no_trainer.py后缀它们暴露了完整的训练循环方便按需定制或改造。使用前提是安装 Accelerate 的最新开发版pip install githttps://github.com/huggingface/accelerate随后按三步走交互式配置环境accelerate config按提示回答关于 GPU/CPU、混合精度、分布式后端等问题生成~/.cache/huggingface/accelerate/default_config.yaml验证环境就绪accelerate test启动训练accelerate launch path_to_script.py --args_to_script_no_trainer系列脚本的完整清单见各任务子目录例如 run_clm_no_trainer.py、run_glue_no_trainer.py、run_ner_no_trainer.py、run_summarization_no_trainer.py 等。提示若你打算在单卡 受限内存环境下复现 FlexGen 的 OPT 推理基准accelerate的设备映射能力infer_auto_device_map、load_checkpoint_and_dispatch正是 benchmark/hf_ds/hf_opt.py 的核心依赖之一可与本目录示例结合理解。八、日志与实验追踪示例脚本支持多种日志/实验追踪后端便于监控训练过程。当前支持的平台包括 TensorBoard、Weights Biases、Comet ML、Neptune。启用方式是脚本中TrainingArguments的report_to指定后端或命令行传--report_to。使用Trainer/TFTrainer类时损失、评估指标、模型拓扑与梯度仅Trainer会被自动记录。8.1 Weights BiasesWB安装并登录pip install wandb wandb loginJupyter 或 Colab 环境改用import wandb wandb.login()启用日志在TrainingArguments或脚本中把wandb加入report_to若已安装wandb也可直接传--report_to all。高级配置通过环境变量完成环境变量取值WANDB_LOG_MODEL训练结束时将模型作为 artifact 记录默认falseWANDB_WATCHgradients默认记录梯度直方图、all同时记录梯度与参数直方图、false不记录直方图WANDB_PROJECT按项目组织 runsrun 名称可通过脚本中的run_name参数或TrainingArguments设置。更多通用环境变量见 wandb 官方文档本文不再赘述外部链接。8.2 Comet.ml安装pip install comet_mlConda 环境conda install -c comet_ml -c anaconda -c conda-forge comet_ml8.3 Neptune先安装客户端库pip或conda二选一pip install neptune-clientconda install -c conda-forge neptune-client然后在训练脚本中导入NeptuneCallbackfrom transformers.integrations import NeptuneCallback方式一在TrainingArguments中设置report_toneptunetraining_args TrainingArguments( quick-training-distilbert-mrpc, evaluation_strategysteps, eval_steps20, report_toneptune, ) trainer Trainer( model, training_args, ... )方式二创建 Neptune callback 以获得更多日志选项neptune_callback NeptuneCallback()可向NeptuneCallback传入可选参数以丰富追踪信息例如neptune_callback NeptuneCallback( nameDistilBERT, descriptionDistilBERT fine-tuned on GLUE/MRPC, tags[args-callback, fine-tune, MRPC], # tags 便于在 Neptune 中管理 runs base_namespacecallback, # 默认是 finetuning log_checkpointsbest, # 其他选项last、same、None capture_hardware_metricsFalse, # Neptune run 的附加关键字参数 )将 callback 传给 Trainer此时report_to应设为None避免重复记录training_args TrainingArguments(..., report_toNone) trainer Trainer( model, training_args, ... callbacks[neptune_callback], )之后调用trainer.train()时元数据会自动记录到 Neptune。注意虽然可以在创建 callback 时直接传入 Neptune API token 与项目名但推荐做法是保存为环境变量环境变量取值NEPTUNE_API_TOKEN你的 Neptune API token点击头像 →Get your API token获取NEPTUNE_PROJECTNeptune 项目全名workspace-name/project-name见项目设置 →Properties九、本文涉及的仓库路径速查为便于继续深入阅读源码汇总本文引用的关键文件均为仓库根目录相对路径示例总览文档benchmark/third_party/transformers/examples/pytorch/README.md截断参数实现token-classification/run_ner.py参数定义与 L460-L494截断逻辑示例回归测试test_pytorch_examples.pyTPU 启动器xla_spawn.py 及其测试 test_xla_examples.pyGLUE 脚本text-classification/run_glue.py对照参考FlexGen 侧benchmark/hf_ds/hf_opt.py十、总结与实践建议综合来看这套 PyTorch 示例目录提供了三条可复用的实践路径标准微调基于Trainer的run_*.py脚本配合--max_*_samples冒烟测试、--resume_from_checkpoint断点恢复、--fp16混合精度与torch.distributed.launch多卡启动可快速落地任意 GLUE/NER/QA/翻译等任务训练循环定制_no_trainer.py系列配合accelerate launch把训练循环的控制权交还开发者实验追踪report_to callback 双通道接入 WB / Comet / Neptune / TensorBoard实现指标、模型与梯度直方图的自动记录。无论你是在 FlexGen 基准测试语境下对比推理吞吐还是需要一套开箱即用的 PyTorch 微调基线本目录都是可以直接运行、可以直接阅读源码、也可以被测试用例test_pytorch_examples.py、test_accelerate_examples.py、test_xla_examples.py验证的可靠起点。赞分享推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载相关推荐Transformers 训练示例脚本实战指南以摘要任务为例覆盖安装、分布式训练、TPU 与 AccelerateTransformers 训练示例脚本实战指南以摘要任务为例覆盖安装、分布式训练、TPU 与 Accelerate 本文基于 Transformers 官方人工智能深度学习机器学习预训练微调NLP计算机视觉语音多模态PyTorch Examples 开源示例库全览从 MNIST 到分布式训练与 C 前端的实战指南PyTorch Examples 开源示例库全览从 MNIST 到分布式训练与 C 前端的实战指南 PyTorch Examples 是 PyTorch示例工程人工智能深度学习sentence-transformers 训练示例全景指南从监督微调到分布式训练的完整实战路线图sentence transformers 训练示例全景指南从监督微调到分布式训练的完整实战路线图 本篇技术指南以 sentence transformers人工智能NLPEmbedding微调机器学习上一篇Zig图形编程教程使用Zig创建高性能图形应用下一篇实战指南如何构建高效专业的移动端实时对话数字人应用创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考