Update: Please refer to BrainGPT-7B-v0.2 for a model consistent with the paper -
https://www.nature.com/articles/s41562-024-02046-9 (Fig. 5).
We fine-tuned Llama2-7b-chat using LoRA. We used a batch size of 1 and a chunk size of 2048. Training involved the use of the AdamW optimizer with a learning rate of 2e-5 and gradient accumulation steps set at 8. A single training epoch was performed, along with a warm-up step of 0.03 and a weight decay rate of 0.001. The learning rate was controlled using a cosine learning rate scheduler. LoRA adapters, characterized by a rank of 8, an alpha value of 32, and a dropout rate of 0.1, were applied after all self-attention blocks and fully-connected layers. This results in total 17,891,328 trainable parameters, roughly 0.26% of the entire parameters of the base model. To optimize training performance, bf16 mixed precision training and data parallelism were employed. We used 4 Nvidia A100 (80GB) GPUs hosted on the Microsoft Azure platform. An epoch of training takes roughly 42 GPU hours.
The current version of BrainGPT was fine-tuned on Llama-2-7b-chat-hf with LoRA,
adapter_model.bin contains the LoRA adapter weights. To load and use the full model, you need to be granted access to Llama-2-7b-chat-hf via
https://huggingface.co/meta-llama/Llama-2-7b-chat-hf.
1from peft import PeftModel, PeftConfig
2from transformers import AutoModelForCausalLM
3from transformers import AutoTokenizer
4
5config = PeftConfig.from_pretrained("BrainGPT/BrainGPT-7B-v0.1")
6
7# Load model
8model = AutoModelForCausalLM.from_pretrained(config.base_model_name_or_path)
9model = PeftModel.from_pretrained(model, "BrainGPT/BrainGPT-7B-v0.1")
10
11# Load tokenizer
12tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
13