010-61934861

首页 > Model Zoo > Llama3-8B-Instruct (训练)
Llama3-8B-Instruct (训练)
Llama3,训练
2025-04-08 | 3113人看过
模型信息

Llama3-8B-Instruct 是由 Meta 公司于 2024 年 4 月发布的 Llama 3 系列模型之一,是一款高效语言模型。它在保持较小规模(80 亿参数)的同时,通过优化架构和训练方法,实现了接近更大模型的性能。

资源准备


1. 1台REX1032服务器(卡满插且卡均正常)。

2. 清微docker镜像:TX8100_REX1032_Release_v4.3.8.tar.gz。

3. Conda环境:opt.miniconda.tar.gz。

4. 工具链xla_tx8软件包:xla_1.3.0.tar.gz。

5. 模型、数据资源包:xla_modeldata.tar.gz。

    xla_1.3.0.tar.gz解压后,示例目录如下:

         ver_pkg为xla_tx8版本目录。

         install_env.sh为部署环境的执行文件;

         fine_script为微调文件夹,其中finetuning_onboard.sh为运行微调文件。

    xla_modeldata.tar.gz解压后,示例目录如下:

         dataset为微调数据文件目录。

        Meta-Llama-3-8B-Instruct为模型权重文件目录。

注意:

1. 需要将压缩包xla_1.3.0.tar.gz和xla_modeldata.tar.gz放置在同一目录下进行解压操作。

2. xla_1.3.0.tar.gz中xxx代表具体的版本发布日期,在本文档中指代0307。

conda环境准备


1. 使用终端工具ssh登录REX1032服务器

   执行如下命令行:

# HOST_IP为REX1032服务器IP,用户需替换为实际IP地址数值
ssh -X user@HOST_IP

2. 解压压缩包

   将opt.miniconda.tar.gz,TX8100_REX1032_Release_v4.3.8.tar.gz放至登录用户指定目录下,如用户根目录(~/,下文中绝对路径/login_home),并解压:

cd ~/
tar -xvf opt.miniconda.tar.gz

解压后得到miniconda目录。

解压docker镜像压缩包, 执行如下命令行:

sudo tar -zxf TX8100_REX1032_Release_v4.3.8.tar.gz

解压得到文件:

TX8100_REX1032_Release_v4.3.8.tar
Tsm_driver_4.3.8_x86_64_installer.run

3) 加载docker镜像

   执行如下命令行:

sudo docker load -i TX8100_REX1032_Release_v4.3.8.tar

Load完毕可以使用如下命令查看镜像是否load成功:

sudo docker images

4) 创建容器

   执行如下命令创建容器:

sudo docker run -d --name txnn --ipc=host --privileged -v /dev:/dev -v /tmp:/tmp -v /lib/modules:/lib/modules -v /sys:
/sys -v /login_home/xxx/miniconda/:/opt/miniconda -v /login_home/xxx/txnn_convert:/login_home/xxx/txnn_convert -v
/login_home/xxx/txnn_infer/:/login_home/xxx/txnn_infer/ -w /login_home/xxx/txnn_infer hub.tsingmicro.com/tx8/v4.3.8

注意:章节资源准备中的压缩包均需要放在/login_home/xxx 目录下,挂载至容器内。

5) 配置环境变量

   在容器内export 环境变量

export PATH="/opt/miniconda/bin:$PATH"
 
# 首次设置需要用source进入conda,后面切换可以直接 conda activate tx8_base
source activate tx8_xla_llama3

此时环境变量即可生效,不同conda环境对应说明如下:

  • tx8_base:基础环境;

  • tx8_xla_llama3:用于模型训练;

  • tx8_txnn:用于模型推理;

训练环境部署


训练环境部署

1. 解压压缩包

将xla_1.3.0.tar.gz放至登录用户指定目录下,如用户home目录(~/,下文中的绝对路径/login_home),并解压:

cd ~/
tar -xvf xla_1.3.0.tar.gz

解压后得到xla_1.3.0目录。

2 进入docker容器

执行如下命令进入容器:

sudo docker exec -it xla /bin/bash
export PATH="/opt/miniconda/bin:$PATH"
source activate tx8_xla_llama3

3. 执行环境部署脚本

执行install_env.sh脚本需要指定存放路径作为参数,例如存放在用户home路径下,示例如下

cd $HOME_PATH/xla_1.3.0/
bash install_env.sh

正确安装完成后会打印log:

image.png

4. 在当前目录,执行source /root/.bashrc,使得配置生效

source /root/.bashrc

单机启动Device

用户在Host端部署执行环境,执行启动Device

拉起TX8 Device并等待ready,新开会话窗口2,执行如下命令:

./Tsm_driver_4.3.8_x86_64_installer.run install silicon

