模型:

HuggingFaceM4/opt-1.3b-bf16-8b-samples

英文

这个模型是通过从头开始训练 https://huggingface.co/facebook/opt-1.3b 的实验得出的结果,仅使用了8B个fp16、fp32和bf16的令牌,以便比较在训练多模态模型时使用这些模型的结果。但是,当然,它也可用于任何其他目的,只需注意这些模型的训练程度非常低。大多数语言模型的训练使用了约300B个令牌,而这个模型只用了8B个。

这三个仓库是:

训练过程

获取transformers:

git clone https://github.com/huggingface/transformers
cd transformers

准备一个初始化的opt-1.3模型:

cat << EOT > prep-bf16.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-bf16"

model.save_pretrained(path)
tokenizer.save_pretrained(path)
EOT

运行:

python prep-bf16.py

从头开始在一个单独的8x 80GB A100节点上对 https://huggingface.co/datasets/c4 的realnewslike子集进行训练:

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 \
    --bf16 \
    --tf32 1 \
    --seed 42 \
    --dataset_name c4 \
    --dataset_config_name realnewslike \
    --model_name_or_path opt-1.3b-bf16 \
    --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小时。