首页 > 其他分享 >NeMo训练llama2_7b(不用NeMo-Framework-Launcher)

NeMo训练llama2_7b(不用NeMo-Framework-Launcher)

时间:2024-06-06 20:28:54浏览次数:13  
标签:trainer optim 7b Launcher NeMo -- manager exp model

@TOC

本文介绍了NeMo如何训练llama2_7b模型

1.参考链接

2.创建容器

docker run --gpus all --shm-size=32g -ti -e NVIDIA_VISIBLE_DEVICES=all \
        --privileged --net=host -v $PWD:/home \
        -w /home --name NeMo \
        nvcr.io/nvidia/nemo:24.05 /bin/bash
mkdir -p /home/NeMo

3.数据转换

cd /home/NeMo        
python /opt/NeMo/scripts/nlp_language_modeling/preprocess_data_for_megatron.py \
        --input=/home/autotrain/datasets/timdettmers/openassistant-guanaco/openassistant_best_replies_train.jsonl \
        --json-keys=text \
        --tokenizer-library=sentencepiece \
        --tokenizer-model=/home/ModelLink/llama-2-7b-hf/tokenizer.model \
        --output-prefix=gpt_training_data \
        --append-eod \
        --workers=32

4.从零开始训练

python /opt/NeMo/examples/nlp/language_modeling/megatron_gpt_pretraining.py  \
        --config-path=/opt/NeMo-Framework-Launcher/launcher_scripts/conf/training/llama \
        --config-name=llama2_7b \
        trainer.devices=8 \
        trainer.num_nodes=1 \
        trainer.max_epochs=null \
        trainer.max_steps=300000 \
        trainer.val_check_interval=300 \
        trainer.log_every_n_steps=50 \
        trainer.limit_val_batches=50 \
        trainer.limit_test_batches=50 \
        trainer.accumulate_grad_batches=1 \
        trainer.precision=bf16 \
        model.micro_batch_size=1 \
        model.global_batch_size=4 \
        model.tensor_model_parallel_size=4 \
        model.pipeline_model_parallel_size=2 \
        model.max_position_embeddings=1024 \
        model.encoder_seq_length=1024 \
        model.data.seq_length=1024 \
        model.tokenizer.library=sentencepiece \
        model.tokenizer.model=/home/ModelLink/llama-2-7b-hf/tokenizer.model \
        model.data.data_prefix=[1.0,gpt_training_data_text_document] \
        model.data.num_workers=0 \
        model.data.splits_string=\'980,10,10\' \
        exp_manager.resume_if_exists=True \
        exp_manager.resume_ignore_no_checkpoint=True \
        exp_manager.create_checkpoint_callback=True \
        exp_manager.checkpoint_callback_params.monitor=val_loss \
        exp_manager.checkpoint_callback_params.save_top_k=3 \
        exp_manager.checkpoint_callback_params.mode=min \
        exp_manager.checkpoint_callback_params.always_save_nemo=False \
        exp_manager.explicit_log_dir="./result" \
        exp_manager.wandb_logger_kwargs.name="llama2_7b" \
        model.optim.name=fused_adam \
        model.optim.lr=6e-4 \
        model.optim.betas=[0.9,0.95] \
        model.optim.weight_decay=0.1 \
        model.optim.sched.name=CosineAnnealing \
        model.optim.sched.warmup_steps=750 \
        model.optim.sched.constant_steps=80000 \
        model.optim.sched.min_lr=6e-5 \
        ~model.optim.bucket_cap_mb \
        ~model.optim.overlap_grad_sync \
        ~model.optim.overlap_param_sync \
        ~model.optim.contiguous_grad_buffer \
        ~model.optim.contiguous_param_buffer

5.加载预训练模型,继续训练

A.模型转换

cd /opt/NeMo
python /opt/NeMo/scripts/checkpoint_converters/convert_llama_hf_to_nemo.py \
        --input_name_or_path /home/ModelLink/llama-2-7b-hf/ \
        --output_path llama-2-7b-hf-nemo 

B.开始训练