双机启动Device

双机环境启卡步骤如下,分别登录两个服务器,新打开两个会话窗口,分别执行以下操作:

1) 登录后切换至root用户

sudo su

2) 使环境变量生效

source /etc/profile

3) 主从机配置

master机器执行

export TSINGMICRO_MASTER_HOST=master;

slave机器执行

export TSINGMICRO_MASTER_HOST=slave;

普通单机启动请不要设置这个环境变量。


4) 把Tsm_driver_4.3.8_x86_64_installer.run拷到这双机每台机器上。

docker cp “xla”:/lib/firmware/tx8/firmware/Tsm_driver_4.3.8_x86_64_installer.run  ./


5) 启动Device

./Tsm_driver_4.3.8_x86_64_installer.run install

6) 在/lib/firmware/tx8/bin下找到一个txbm_host_config.json,修改如图一项,保证数量和ip准确(且保证master ip在第一个)。并把该文件拷到双机每台机器的/lib/firmware/tx8/bin下。


image.png

再修改global_card_x和global_card_y数量为8/8或者4/16(按连线来分辨卡数),如下图所示,左边这种连线方式,global_card_x和global_card_y数量为8/8,右边这种连线方式global_card_x和global_card_y数量为4/16。

image.png

7) 两台机器均启动Device

./Tsm_driver_4.3.8_x86_64_installer.run run silicon

8) 可以使用tsm_smi -n工具查看phy_id是否符合预期。

微调



fine_script目录下提供有脚本:finetuning_onboard.sh,供用户在docker内执行,体验微调功能。

微调运行示例

示例1:在REX1032服务器32卡上,另开会话窗口3,进入之前创建的docker容器,执行微调:

sudo docker exec -it xla /bin/bash
export PATH="/opt/miniconda/bin:$PATH"
source activate tx8_xla_llama3
cd $HOME_PATH/xla_1.3.0/fine_script
bash finetuning_onboard.sh --dataset-path $HOME_PATH/xla_modeldata/dataset/total_trainset_new.txt --model-path  $HOME_PATH/xla_modeldata/Meta-Llama-3-8B-Instruct/

在正式开始微调前,需要等待加载、编译完成,这一过程较为耗时,32卡需要等待2h左右。正常微调后会打印类似如下log:

image.png

微调结束后会有如下log:

image.png

训推一体模型格式转换示例

示例2:在REX1032服务器32卡上

假设某次微调完成,其工作目录为:

$HOME_PATH/xla_1.3.0/fine_script/32cards_32b_1024s_p0_fa_True_dp32_tp1/workdir/20250310_105047,另开会话窗口4,进入之前创建的docker容器,进入$HOME_PATH/xla_1.3.0/fine_script目录,创建一个目录用于存放转换后的模型文件,

sudo docker exec -it xla /bin/bash
export PATH="/opt/miniconda/bin:$PATH"
source activate tx8_xla_llama3
cd $HOME_PATH/xla_1.3.0/fine_script
mkdir $HOME_PATH/save_merged_model
export BASE_MODEL_DIR="$HOME_PATH/xla_modeldata/Meta-Llama-3-8B-Instruct/"
export FINETUNE_MODEL_DIR="$HOME_PATH/xla_1.3.0/fine_script/32cards_32b_1024s_p0_fa_True_dp32_tp1/workdir/20250310_105047/checkpoint/tmp_consolidated.pth"
export MERGED_MODEL_DIR="$HOME_PATH/save_merged_model"

执行模型格式转换,生成Hugging Face模型格式文件在MERGED_MODEL_DIR环境变量指定的目录下,可供推理直接使用:

python convert_llama_to_hf.py

断点续训示例

示例3:在REX1032服务器32卡上假设某次微调中断,其工作目录为:

$HOME_PATH/xla_1.3.0/fine_script/32cards_32b_1024s_p0_fa_True_dp32_tp1/workdir/20250310_105047

另开会话窗口5,进入之前创建的docker容器,执行微调:

sudo docker exec -it xla /bin/bash
export PATH="/opt/miniconda/bin:$PATH"
source activate tx8_xla_llama3
cd $HOME_PATH/xla_1.3.0/fine_script
sh finetuning_onboard.sh --skip-compile --work-dir $HOME_PATH/xla_1.3.0/fine_script/32cards_32b_1024s_p0_fa_True_dp32_tp1/workdir/20250310_105047 -dataset-path  $HOME_PATH/xla_modeldata/dataset/total_trainset_new.txt --model-path $HOME_PATH/xla_modeldata/Meta-Llama-3-8B-Instruct/

正常断点续训后会打印关键字:resume_from,断点续训结束后会有如下log(和正常微调后一样):

image.png

双机微调示例

