
深度学习计算机视觉NLP多模态模型训练大模型【免费下载链接】corenetCoreNet: A library for training deep neural networks项目地址https://gitcode.com/GitHub_Trending/co/corenet点击查看免费下载本文以 CoreNet 开源仓库中的 OpenELM 项目文档与源码为据系统讲解 OpenELM270M / 450M / 1.1B / 3B 四档规模在 CoreNet 框架下的完整训练与微调链路包括公共语料预训练的数据集组织方式、多节点分布式训练命令、基于 DPO 的指令微调以及 LoRA / DoRA 参数高效微调与 LLM Adapters 基准评估。读者读完可掌握如何从语料准备出发完整复现 OpenELM 的预训练、指令微调与 PEFT 评估流程并能看懂 CoreNet 中对应的 YAML 配置与模型源码实现。一、OpenELM 项目概览OpenELM 是 CoreNet 仓库中提供的高效语言模型家族其核心特点在于层间参数分配不均匀通过让每个 Transformer 层的注意力QKV与前馈网络FFN维度按不同的乘数变化实现比均匀分配更高的参数利用效率。该工作对应的论文为 arXiv 2404.14619完整引用信息见文末。在 projects/openelm/ 目录下项目同时提供了以下四类能力与配套文档预训练Pre-trainingREADME-pretraining.md覆盖语料准备与多节点训练评估Evaluation基于 HuggingFace 生态的评估说明以及仓库内的 LLM Adapters 评估脚本指令微调Instruction TuningREADME-instruct.md基于 Alignment Handbook 的 DPO 微调参数高效微调PEFTREADME-peft.mdLoRA / DoRA 微调与评估。此外mlx_examples/open_elm/README.md 提供了将模型转换到 Apple MLX 框架并在 Apple Silicon 上运行推理的完整方案。模型家族配置源码级事实从源码结构看OpenELM 各规模的模型结构定义在 general_gpt.py 的SUPPORTED_MODELS中具体配置如下模型Transformer 层数模型维度Head 维度GQA 组数FFN 乘数QKV 乘数OpenELM-270M161280644(0.5, 4.0)(0.5, 1.0)OpenELM-450M201536644(0.5, 4.0)(0.5, 1.0)OpenELM-1.1B282048644(0.5, 4.0)(0.5, 1.0)OpenELM-3B3630721284(0.5, 4.0)(0.5, 1.0)其中ffn_multipliers(0.5, 4.0)与qkv_multipliers(0.5, 1.0)的含义是各层乘数从起始值到结束值线性插值对应源码中np.linspace的层间缩放逻辑即论文中 block-wise scaling从而使不同层拥有不同宽度的注意力与 FFN。所有模型均启用 QK 归一化normalize_qk_projectionsTrue并共享输入输出投影层share_input_output_layersTrue使用 RMSNorm 归一化与 RoPE 位置编码上下文长度为 2048。二、Tokenizer基于 LLaMA SentencePiece 模型OpenELM 实验统一使用LLaMA v1/v2 的 SentencePiece tokenizer即 Llama 官方词表需自行从 Meta 官方渠道下载tokenizer.model文件。在 CoreNet 的训练配置中tokenizer 通过text_tokenizer段配置为sentence_piece并开启了 NFC 归一化、句首SOT与句尾EOTtoken 追加text_tokenizer: name: sentence_piece sentence_piece: enable_nfc_normalization: true append_sot_token: true append_eot_token: true # model_path: PATH_OF_LLAMA_SPM_MODEL配置中还有一个值得注意的细节虽然原始词表大小为 32001含 padding token但分类层lm_head的vocab_size被设置为 32128这是为了让维度更适配硬件对齐计算友好该设置在配置文件中以锚点变量_anchor_vocab_size定义。三、预训练从语料准备到多节点训练3.1 数据集构成OpenELM 的预训练数据全部来自公开语料包括RefinedWeb、PILE、RedPajama 的子集以及 Dolma v1.6 的子集。文档明确提示使用前需逐一接受每个数据集的许可协议。以 openelm_270M.yaml 中的general_lm数据配置为骨架各语料的组织方式如下RefinedWeb从 HuggingFace 下载共 5535 个 parquet 文件建议重命名为refinedweb-{file_id:05d}-of-05534.parquet格式text_key为contentRedPajama按子集组织为LOCATION/REDPAJAMA_SUBSET_NAME/REDPAJAMA_SUBSET_NAME-FILE_ID-TOTAL_FILES.jsonl格式例如arxiv/arxiv-{file_id:05d}-00099.jsonl100 个文件、file_id_range: [0, 100]、book、github、stackexchange、wikipedia、c4等子集text_key为textPILE1650 个 parquet 文件重命名为pile-{file_id:05d}-of-01650.parquettext_key为textDolma v1.6json.gz 格式按子集组织如books/books-{file_id:04d}.json.gz、pes2o、reddit、stack、wiki等text_key为text。每个数据子集在train_data_info列表中用一个字典描述核心字段是file_name模板字符串支持{file_id:05d}形式的零填充占位符、text_key文本字段名和file_id_range起止文件编号示意如下dataset: language_modeling: shuffle_data: true general_lm: train_data_info: [ { # file_name: LOCATION/refinedweb-{file_id:05d}-of-05534.parquet, text_key: content, file_id_range: [0, 5534] }, # 更多子集同理追加支持 jsonl / json.gz / parquet 三种格式 ]3.2 预训练配置要点解读以 270M 与 3B 两份配置为例预训练阶段的几个关键配置段值得深入理解数据与上下文dataset/language_modelingdataset: root_train: disable_val: true train_batch_size0: 16 workers: 4 persistent_workers: true pin_memory: true category: language_modeling name: general_lm language_modeling: sequence_length: 2048 # 上下文长度锚点 min_tokens_per_text: 256 # 过滤分词后不足 256 token 的文本避免过度 padding min_characters_per_text: 200 # 过滤分词前不足 200 字符的文本 shuffle_data: true注释中说明了有效 batch size 的估算逻辑16 条序列 × 8 张 A100/H100 80GB GPU × 16 节点 × 2048 token/序列 ≈ 每步 4M tokens训练总 token 量约为1.4~1.5T350k 步 × 4M tokens。损失loss使用语言建模交叉熵设置ignore_index为 padding index32000并启用z-lossuse_z_loss: true用于稳定大规模 softmax 的训练。优化器与调度器optim/scheduleroptim: name: adamw weight_decay: 0.1 adamw: beta1: 0.9 beta2: 0.95 eps: 1.e-8 scheduler: is_iteration_based: true max_iterations: 350000 name: cosine warmup_init_lr: 1.e-06 warmup_iterations: 5000 # 约 20B tokens 预热5000 × 4M tokens cosine: max_lr: 0.0053 # 270M 配置 min_lr: 0.00053 # min_lr 0.1 × max_lr不同规模模型的学习率不同270M 的max_lr为 5.3e-33B 的max_lr为 1.2e-3均遵循 min_lr 0.1 × max_lr 的余弦退火规则。FSDP 配置仅 3B 等较大模型使用3B 配置中引入了fsdp训练流水线train_eval_pipeline.name: fsdp_train_eval_pipeline采用full_shard分片策略、参数与 buffer 使用 bfloat16、梯度归约使用 float32并开启limit_all_gathers与activation_checkpointing。相比之下270M/450M 配置不启用 FSDP 与激活检查点而是通过增加节点数来容纳显存需求这也是 270M 配置注释中使用更多节点因为未启用 FSDP 激活检查点的由来。模型定义modelmodel: language_modeling: name: general_gpt general_gpt: model_name: OpenELM-270M # 对应 SUPPORTED_MODELS 中的键 vocab_size: 32128 max_context_length: 2048 padding_index: 320003.3 多节点分布式训练命令OpenELM 预训练在多个节点、每节点多 GPU 的环境下进行。训练第i个节点时按以下方式计算 rank 与 world size 并启动export CFG_FILEPATH_TO_OPENELM_MODEL_CONFIGURATION_FILE export RANKNODE_ID * NUM_GPUS_PER_NODE export WORLD_SIZENUM_NODES * NUM_GPUS_PER_NODE corenet-train --common.config-file $CFG_FILE --ddp.rank $RANK --ddp.world-size $WORLD_SIZE --ddp.dist-url tcp://IP_OF_NODE0:FREEPORT各节点具体使用的 GPU 数与节点数可参考 pretraining_configs/ 下各配置文件中的注释。3.4 预训练检查点文档提供了两类检查点纯模型权重检查点仅模型权重适合评估或继续微调文件命名为checkpoint_epoch_0_iter_{NNNNN}.pt覆盖 50k / 100k / 150k / 200k / 250k / 300k / 330k / 335k / 340k / 345k / 350k 等迭代节点另有checkpoint_average.pt最后 5 个检查点的平均权重与training_logs.txt训练日志完整训练检查点包含模型与优化器状态可用于恢复训练文件命名为training_checkpoint_epoch_0_iter_{NNNNN}.pt另有training_checkpoint_last.pt训练结束时的完整状态。上述检查点均托管在 Apple 官方模型资源站点docs-assets.developer.apple.com可按照.../openelm/pretrained/{270M|450M|1.1B|3B}/目录结构与上述命名模式定位对应文件。结合配置文件中的save_interval_freq: 5000、save_all_checkpoints: true与auto_resume: true可知训练过程每 5000 步保存检查点并支持自动恢复。四、指令微调基于 Alignment Handbook 的 DPOOpenELM 的指令微调使用 Alignment Handbook 库在UltraFeedback 偏好数据集上通过DPODirect Preference Optimization完成。4.1 操作步骤# 进入 CoreNet 仓库目录 cd /path/to/corenet # 克隆并固定 Alignment Handbook 版本70769f9 为 2024-04-11 的 main 分支 git clone https://github.com/huggingface/alignment-handbook.git hf-align cd hf-align git checkout 70769f9 cd .. # 安装依赖 pip install -e ./hf-align # 将 DPO recipe 复制到 Alignment Handbook 的 recipes 目录 cp projects/openelm/instruction_tuning/openelm-instruct.yaml hf-align/recipes/ # 准备模型、tokenizer 与输出目录 ckpt_diryour_converted_OpenELM_hf_model local_tokenizer_diryour_downloaded_Llama-2-7b-hf-tokenizer dpo_ckpt_diryour_output_checkpoint_dir # 依据论文设置 lr、epochs、loss_type见下表例如 270M 模型 ep5 lr2e-5 loss_typehinge accelerate launch --config_file hf-align/recipes/accelerate_configs/deepspeed_zero3.yaml \ hf-align/scripts/run_dpo.py hf-align/recipes/openelm-instruct.yaml \ --trust_remote_codetrue \ --model_name_or_path${ckpt_dir} \ --tokenizer_name_or_path${local_tokenizer_dir} \ --output_dir${dpo_ckpt_dir} \ --num_train_epochs$ep \ --learning_rate$lr \ --loss_type$loss_type训练结果输出在${dpo_ckpt_dir}/all_results.json。4.2 各规模模型的指令微调超参数超参数270M450M1.1B3B训练 epochs58510学习率2e-53e-55e-51e-4损失函数hingehingesigmoidhinge配套的 openelm-instruct.yaml 给出了完整的 DPO recipe 配置chat_template定义了基于|user|/|system|/|assistant|标记的对话格式数据侧加载csarron/argilla-ultrafeedback-binarized-preferences-cleaned数据集训练侧使用adamw_torch优化器、余弦学习率调度warmup_ratio: 0.1、beta: 0.01、最大长度 1024prompt 512、梯度检查点开启并设置save_strategy: steps、save_steps: 100与eval_steps: 100。五、参数高效微调PEFTLoRA 与 DoRAOpenELM 的 PEFT 实验遵循LLM AdaptersarXiv 2304.01933的评估设置在 8 个常识推理数据集上联合微调训练集规模约 17 万条即 commonsense_170k评估时采用log-likelihood对数似然而非正则解析来确定模型输出。5.1 环境搭建为保证与 LLM Adapters 的评估一致性需要安装其辅助函数cd /path/to/corenet # 安装 LM Evaluation Harness固定到指定 commit git clone https://github.com/EleutherAI/lm-evaluation-harness.git cd lm-evaluation-harness git checkout 3196e907fa195b684470a913c7235ed7f08a4383 python3 -m pip install -e . -c ../requirements.txt cd .. # 安装 LLM Adapters固定到指定 commit git clone https://github.com/AGI-Edgerunners/LLM-Adapters.git cd LLM-Adapters git checkout 816657208af4db747803f87ba40a4c71383fed7a touch __init__.py python3 -m pip install -r requirements.txt -c ../requirements.txt cd .. # 安装 HuggingFace 相关依赖固定版本 python3 -m pip install --upgrade \ transformers4.36.2 \ datasets2.19.0 \ accelerate0.29.3 \ sentencepiece0.2.0 \ -c requirements.txt与预训练相同这里同样使用 LLaMA v1/v2 的 SentencePiece tokenizer。5.2 LoRA 微调训练对 270M 模型执行 LoRA 微调的命令如下CFG_FILEprojects/openelm/peft_configs/openelm_lora_270M.yaml WTS_FILEhttps://docs-assets.developer.apple.com/ml-research/models/corenet/v0.1.0/openelm/pretrained/270M/checkpoint_average.pt TOKENIZER_FILEPATH_TO_TOKENIZER_FILE DATASET_FILEPATH_TO_COMMONSENSE_170K corenet-train --common.config-file $CFG_FILE \ --model.language-modeling.pretrained $WTS_FILE \ --text-tokenizer.sentence-piece.model-path $TOKENIZER_FILE \ --dataset.language-modeling.commonsense-170k.path $DATASET_FILE其中 commonsense_170k 数据集可从 LLM Adapters 的ft-training_set/commonsense_170k.json获取。若要改用 DoRA只需将配置中的use_dora置为 True。openelm_lora_270M.yaml 展示了 LoRA 适配器的完整定义核心机制包括适配目标通过正则表达式将 LoRA 挂载到token_embeddingembedding 类型、out_proj、qkv_proj与proj_\dlinear 类型四类模块LoRA 超参数r: 32、lora_alpha: 32、lora_dropout: 0.1、init_lora_weights: true并支持use_rslora与use_dora开关权重加载策略rename_scopes_map将预训练权重中的token_embeddings.weight、qkv_proj.weight、out_proj.weight、proj_\d.weight映射到base_layer.weight适配器包装后的基座层ignore_missing_scopes: .*lora.*允许加载不含 LoRA 参数的预训练权重freeze_modules: [.*base_layer.*, .*norm.*]冻结基座层与归一化层仅训练适配器训练设置accum_freq: 2、train_batch_size0: 8、max_iterations: 4375对应 3 个 epoch、warmup_iterations: 1000、max_lr: 3e-4、weight_decay: 0。5.3 评估使用corenet-eval-llmadapters入口评估 LoRA 模型CFG_FILEprojects/openelm/peft_configs/openelm_lora_270M_eval.yaml WTS_FILEhttps://docs-assets.developer.apple.com/ml-research/models/corenet/v0.1.0/openelm/peft/openelm_lora_270M.pt TOKENIZER_FILEPATH_TO_TOKENIZER_FILE corenet-eval-llmadapters --common.config-file $CFG_FILE \ --model.language-modeling.pretrained $WTS_FILE \ --text-tokenizer.sentence-piece.model-path $TOKENIZER_FILEopenelm_lora_270M_eval.yaml 中设置了lm_eval_wrapper.add_sot_token: true与llmadapters_evaluation.multiple_choice: true其中数据集路径由llmadapters-evaluation.dataset-dir参数控制默认值通常适用。文档给出的 270M LoRA 模型在 8 个常识推理基准上的预期结果boolqpiqasiqahellaswagwinograndearc-easyarc-challengeobqa62.1450.0542.0224.8449.8826.6024.5728.00评估其他预训练模型时修改配置中的 backbonemodel_name即可评估 DoRA 模型同样只需将use_dora置为 True。5.4 PEFT 权重发布文档同时发布了各规模模型的 LoRA 与 DoRA 适配器权重托管于 Apple 官方资源站点路径模式为.../openelm/peft/openelm_{lora|dora}_{270M|450M|1.1B|3B}.pt可直接用于评估或部署无需重新微调。六、MLX 转换与 Apple Silicon 推理mlx_examples/open_elm/ 提供了 OpenELM 的MLX 移植MLX 是专为 Apple Silicon 优化的深度学习框架。该目录依赖 mlx_examples/requirements.txt 中的 MLX 依赖。转换 PyTorch/CoreNet 检查点为 MLX 格式支持 fp16/bf16 与 4-bit 量化量化组大小 32/64PYTHONPATH. python3 mlx_examples/open_elm/convert.py \ --input-checkpoint PyTorch/CoreNet checkpoint \ --config-yaml CoreNet training configuration YAML \ --tokenizer-path path to tokenizer.model \ --dtypefloat16 \ --output-dir output dir # 增加 --quantize 标志即可输出 4-bit 量化检查点转换产物为*.npz权重与config.json配置文件。推理示例PYTHONPATH. python3 mlx_examples/open_elm/inference.py \ --model-dir MLX model directory \ --prompt Once upon a time in a land far away \ --max-tokens1024注意MLX 检查点不含 tokenizer 模型文件需将 Meta LLaMA2 的tokenizer.model放入模型目录。OpenELM-3B 在 MLX 上无论 16-bit 还是量化推理都应使用 BFloat16因为它需要的激活范围大于其他规模。七、偏置、风险与限制OpenELM 系列模型以赋能开放研究社区为目标发布基于公开数据集训练不附带任何安全保证。模型可能对用户提示产生不准确、有害、有偏见或不当的输出。因此用户与开发者在使用前必须进行充分的安全测试并根据自身需求实现合适的过滤与防护机制。八、引用若研究工作受益于 OpenELM建议按以下 BibTeX 引用article{mehta2024openelm, title{OpenELM: An Efficient Language Model Family with Open Training and Inference Framework}, author {Sachin Mehta and Mohammad Hossein Sekhavat and Qingqing Cao and Maxwell Horton and Yanzi Jin and Chenfan Sun and Iman Mirzadeh and Mahyar Najibi and Dmitry Belenko and Peter Zatloukal and Mohammad Rastegari}, year{2024}, eprint{2404.14619}, archivePrefix{arXiv}, primaryClass{cs.CL} }结语完整使用链路回顾从仓库文档与源码可以梳理出 OpenELM 在 CoreNet 中的完整生命周期① 下载 LLaMA tokenizer 并组织公共语料RefinedWeb / PILE / RedPajama / Dolma v1.6→ ② 参照 pretraining_configs/ 中四档规模的 YAML 配置用corenet-train配合 DDP rank/world-size 参数做多节点预训练 → ③ 用 Alignment Handbook 的 DPO recipe 做指令微调或用corenet-train LoRA/DoRA 配置做参数高效微调 → ④ 用corenet-eval-llmadapters在 8 个常识推理基准上评估 → ⑤ 通过 MLX convert 脚本部署到 Apple Silicon 设备。每一环节都能在 projects/openelm/ 下找到对应的配置与文档在 general_gpt.py 中找到模型结构的源码实现便于二次研究与复现。赞分享深度学习计算机视觉NLP多模态模型训练大模型【免费下载链接】corenetCoreNet: A library for training deep neural networks项目地址https://gitcode.com/GitHub_Trending/co/corenet点击查看免费下载相关推荐LLM-Adapters: 大型语言模型参数高效微调的适配器家族LLM Adapters: 大型语言模型参数高效微调的适配器家族 项目介绍 LLM Adapters 是一个专为大型语言模型设计的易于使用的框架它集成了多种适PGlite Electric Sync 插件实战用 electric-sql/pglite-sync 将 Postgres 数据实时同步进浏览器PGlite Electric Sync 插件实战用 electric sql/pglite sync 将 Postgres 数据实时同步进浏览器 PGli深度学习计算机视觉NLP多模态模型训练大模型联想拯救者BIOS隐藏功能一键解锁释放30%性能潜力的终极指南联想拯救者BIOS隐藏功能一键解锁释放30%性能潜力的终极指南 你是否曾感觉你的联想拯救者笔记本性能被限制游戏卡顿、黑苹果安装失败、虚拟机运行缓慢——这些问固件上一篇智慧法院设备驱动开发终极指南从Windows驱动程序到智能司法系统下一篇如何参与Bluetooth-jammer-esp32开源项目开发社区贡献完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考