ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

LitGPT 快速上手指南:从零预训练、微调到部署 20+ 开源大模型的完整工作流

LitGPT 快速上手指南:从零预训练、微调到部署 20+ 开源大模型的完整工作流 LitGPT 快速上手指南从零预训练、微调到部署 20 开源大模型的完整工作流【免费下载链接】litgpt20 high-performance LLMs with recipes to pretrain, finetune and deploy at scale.项目地址: https://gitcode.com/GitHub_Trending/li/litgptLitGPT 是一套以从零实现、无抽象层、完全可控为设计理念的开源大模型工具链覆盖 20 主流 LLM 的预训练pretrain、微调finetune与规模化部署deploy全流程。本指南以项目根目录 README.md 为骨架结合仓库源码CLI 入口、Python API、LoRA 微调、预训练 等逐层展开读完你将掌握 LitGPT 的安装方式、六大工作流的完整命令、YAML 训练配方机制以及底层 CLI 与 API 的实现原理可直接上手跑通自己的微调与推理任务。LitGPT 是什么一个无抽象、可 hack的 LLM 工具箱LitGPT 的口号是20 high-performance LLMs with recipes to pretrain, finetune, and deploy at scale。其核心设计原则是✅ From scratch implementations每个模型都从零实现不依赖黑盒封装单文件即可通读全部实现。✅ No abstractions没有多层内部抽象调试时可以直接深入具体代码路径。✅ Beginner friendly对新手友好官方提供面向 0 基础用户的 0_to_litgpt.md 教程。✅ Enterprise ready采用 Apache 2.0 协议见 LICENSE.md允许无限制的企业级使用。在训练与部署能力上项目原生支持 Flash Attention、FSDP 全分片数据并行、LoRA / QLoRA / Adapter 参数高效微调、fp4/fp8/fp16/fp32 低精度训练与量化降内存并可扩展到 11000 张 GPU/TPUextensions/xla 提供 TPU 支持。整套实现基于 Lightning Fabric是从 Lit-LLaMA 与 nanoGPT 演进而来见 README 的 Acknowledgments 部分。从 pyproject.toml 可以看到当前仓库版本为0.5.12要求 Python ≥ 3.10核心依赖包括torch2.7、lightning2.6.1、huggingface-hub、safetensors、jsonargparse等。快速开始安装与首个推理示例标准安装pip install litgpt[extra][extra]是可选的扩展依赖组根据 pyproject.toml 的optional-dependencies.extra它包含部署所需的litserve、评估所需的lm-eval固定为0.4.2,0.4.9.1、量化所需的bitsandbytes、数据与日志相关的litdata、litlogger、tensorboard、transformers等组件。从源码安装进阶git clone https://github.com/Lightning-AI/litgpt cd litgpt # if using uv uv sync --all-extras # if using pip pip install -e .[extra,compiler,test]其中compiler依赖组引入了lightning-thunderLinux 下可用对应 extensions/thunder 中的 Thunder 编译加速扩展test组则包含pytest系列测试工具。三行代码加载并推理from litgpt import LLM llm LLM.load(microsoft/phi-2) text llm.generate(Fix the spelling: Every fall, the family goes to the mountains.) print(text) # Corrected Sentence: Every fall, the family goes to the mountains.LLM.load与LLM.generate的实现在 litgpt/api.pyLLM.load(model, initpretrained, ...)当initpretrained时会通过auto_download_checkpoint自动从 Hugging Face Hub 下载权重到本地 checkpoint 目录再依据目录内的model_config.yaml实例化 litgpt/model.py 中的GPT模型并自动选择 accelerator优先 CUDA其次 MPS最后 CPU。也可以传本地目录路径直接加载或设initrandom用随机权重初始化。LLM.generate(prompt, max_new_tokens50, temperature1.0, top_kNone, top_p1.0, streamFalse, ...)支持 temperature、top-k、top-p 采样应用顺序为 top_k → temperature → top_p、流式输出streamTrue以及返回 token ID。LLM.distribute(...)用于将模型分发到单卡或多卡配合generate_strategysequential/tensor_parallel可在多 GPU 上跑超大模型并支持bnb.nf4、bnb.nf4-dq、bnb.fp4、bnb.fp4-dq、bnb.int8等 bitsandbytes 量化方式。LLM.benchmark(...)对generate的多次调用计时输出首 token 延迟、生成速度tokens/sec与 GPU 显存占用可用于性能评估。更完整的 Python API 说明见 tutorials/python-api.md。支持 20 模型从 Llama 到 Qwen、Phi、GemmaLitGPT 中每个模型均从零实现以最大化性能并去除抽象层。README 中列出的主要模型节选模型规模作者Llama 3 / 3.1 / 3.2 / 3.31B, 3B, 8B, 70B, 405BMeta AICode Llama7B, 13B, 34B, 70BMeta AICodeGemma7BGoogleGemma 22B, 9B, 27BGooglePhi 414BMicrosoft ResearchQwen2.50.5B ~ 72BAlibaba GroupQwen2.5 Coder0.5B ~ 32BAlibaba GroupR1 Distill Llama8B, 70BDeepSeek AI完整清单还包含 Falcon1B~180B、Mixtral MoE8x7B / 8x22B、Mistral、Pythia、OLMo、TinyLlama、StableLM、SmolLM2、Qwen3 / Qwen3 MoE、QwQ 等 20 模型覆盖 135M 到 405B 的规模区间。可以通过以下命令随时列出所有可用模型litgpt download list模型的名称到配置的映射定义在 litgpt/config.py 的name_to_config中预训练脚本 litgpt/pretrain.py 会在传入不支持的模型名时自动打印可选列表。注意部分模型如 Llama 系列的下载需要额外的访问令牌详见 tutorials/download_model_weights.md。六大工作流一条命令打通全生命周期LitGPT 提供了统一的命令行接口格式为litgpt [action] [model]。在 litgpt/main.py 的PARSER_DATA中注册了全部 22 个子命令包括download、chat、finetune及finetune_lora/finetune_full/finetune_adapter/finetune_adapter_v2、pretrain、generate系列含generate_sequentially、generate_speculatively、generate_tp、convert_to_litgpt/convert_from_litgpt/convert_pretrained_checkpoint、merge_lora、evaluate、serve、validate。CLI 基于 jsonargparse 构建天然支持 YAML 配置与--config参数覆盖。# litgpt [action] [model] litgpt serve meta-llama/Llama-3.2-3B-Instruct litgpt finetune meta-llama/Llama-3.2-3B-Instruct litgpt pretrain meta-llama/Llama-3.2-3B-Instruct litgpt chat meta-llama/Llama-3.2-3B-Instruct litgpt evaluate meta-llama/Llama-3.2-3B-Instruct微调 LLMFinetune微调指在预训练模型基础上用面向特定任务的小型专业数据集继续训练。下面是 README 给出的端到端示例# 0) 准备数据集 curl -L https://huggingface.co/datasets/ksaw008/finance_alpaca/resolve/main/finance_alpaca.json -o my_custom_dataset.json # 1) 微调模型自动下载权重 litgpt finetune microsoft/phi-2 \ --data JSON \ --data.json_path my_custom_dataset.json \ --data.val_split_fraction 0.1 \ --out_dir out/custom-model # 2) 测试模型 litgpt chat out/custom-model/final # 3) 部署模型 litgpt serve out/custom-model/final这里的litgpt finetune默认执行 LoRA 微调litgpt/finetune/lora.py。从源码看finetune的核心参数包括checkpoint_dir基础模型 checkpoint 目录若不存在会自动下载。out_dircheckpoint 与日志输出目录默认out/finetune/lora。precision可选bf16-true、bf16-mixed、32-truequantize可选bnb.nf4、bnb.nf4-dq、bnb.fp4、bnb.fp4-dq、bnb.int8-training注意量化与混合精度不能同时使用且多卡训练暂不支持量化。devices/num_nodes设备数与节点数多卡时自动采用ModelParallelStrategy并检查 NVLink 连通性。LoRA 超参lora_r秩默认 8、lora_alpha默认 16、lora_dropout默认 0.05以及控制作用位置的lora_query/lora_key/lora_value/lora_projection/lora_mlp/lora_head布尔开关。训练结束时 LoRA 权重会保存在out_dir/final/lit_model.pth.lora并自动调用merge_lora将 LoRA 权重合并回基座模型litgpt/finetune/lora.py。完整的微调教程含 full、LoRA、QLoRA、Adapter见 tutorials/finetune.md、tutorials/finetune_lora.md 与 tutorials/finetune_adapter.md。部署 LLMDeploylitgpt serve基于 LitServe 自动启动一个可被网站或应用访问的 Web 服务# 部署开箱即用的 LLM litgpt serve microsoft/phi-2 # 部署自己训练的模型 litgpt serve path/to/microsoft/phi-2/checkpoint服务默认监听8000端口路径为/predict。在另一个终端中可以这样查询import requests, json response requests.post( http://127.0.0.1:8000/predict, json{prompt: Fix typos in the following sentence: Example input} ) print(response.json()[output])从 litgpt/deploy/serve.py 的run_server实现可以看到服务支持--quantizenf4 / fp4 / int8 等、--precision、--temperature默认 0.8、--top_k默认 50、--top_p、--max_new_tokens默认 50--stream启用流式响应StreamLitAPI--openai_spec开启 OpenAI 兼容的/v1/chat/completions端点OpenAISpecLitAPI可直接对接 OpenAI SDK 生态--devices与--generate_strategysequential/tensor_parallel单卡放不下时把 Transformer 层顺序切分到多卡或使用张量并行--port、--api_path、--timeout默认 30s、--access_token。更完整的部署指南见 tutorials/deploy.md。评估 LLMEvaluate评估用于衡量模型在各种任务上的理解与生成能力如大学化学、编程等典型基准包括 MMLU、TruthfulQAlitgpt evaluate microsoft/phi-2 --tasks truthfulqa_mc2,mmlu实现位于 litgpt/eval/evaluate.py评估基于 LM Evaluation Harness会先把 LitGPT 格式的 checkpoint 转换为pytorch_model.bin保存在checkpoint_dir/evaluate/再运行指定任务结果输出为 JSON 与 markdown 表格。参数包括--tasks逗号分隔的任务名、--num_fewshot、--batch_size正整数 /auto/auto:N、--device、--limit每任务样本数上限与--seed默认 1234。不指定--tasks时会列出全部可用任务。详细说明见 tutorials/evaluation.md。交互式测试 LLMChatlitgpt chat提供交互式对话与 embedding 提取能力litgpt chat microsoft/phi-2 Prompt: What do Llamas eat?更完整的用法是# 1) 列出所有支持的 LLM litgpt download list # 2) 使用模型自动下载权重 litgpt chat microsoft/phi-2 Prompt: What do Llamas eat?底层实现在 litgpt/chat/base.py默认采用temperature1.0、top_k50、top_p1.0的采样配置支持自定义 prompt 风格。完整说明见 tutorials/inference.md。从零预训练 LLMPretrain预训练指用海量数据教会模型语言能力之后再针对具体任务微调mkdir -p custom_texts curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt # 1) 下载分词器 litgpt download EleutherAI/pythia-160m \ --tokenizer_only True # 2) 预训练模型 litgpt pretrain EleutherAI/pythia-160m \ --tokenizer_dir EleutherAI/pythia-160m \ --data TextFiles \ --data.train_data_path custom_texts/ \ --train.max_tokens 10_000_000 \ --out_dir out/custom-model # 3) 测试模型 litgpt chat out/custom-model/final从 litgpt/pretrain.py 可以看到pretrain的默认配置为global_batch_size512、micro_batch_size4、max_tokens3e12、lr_warmup_steps2000、min_lr4e-5、默认日志器为tensorboard、默认数据集为TinyLlama。多卡训练时自动启用FSDPStrategyHYBRID_SHARD 按Block自动包装。此外还支持--resume/--initial_checkpoint_dir分别用于从out_dir断点续训、或从指定 checkpoint 初始化权重后者即继续预训练场景--model_config用自定义配置对象替代model_name--train.tie_embeddings绑定 embedding 与语言模型头权重。配置样例可参考 config_hub/pretrain 下的tinyllama.yaml、tinystories.yaml等。完整预训练教程见 tutorials/pretrain.md。继续预训练 LLMContinued Pretraining继续预训练是微调的一种形式通过在自定义数据上继续训练来专业化一个已有模型mkdir -p custom_texts curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt # 1) 继续预训练一个模型自动下载权重 litgpt pretrain EleutherAI/pythia-160m \ --tokenizer_dir EleutherAI/pythia-160m \ --initial_checkpoint_dir EleutherAI/pythia-160m \ --data TextFiles \ --data.train_data_path custom_texts/ \ --train.max_tokens 10_000_000 \ --out_dir out/custom-model # 2) 测试模型 litgpt chat out/custom-model/final关键在于--initial_checkpoint_dir参数预训练脚本会通过fabric.load_raw加载该目录下的lit_model.pth作为初始权重litgpt/pretrain.py从而在自定义语料上继续预训练。详见 tutorials/pretrain.md。前沿特性一览README 中列举了 LitGPT 的核心能力与源码一一对应SOTA 优化Flash Attention v2、基于 FSDP 的全分片数据并行多 GPU 支持、可选 CPU offload、TPU / XLA 支持。全流程覆盖预训练、微调、部署。低精度训练FP16、BF16、FP16/FP32 混合精度降低计算需求。量化降显存量化教程 覆盖 4-bit float、8-bit integer 与双重量化bnb.nf4/nf4-dq/fp4/fp4-dq/int8。配置文件开箱即用见 config_hub 目录。参数高效微调LoRA / QLoRA 与 Adapter / Adapter v2。权重格式导出tutorials/convert_lit_models.md 提供到其他流行模型权重格式的转换对应 CLI 的convert_to_litgpt、convert_from_litgpt、convert_pretrained_checkpoint命令。丰富数据集预训练与微调支持众多流行数据集也支持自定义指令微调数据集。可读、易改的代码每个模型单文件实现方便复现与试验最新研究想法。训练配方用 YAML 配置文件批量复现最佳实践LitGPT 附带经过验证的训练配方YAML 配置覆盖不同训练条件参数基于实际训练中表现最优的组合生成。全部配方可在 config_hub 浏览。使用方式litgpt finetune \ --config config_hub/finetune/llama-2-7b/lora.yamlconfig_hub下按模型组织例如 config_hub/finetune/llama-2-7b/lora.yaml另有full.yaml、qlora.yamlconfig_hub/pretrain 下则提供tinyllama.yaml、tinystories.yaml等预训练配方。由于 CLI 基于 jsonargparse--config可直接读取本地 YAML 或 URL。完整示例Llama 2 7B 的 QLoRA 微调配置# 微调时要加载的基础模型 checkpoint 目录 checkpoint_dir: checkpoints/meta-llama/Llama-2-7b-hf # checkpoint 与日志保存目录 out_dir: out/finetune/qlora-llama2-7b # 微调使用的精度可选 bf16-true、bf16-mixed、32-true precision: bf16-true # 若设置则用该算法量化模型可选 nf4/nf4-dq/fp4/fp4-dq/int8-training quantize: bnb.nf4 # 使用多少设备/GPU devices: 1 # 使用多少个节点 num_nodes: 1 # LoRA 秩 lora_r: 32 # LoRA alpha lora_alpha: 16 # LoRA dropout lora_dropout: 0.05 # 是否对 attention 的 query 权重应用 LoRA lora_query: true # 是否对 attention 的 key 权重应用 LoRA lora_key: false # 是否对 attention 的 value 权重应用 LoRA lora_value: true # 是否对 attention block 的输出投影应用 LoRA lora_projection: false # 是否对 attention block 的 MLP 权重应用 LoRA lora_mlp: false # 是否对 GPT 的输出头应用 LoRA lora_head: false # 数据相关参数默认使用 litgpt.data.Alpaca data: class_path: litgpt.data.Alpaca2k init_args: mask_prompt: false val_split_fraction: 0.05 prompt_style: alpaca ignore_index: -100 seed: 42 num_workers: 4 download_dir: data/alpaca2k # 训练相关参数详见 litgpt.args.TrainArgs train: # 每 N 步优化保存一次 checkpoint save_interval: 200 # 每 N 次迭代记录一次日志 log_interval: 1 # 跨数据并行 rank 的全局批大小 global_batch_size: 8 # 每个数据并行 rank 的微批大小 micro_batch_size: 2 # 学习率 warmup 的迭代数 lr_warmup_steps: 10 # 训练轮数 epochs: 4 # 训练的总 token 数 max_tokens: # 限制优化步数 max_steps: # 限制样本长度 max_seq_length: 512 # 是否绑定 embedding 与 LM head 权重 tie_embeddings: learning_rate: 0.0002 weight_decay: 0.0 beta1: 0.9 beta2: 0.95 max_norm: min_lr: 6.0e-05 # 评估相关参数详见 litgpt.args.EvalArgs eval: # 每 N 步优化评估一次 interval: 100 # 生成的最大新 token 数 max_new_tokens: 100 # 评估迭代数 max_iters: 100 # 日志器名称可选 wandb / tensorboard / csv logger_name: csv # 随机种子用于复现 seed: 1337以上 YAML 中的参数注释类型与默认值与 litgpt/finetune/lora.py 中setup的函数签名一一对应其中TrainArgs的定义位于 litgpt/args.py。注意几个约束lr_warmup_fraction与lr_warmup_steps只能二选一lr_warmup_steps应小于max_steps。在命令行中覆盖任意参数配置文件的优势在于可被命令行参数按需覆盖例如把 LoRA 秩从 32 改成 4litgpt finetune \ --config config_hub/finetune/llama-2-7b/lora.yaml \ --lora_r 4这种YAML 基础配置 CLI 增量覆盖的机制由 jsonargparse 提供使得同一个配方可以灵活适配不同显存、不同数据集与不同训练预算。从源码理解 CLI 架构litgpt命令的入口定义在 pyproject.toml 的[project.scripts]litgpt litgpt.__main__:main。litgpt/main.py 中用PARSER_DATA字典把 22 个子命令名映射到对应的入口函数如finetune对应litgpt.finetune.lora.setupserve对应litgpt.deploy.serve.run_serverevaluate对应litgpt.eval.evaluate.convert_and_evaluate_check_commands()会断言PARSER_DATA与 litgpt/parser_config.py 中parser_commands()保持一致防止命令注册失配通过set_config_read_mode(urls_enabledTrue)开启--config的 URL 读取能力调用torch.set_float32_matmul_precision(high)默认启用高精度 float32 matmul 策略。因此无论是chat、finetune、pretrain、evaluate还是serve本质上都是同一套参数解析框架下的不同入口函数这也解释了为什么所有子命令都拥有统一的--config与参数覆盖语法。延伸阅读tutorials/0_to_litgpt.md零基础入门tutorials/finetune.md微调总览含 LoRA、QLoRA、Adaptertutorials/pretrain.md预训练tutorials/evaluation.md模型评估tutorials/prepare_dataset.md支持的数据集与自定义数据集tutorials/quantize.md量化tutorials/oom.mdOOM 内存溢出排查tutorials/python-api.md完整 Python APIextensions/xla云端 TPU 使用结语LitGPT 的核心价值在于一条命令、全流程覆盖从 pip 安装 到LLM.load三行推理从litgpt finetune到litgpt serve部署上线从 YAML 配方复现最佳实践到 CLI 增量覆盖参数整个链路都保持了无抽象、可读、可 hack的极简风格。如果你正在寻找一个既能快速跑通实验、又能深入底层研究模型实现的 LLM 工具箱README.md 及其配套的 20 教程位于 tutorials 目录就是最好的起点。【免费下载链接】litgpt20 high-performance LLMs with recipes to pretrain, finetune and deploy at scale.项目地址: https://gitcode.com/GitHub_Trending/li/litgpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表