示例4:分别登录两个服务器,分别打开两个会话窗口,准备执行微调脚本:

在主机(master)上执行:

sudo docker exec -it xla /bin/bash
export PATH="/opt/miniconda/bin:$PATH"
source activate tx8_xla_llama3
cd $HOME_PATH/xla_1.3.0/two_node_script
bash finetuning_onboard.sh --master_ip $MASTER_IP --pjrt_group_rank 1 --dataset_path $HOME_PATH /xla_modeldata/dataset/total_trainset_new.txt --model_path $HOME_PATH /xla_modeldata/Meta-Llama-3-8B-Instruct

在从机(slave)上执行:

sudo docker exec -it xla /bin/bash
export PATH="/opt/miniconda/bin:$PATH"
source activate tx8_xla_llama3
cd $HOME_PATH/xla_1.3.0/two_node_script
bash finetuning_onboard.sh --master_ip $MASTER_IP --pjrt_group_rank 2 --dataset_path $HOME_PATH /xla_modeldata/dataset/total_trainset_new.txt --model_path $HOME_PATH/xla_modeldata/Meta-Llama-3-8B-Instruct

在正式开始微调前,需要等待加载、编译完成,这一过程较为耗时,32卡需要等待2h左右。

正常微调后会打印类似如下log

image.png

微调结束后会有如下log

image.png

微调脚本参数

finetuning_onboard.sh脚本内会调用真正执行微调的python脚本,该python脚本支持参数修改。被调用的.py脚本参数如下,用户可根据需要修改参数后执行。

参数名称必需/可选 参数类型默认值说明

--model_name_or_path

可选

string

None

指定模型文件路径

--dataset_name

可选

string

None

指定数据集文件

--skip_padding_data

可选

bool

None

Golden_gpu脚本运行的response回答文件路径,用作相似度对比。

--num_train_epochs

可选

int

1

指定训练的epoch数值。

--per_device_train_batch_size

可选

int

1

指定每个device的batchsize,当前只支持1

--do_train

可选

bool

None

指定保存checkpoint的路径

--output_dir

可选

string

0,1,2,3

当前脚本运行所选用的卡数(..表示区间)。

支持以下场景配置:

1. 单卡单batch场景,配置0;

2. 四卡单batch场景,有以下8种配置组合:0..3/4..7/8..11/…/28..31。

N batch场景:上述8种配置组合可以同时任选N组,N最大为8。

--overwrite_output_dir

可选

bool

False

指定当前脚本需要运行的batch数

,最大支持8。

注:

1. 需要和traversal-flag参数搭配使用;

2. 支持列表输入,eg:-bs [1,5,6];

3. 与--card-num参数同时使用时,以batch-size为准。

--cache_dir

可选

string

None

指定中间缓存路径,下载数据集或者模型临时存放路径。

--block_size

可选

int

None

指定模型的sequence length长度值;必须设置(如128)

--torch_dtype

可选

string

None

设置模型、数据的数据类型,支持auto,bfloat16,float16,float32,auto为继承模型权重数据类型

--dataloader_drop_last

可选

string

False

设置最后一轮数据在不够的情况下是否需要丢掉

--learning_rate

可选

double

5e-5

设置学习率

--save_strategy

可选

string

steps

设置保存checkpoint策略;可选值:no、steps、epoch;对应不保存或者按steps保存或者按epoch保存

--optim

可选

string

adamw_torch

设置优化器,当前支持adamw_torch,adamw_torch_tx8_fuse

--weight_decay

可选

double

0

设置weight_decay参数值

--adam_beta2

可选

double

0.999

设置adam_beta2参数值

--lr_scheduler_type

可选

string

Linear

设置lr_scheduler_type参数值

--warmup_ratio可选

double

0.0

设置warmup_ratio参数值

--spmd_dcn_parallelism

可选

int

1

设置数据并行,只支持设置为1,暂不支持其他值

--spmd_2d_sharding

可选

int

0

设置2D sharding,只支持设置为0,1,暂不支持其他值

--remove_unused_columns

可选

bool

True

删除数据集中模型训练用不到的列

--optim_init

可选

bool

False

初始化优化器,默认不开启

--peft_lora

可选

bool

False

指定是否做LoRA训练,设置后做LoRA,不设置做全量训练

--fsdp_dp_sharding

可选

Int

1

数据并行数

--megatrion_tp_sharding

可选

Int

1

张量并行数

--fsdp

可选

str

None

并行切分模式,仅支持full_shared

--fsdp_config

可选

str

None

并行配置文件,固定 路径./fsdp_xla_config.json

--use_flash_attn

可选

Bool

False

是否启动flash attension

版本说明


2025/4/1 第一版

2025/4/8 升级版本到1.3.0

发表评论
全部评论(0)
    0.106689s