Git Product home page Git Product logo

gofa's Introduction

Generative One-For-All (GOFA)

The source code for paper GOFA: A generative one-for-all model for joint graph language modeling. The code is still under clean. Feel free to open an issue in GitHub if you encounter any problem.

Installation Guide.

First, clone the code repository and move to the code file. Then, create the python environment. We provide environment configuration:

conda env create -f environment.yml

Next, please download the pretrained checkpoint of ICAE from here. Specifically, download and put the following files llama-2-7b-chat-finetuned-icae_zeroweight_llama2.pt and mistral_7b_pretrained_icae.safetensors into directory ./cache_data/model/

Finally, clone the code of datasets we used from TAGLAS by running:

git clone https://github.com/JiaruiFeng/TAGLAS.git

Pre-training

Pre-training require large computation resource and time. If you want to explore GOFA, we recommend you to download our pre-trained checkpoints and directly run downstream fine-tuning. You can download checkpoints from here. We provide checkpoints for both Llama2 (qamag03_best_ckpt.pth) and Mistral (mistral_qamag03_best_ckpt.pth).

To run the pretraining by yourself, please first generate pretraining data using the following script.

python pretrain_data_generation.py

The above code will generate three pretrain data subset. Note that the generation process require huge memory and will last for long time. Please allocate enough resource for generation.

After data generation, run the following line to start the pretraining:

python run_gofa.py --override ./configs/pretrain_config.yaml

This code will run pretraining of the GOFA llama2 version on the first pretrain data subset. if you want to train the mistral version, run:

python run_gofa.py --override ./configs/pretrain_config.yaml base_llm mistral7b

To continue the training on next subset, check the last_epochs in the ./configs/default_config.yaml to the next batch and ckpt_path to the saved checkpoint on the last pretraining.

Instruction fine-tuning for zero-shot experiment.

To repeat the experiments of GOFA on zero-shot learning with arxiv instruction tuning, run:

python run_gofa.py --override ./configs/instruct_arxiv_config.yaml load_dir llama_pretrained_model_pth base_llm llama7b
python run_gofa.py --override ./configs/instruct_arxiv_config.yaml load_dir mistral_pretrained_model_pth base_llm mistral7b

Please change the load_dir to either the corresponding downloaded checkpoints or your own pretrained checkpoints.

Similarly, to repeat the experiments of GOFA on zero-shot learning with pubmed link instruction tuning, run:

python run_gofa.py --override ./configs/instruct_pubmed_config.yaml load_dir mistral_pretrained_model_pth base_llm mistral7b

Supervised fine-tuning.

To repeat the experiments of GOFA on supervised learning, run:

python run_gofa.py --override ./configs/supervised_config.yaml load_dir pretrained_model_pth base_llm model_type

Similar as the above, modify the load_dir and base_llm for validating corresponding model.

Evaluation and inference

To explore the generation result of GOFA, you can also directly run the inference mode with:

python run_gofa.py --override ./configs/inference_config.yaml load_dir finetuned_model_pth base_llm llama7b

Please modify the config file for selecting corresponding dataset. Note that for both zero-shot and supervised experiment, the trained model should be evaluated under inference model to obtain the correct evaluation result.

We also provide checkpoint of mistral version of GOFA on arxiv instruction-tuning in here with file name nb_instruct.pth. You can use this checkpoint to directly reproduce the results in the paper.

Citation

@article{kong2024gofa,
  title={GOFA: A Generative One-For-All Model for Joint Graph Language Modeling},
  author={Kong, Lecheng and Feng, Jiarui and Liu, Hao and Huang, Chengsong and Huang, Jiaxin and Chen, Yixin and Zhang, Muhan},
  journal={arXiv preprint arXiv:2407.09709},
  year={2024}
}

gofa's People

Contributors

jiaruifeng avatar lechengkong avatar haoliu-cola avatar

Stargazers

 avatar JunZhong avatar Xixi Wu avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.