python /opt/NeMo/examples/nlp/language_modeling/megatron_gpt_continue_training.py  \
        --config-path=/opt/NeMo-Framework-Launcher/launcher_scripts/conf/training/llama \
        --config-name=llama2_7b \
        +restore_from_path="./llama-2-7b-hf-nemo" \
        trainer.devices=8 \
        trainer.num_nodes=1 \
        trainer.max_epochs=null \
        trainer.max_steps=300000 \
        trainer.val_check_interval=300 \
        trainer.log_every_n_steps=50 \
        trainer.limit_val_batches=50 \
        trainer.limit_test_batches=50 \
        trainer.accumulate_grad_batches=1 \
        model.micro_batch_size=1 \
        model.global_batch_size=4 \
        model.tensor_model_parallel_size=4 \
        model.pipeline_model_parallel_size=2 \
        model.max_position_embeddings=512 \
        model.encoder_seq_length=512 \
        model.data.seq_length=512 \
        model.tokenizer.library=sentencepiece \
        model.tokenizer.model=/home/ModelLink/llama-2-7b-hf/tokenizer.model \
        model.data.data_prefix=[1.0,gpt_training_data_text_document] \
        model.data.num_workers=0 \
        model.megatron_amp_O2=false \
        +model.seq_len_interpolation_factor=1 \
        model.data.splits_string=\'980,10,10\' \
        exp_manager.resume_if_exists=True \
        exp_manager.resume_ignore_no_checkpoint=True \
        exp_manager.create_checkpoint_callback=True \
        exp_manager.checkpoint_callback_params.monitor=val_loss \
        exp_manager.checkpoint_callback_params.save_top_k=3 \
        exp_manager.checkpoint_callback_params.mode=min \
        exp_manager.checkpoint_callback_params.always_save_nemo=False \
        exp_manager.explicit_log_dir="./result" \
        exp_manager.wandb_logger_kwargs.name="llama2_7b" \
        model.optim.name=fused_adam \
        run.results_dir="./result" \
        model.optim.lr=6e-4 \
        model.optim.betas=[0.9,0.95] \
        model.optim.weight_decay=0.1 \
        model.optim.sched.name=CosineAnnealing \
        model.optim.sched.warmup_steps=750 \
        model.optim.sched.constant_steps=80000 \
        model.optim.sched.min_lr=6e-5 \
        ~model.optim.bucket_cap_mb \
        ~model.optim.overlap_grad_sync \
        ~model.optim.overlap_param_sync \
        ~model.optim.contiguous_grad_buffer \
        ~model.optim.contiguous_param_buffer

C.输出

  | Name  | Type     | Params
