TigerResearch / TigerBot

TigerBot: A multi-language multi-task LLM
https://www.tigerbot.com
Apache License 2.0
2.24k stars 194 forks source link

如何在领域数据上增量预训练呢? #165

Open listwebit opened 10 months ago

listwebit commented 10 months ago

有几个问题请教一下大佬: 1.你们放出的代码是否支持多机多卡的增量预训练呢?需要怎么做呢,因为我看没有配置多个机器的地方呀?

deepspeed \
--include="localhost:0,1,2,3" \
./train_clm.py \
--deepspeed ./ds_config/ds_config_zero3.json \
--model_name_or_path TigerResearch/tigerbot-7b-base \
--dataset_name TigerResearch/dev_pretrain \
--do_train \
--output_dir ./ckpt-clm \
--overwrite_output_dir \
--preprocess_num_workers 8 \
--num_train_epochs 5 \
--learning_rate 1e-5 \
--evaluation_strategy steps \
--eval_steps 10 \
--bf16 True \
--save_strategy steps \
--save_steps 10 \
--save_total_limit 2 \
--logging_steps 10 \
--tf32 True \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2

2.70B的模型持续增量预训练,至少需要多少个机器呢? 3.有多机卡训练的教程吗

谢谢大佬的回复

i4never commented 10 months ago

我们的代码支持单机多卡,多机多卡可以参考deepspeed的文档: https://www.deepspeed.ai/getting-started/#resource-configuration-multi-node。 与单机相比,多机训练主要需要以下几个步骤:

  1. 配置机器间的互信,包括ssh pubkey认证以及hosts中机器alias的配置。如果机器起名为node0 node1 node2 确保任意两台机器间可以通过ssh nodeX直接登陆。
  2. 在每台机器上配置相同的cuda、python环境。一般通过共享硬盘及conda实现。
  3. 在所有节点上通过deepspeed launcher或torch launcher唤起训练脚本。一般在一台机器上通过脚本及pdsh实现,需要注意脚本的node rank、master port/addr等参数配置。

从我们的经验来说,一台8卡40G,1TB内存的机器足够在deep3 + offload的情况下微调70B模型。

多机多卡可以直接以“deepspeed multinode”为关键词搜索,可以找到许多较例子。