模型:
HuggingFaceM4/opt-1.3b-fp16-8b-samples
这个模型是通过对 https://huggingface.co/facebook/opt-1.3b 进行训练得到的结果,只使用了8B的fp16、fp32和bf16令牌,从而可以比较这些模型在训练多模态模型时的效果。当然,它也可以用于其他任何目的,只是要注意这些模型的训练程度很低。大多数语言模型的训练通常需要约300B的令牌,而这个模型只用了8B。
这3个代码库分别是:
获取transformers:
git clone https://github.com/huggingface/transformers cd transformers
准备一个初始化的opt-1.3模型:
cat << EOT > prep-fp16.py from transformers import AutoConfig, AutoModel, AutoTokenizer import torch mname = "facebook/opt-1.3b" config = AutoConfig.from_pretrained(mname) model = AutoModel.from_config(config, torch_dtype=torch.float16) tokenizer = AutoTokenizer.from_pretrained(mname) path = "opt-1.3b-fp16" model.save_pretrained(path) tokenizer.save_pretrained(path) EOT
运行:
python prep-fp16.py
从头开始在一台8x 80GB A100节点上对realnewslike子集 https://huggingface.co/datasets/c4 进行训练:
git clone https://github.com/huggingface/transformers
cd transformers
PYTHONPATH="src" python -m torch.distributed.run \
--nproc_per_node=8 \
--nnode=1 \
--node_rank=0 \
--master_addr=127.0.0.1 \
--master_port=9901 \
examples/pytorch/language-modeling/run_clm.py \
--fp16 \
--tf32 1 \
--seed 42 \
--dataset_name c4 \
--dataset_config_name realnewslike \
--model_name_or_path opt-1.3b-fp16 \
--per_device_train_batch_size 6 \
--per_device_eval_batch_size 6 \
--gradient_accumulation_steps 2 \
--do_train \
--logging_steps 5 \
--save_steps 1000 \
--eval_steps 1000 \
--weight_decay 0.1 \
--num_train_epochs 1 \
--adam_beta1 0.9 \
--adam_beta2 0.95 \
--learning_rate 0.0002 \
--lr_scheduler_type linear \
--warmup_steps 1000 \
--report_to tensorboard \
--output_dir saved \
--logging_dir tb \
--log_level warning \
--preprocessing_num_workers 32
训练过程大约耗时40小时。