-----------------------------------
0 | model | GPTModel | 842 M
-----------------------------------
842 M     Trainable params
0         Non-trainable params
842 M     Total params
3,370.648 Total estimated model params size (MB)
Epoch 0: :   0%|               | 22/300000 [00:32<123:59:27, reduced_train_loss=1.400, global_step=21.00, consumed_samples=88.00, train_step_timing in s=1.470

6.其它命令[暂时不用]

mkdir -p unpacked_nemo_file
tar -xvf  llama-2-7b-hf-nemo -C unpacked_nemo_file

* convert your legacy checkpoint to TP1 PP1 format
python /opt/NeMo/examples/nlp/language_modeling/megatron_change_num_partitions.py \
        --model_file="./llama-2-7b-hf-nemo" \
        --target_file="./output/llama-2-7b-hf-nemo_mp" \
        --target_tensor_model_parallel_size 4 \
        --target_pipeline_model_parallel_size 2  \
        --hparams_file="/opt/NeMo-Framework-Launcher/launcher_scripts/conf/training/llama/llama2_7b.yaml" 
        
mkdir -p unpacked_nemo_file_mp1tp1
tar -xvf ./llama-2-7b-hf-nemo -C unpacked_nemo_file_mp1tp1

python /opt/NeMo/scripts/checkpoint_converters/convert_gpt_nemo_to_mcore.py \
         --input_name_or_path ./unpacked_nemo_file_mp1tp1 \
         --output_path ./output.nemo --cpu-only

标签:trainer,optim,7b,Launcher,NeMo,--,manager,exp,model
From: https://blog.csdn.net/m0_61864577/article/details/139454941

相关文章

  • CF1007B 题解
    CF1007B思路显然题目要求计数\(u\midA,v\midB,w\midC\)。\(O(n\sqrtn)\)预处理出每个数的所有因数,记为集合\(p_i\)。容斥,记集合\(a,b,c,ab,ac,bc,all\)为\(p_A,p_B,p_C,p_A\capp_B,p_A\capp_A,p_B\capp_C,p_A\capp_B\capp_C\)。可以用bitset维护交集。首先加......
  • 【文末附gpt升级秘笈】关于论文“7B?13B?175B?解读大模型的参数的论文
    论文大纲引言简要介绍大模型(深度学习模型)的概念及其在各个领域的应用。阐述参数(Parameters)在大模型中的重要性,以及它们如何影响模型的性能。引出主题:探讨7B、13B、175B等参数规模的大模型。第一部分:大模型的参数规模定义“B”代表的意义(Billion/十亿)。解释7B、13B、175B等......
  • Android 10.0 Launcher3禁用widget微件功能实现
    1.前言在10.0的系统rom定制化开发中,在一些Launcher3的定制化功能中,有些产品禁用appwidget微件功能,要求Launcher去掉加载widget微件功能,接下来具体分析下widget微件的加载流程2.Launcher3禁用widget微件功能实现的核心类packages/apps/Launcher3/src/com/android/launcher3/......
  • Android桌面Launcher源码浅析
    在Android启动过程-万字长文(Android14)中介绍了Android系统的启动过程,本篇文章将继续介绍桌面应用Launcher。一、Launcher介绍在Android启动过程-万字长文(Android14)中提到Launcher是Android系统启动后,由SystemServerActivityManagerService(AMS)加载的第一个应用程序L......
  • 「杂题乱刷」CF1977B
    题目链接CF1977B(luogu)CF1977B(codeforces)解题思路考虑通用做法。我们发现如果直接用二进制来表示的话这个数会只包含\(0,1\)这两个数字。发现这时阻碍我们构造的是连续的数字\(1\)。考虑消除连续的数字\(1\)。容易发现连续的数字\(1\)可以转化成将这一段最高位......
  • Vue3.4+版本中的 defineModel 宏的用法示例
    关于defineModel,Vue官方给出了较为详细的解释,具体请看文档说明下面是整理出的一个简易示例:子元素代码://Comp.vue<scriptsetup>constmsg=defineModel('msg',{type:String,default:''});constscore=defineModel('score',{type:Number,default:0})......
  • 快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调
    目录1.选用工程:lit-llama2.下载工程3.安装环境4.下载LLAMA-7B模型5.做模型转换6.初步测试7.为什么要进行指令微调?8.开始进行指令微调*8.1.数据准备8.2开始模型训练8.3模型测试前言:系统:ubuntu18.04显卡:A100-80G(蹭的,嘿嘿~)(本次主要记录如何快速进行大模型......
  • Settings里面切换不同Launcher的代码流程
    1.Android\packages\modules\Permission\PermissionController中的DefaultAppActivity中接收,根据packagename进行追踪路径如下:DefaultAppActivity.java--->HandheldDefaultAppFragment.java--->DefaultAppChildFragment.java:setDefaultApp()--->ManageRoleHolderState......
  • 代码革命的先锋:aiXcoder-7B模型介绍
       国内开源代码大模型4月9日aiXcoder宣布正式开源其7B模型Base版,仅仅过去一个礼拜,aiXcoder-7B在软件源代码托管服务平台GitHub上的Star数已超过2k。同时跻身HuggingFace趋势榜单TOP30,令全球开发者瞩目。    背后团队aiXcoder团队来自北京大学软件工程研究......
  • Dawn Launcher Windows快捷启动工具 Maye是一款体积小巧、简单易用的快速启动工具 Luc
    DawnLauncherWindows快捷启动工具,帮助您整理杂乱无章的桌面,分门别类管理您的桌面快捷方式,让您的桌面保持干净整洁。支持关联文件夹(实时同步文件夹内容)、快速搜索、相对路径(便携路径)、扫描本机开始菜单、本地扫描本机Appx应用列表、添加网址并一键获取网址信息。Maye是一......