ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

LLaMA-Factory 怎么用 Megatron Bridge 后端做 Llama-3 LoRA SFT

LLaMA-Factory 怎么用 Megatron Bridge 后端做 Llama-3 LoRA SFT LLaMA-Factory 怎么用 Megatron Bridge 后端做 Llama-3 LoRA SFT【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory如果你想在 LLaMA-Factory 中用 Megatron Bridge 后端而不是默认的 Hugging Face Trainer 路径对 Llama 系列模型做 LoRA SFT需要完成三件事准备带 megatron-bridge 的环境、按 Megatron Bridge 的参数约定写一份训练配置、再通过USE_MEGATRON_BRIDGE1启动训练。仓库中的 示例配置 就是以meta-llama/Llama-3.2-1B-Instruct为例的完整 LoRA SFT 配置本文围绕它走一遍完整流程。适用的前提Megatron Bridge 的 PT/SFT 路径只覆盖文本来 LLMllama在支持的模型类型列表中见 MEGATRON_BRIDGE_SUPPORTED_MODELS多模态、音频、omni 类模型在 v0 中未启用启动时会直接抛出Model type ... is not supported错误。准备带 megatron-bridge 的环境有两种方式任选其一说明见 Docker 文档方式一pip 安装。运行训练时若未安装该后端LlamaFactory 会给出明确报错对应的安装命令为pip install --no-build-isolation megatron-bridge方式二使用仓库提供的 Megatron Bridge 镜像。镜像定义在 Dockerfile.megatron文档给出的版本组合为基础镜像ubuntu:22.04Python 3.12、PyTorch 2.12.1cu126、TransformerEngine 2.17.0、megatron-core 0.18.xvia megatron-bridge、megatron-bridge 0.5.0。构建与运行命令# 在仓库根目录构建镜像 docker build -f docker/docker-cuda/Dockerfile.megatron \ -t llamafactory-megatron-bridge:latest . # 启动容器挂载当前目录到 /app并预置两个关键环境变量 docker run --rm -it --gpus all --ipchost --shm-size16g \ -e DISABLE_VERSION_CHECK1 \ -e USE_MEGATRON_BRIDGE1 \ -v $PWD:/app -w /app \ llamafactory-megatron-bridge:latest其中--gpus all要求宿主机已安装 nvidia-container-toolkit--ipchost --shm-size16g是多进程训练的共享内存配置USE_MEGATRON_BRIDGE1是切换到 Megatron Bridge 后端的开关。编写训练配置以 examples/megatron_bridge/llama3_sft.yaml 为准配置分为几块### model model_name_or_path: meta-llama/Llama-3.2-1B-Instruct ### method stage: sft do_train: true finetuning_type: lora # full or lora dataset: alpaca_en_demo template: llama3 cutoff_len: 2048 preprocessing_num_workers: 8 ### output output_dir: saves/mbridge/llama3_sft logging_steps: 1 overwrite_output_dir: true ### train per_device_train_batch_size: 1 gradient_accumulation_steps: 1 num_train_epochs: 3 max_steps: 1000 # when set, overrides num_train_epochs for Megatron Bridge schedule save_steps: 3000 learning_rate: 5.0e-6 lr_scheduler_type: cosine warmup_steps: 10 adam_beta1: 0.9 adam_beta2: 0.999 weight_decay: 0.0 max_grad_norm: 1.0 bf16: true ### megatron bridge parallelism tensor_model_parallel_size: 1 pipeline_model_parallel_size: 1 context_parallel_size: 1 expert_model_parallel_size: 1 # virtual_pipeline_model_parallel_size: 2 sequence_parallel: false ### megatron bridge optimizer / overlap use_distributed_optimizer: true overlap_param_gather: true overlap_grad_reduce: true mixed_precision: bf16_mixed ### megatron bridge data / checkpoint use_packed_sequences: false export_hf_on_finish: false # disable for short loss-comparison runs (avoids checkpoint OOM)几个与 Megatron Bridge 路径直接相关的配置点参数定义见 MegatronBridgeArgumentsstage: sftfinetuning_type: lora走 SFT 阶段的 LoRA 微调示例注释表明full or lora均可full全量微调也支持。template: llama3Llama-3 系列对应的对话模板dataset: alpaca_en_demo使用仓库自带的演示数据集定义在 dataset_info.json。max_steps: 1000注释明确说明“when set, overrides num_train_epochs for Megatron Bridge schedule”即设置后它优先于num_train_epochs决定训练步数。并行度参数tensor/pipeline/context/expert_model_parallel_size默认均为 1单卡即可跑通示例中virtual_pipeline_model_parallel_size以注释形式给出。mixed_precision: bf16_mixed与bf16: true同时出现前者是 Megatron Bridge 的混合精度模式。use_distributed_optimizer、overlap_param_gather、overlap_grad_reduce控制 Megatron 分布式优化器及通信与计算的 overlap。export_hf_on_finish: false训练结束后是否把最终 checkpoint 导出为 Hugging Face 格式。注释说明对短时间的 loss 对比运行建议关闭以避免 checkpoint OOMLoRA 运行如果希望拿到 HF PEFT 格式的 adapter 输出需要把它设为true参数默认值也是False。megatron_pretrained_checkpoint示例中以注释给出/path/to/megatron_ckpt占位指向 Megatron 格式预训练 checkpoint 的路径不设置时HF 权重会在训练前自动转换。示例中另外注释掉的可选段包括激活重计算recompute_granularity/recompute_method/recompute_num_layers、模型 kernel 融合开关bias_activation_fusion、apply_rope_fusion、masked_softmax_fusion、cross_entropy_loss_fusion、MoE 相关项以及extra_config一个 JSON 字符串或 JSON 文件路径用于覆盖 Megatron Bridge 内部的 model/training 配置。这些都不影响最小配置跑通按需开启。参数校验上有两条约束值得注意各并行度必须 ≥ 1sequence_parallel为true时要求tensor_model_parallel_size 1否则启动阶段就会报错。启动训练启动命令需要带USE_MEGATRON_BRIDGE1环境变量USE_MEGATRON_BRIDGE1 llamafactory-cli train examples/megatron_bridge/llama3_sft.yaml这个环境变量不只是“开关”在 launcher 中检测到USE_MEGATRON_BRIDGE被启用后会强制设置FORCE_TORCHRUN1即训练会以 torchrun 多进程方式拉起解析参数时hparams/parser.py也会校验 megatron-bridge 是否已安装缺失时报错提示pip install --no-build-isolation megatron-bridge或使用 NeMo Framework 容器。若使用上文 docker 方式容器启动时已预置该变量在容器内直接执行llamafactory-cli train examples/megatron_bridge/llama3_sft.yaml即可。训练启动后的实际流程见 run_sft是主进程先把处理好的 SFT 数据导出到output_dir/mb_dataset/下然后确保 Megatron 格式预训练 checkpoint 存在必要时从 HF 权重自动转换最后调用 Megatron Bridge 的finetune入口执行训练。验证训练结果数据导出saves/mbridge/llama3_sft/mb_dataset/下应出现导出的训练数据training.jsonl这是 Megatron Bridge 实际消费的数据集。训练过程按logging_steps: 1每次 step 都会输出日志可以确认 loss 在正常记录。checkpointMegatron Bridge 的迭代 checkpoint 保存在output_dir下的iter_*目录中目录内包含分布式 checkpoint 载荷.distcp与run_config.yaml而不是 HF 格式的权重文件。run_config.yaml中的peft字段用于标识该 checkpoint 是否保存了 LoRA/PEFT 配置。HF 格式导出当export_hf_on_finish: true且训练成功保存过 checkpoint 时工作流会把最新的iter_*checkpoint 导出到output_dir/hf_export/LoRA checkpoint 只含 adapter 权重导出路径会走export_adapter_ckpt得到的是 HF PEFT 格式的 adapter。导出完成后用adapter_model相关文件存在与否来判断导出产物是否生成。限制与已知行为模型范围只有 MEGATRON_BRIDGE_SUPPORTED_MODELS 列出的文本 LLMllama、mistral、qwen 系列、deepseek 等能走这条路径多模态/音频/omni 模型 v0 未启用。Trainer 回调不可用Megatron Bridge 路径暂不支持 Hugging Face TrainerCallback传入的 callbacks 会被忽略并打印 warning。checkpoint 保存行为保存分布式 optimizer shard 时部分 GPU文档注释提到 V100上异步 D2H 拷贝可能报cudaErrorInvalidValue代码中已内置改为阻塞式拷贝的补丁见 _patch_dist_checkpoint_preload无需额外处理。pip 安装路径的一个坑pip 安装的 megatron-core 自带helpers_cpp但compile_helpers()仍会尝试调用 make代码中同样内置了跳过 make 编译的补丁_patch_dataset_helper_compilation。导出与训练的 fusion 一致性导出 HF checkpoint 时会自动禁用缺失 APEX 支持时的 fusion 项避免与训练阶段行为不一致。训练完成后如果要继续用这个 LoRA adapter可以走 LLaMA-Factory 常规的 adapter 加载/合并流程Megatron Bridge 侧需要的只是hf_export/下导出的 PEFT 格式产物或iter_*目录下的 checkpoint 本身。【免费下载链接】LlamaFactoryUnified Efficient Fine-Tuning of 100 LLMs VLMs (ACL 2024)项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表