Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Model parallel transformers in JAX and Haiku

License

NotificationsYou must be signed in to change notification settings

kingoflolz/mesh-transformer-jax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  1. Mesh Transformer JAX
    1. Updates
  2. Pretrained Models
    1. GPT-J-6B
      1. Links
      2. Acknowledgments
      3. License
      4. Model Details
      5. Zero-Shot Evaluations
  3. Architecture and Usage
    1. Fine-tuning
    2. JAX Dependency
  4. TODO

Mesh Transformer JAX

A haiku library using thexmap/pjit operators in JAX for model parallelism of transformers.

The parallelism scheme is similar to theoriginal Megatron-LM, which is efficienton TPUs due to the high speed 2d mesh network. There is also an experimental model version which implementsZeRo stylesharding.

This library is designed for scalability up to approximately 40B parameters on TPUv3s, beyond which differentparallelism strategies should be used. See other implementations such asGPT-NeoX orDeepSpeed for that.

One future direction for research is integrating this codebase withswarm-jax, to achieve further scalability with pipeline parallelism.

Updates

12-07-21: Addedguide to fine tuning

Pretrained Models

GPT-J-6B

A 6 billion parameter, autoregressive text generation model trained onThe Pile.

Links

Download slim weights (bf16 weights only, for inference, 9GB)

Download full weights (including optimizer params, 61GB)

Partially trained checkpoints

Colab demo

Web demo

Aran's blog post

Acknowledgments

This project would not have been possible without compute generously provided by theTPU Research Cloud with assistance fromEleutherAI.

Thanks to the Cloud TPU team at Google for providing early access to the Cloud TPU VM alpha(now publicly available!)

Thanks to everyone who have helped out one way or another (listed alphabetically):

  • Aran Komatsuzaki for advice with experiment design and writing the blog posts.
  • James Bradbury for valuable assistance with debugging JAX issues.
  • Janko Prester for creating the web demo frontend.
  • Laurence Golding for adding some features to the web demo.
  • Leo Gao for running zero shot evaluations for the baseline models for the table.

License

The weights of GPT-J-6B are licensed under version 2.0 of the Apache License.

Model Details

HyperparameterValue
n_parameters6,053,381,344
n_layers28*
d_model4,096
d_ff16,384
n_heads16
d_head256
n_ctx2,048
n_vocab50,257 (same tokenizer as GPT-2/3)
position encodingRotary position encodings (RoPE)
RoPE dimensions64

* each layer consists of one feedforward block and one self attention block

The model consists of 28 layers with a model dimension of 4096, and a feedforward dimension of 16384. The modeldimension is split into 16 heads, each with a dimension of 256. Rotary position encodings (RoPE) was applied to 64dimensions of each head. The model is trained with a tokenization vocabulary of 50257, using the same set of BPEs asGPT-2/GPT-3.

Zero-Shot Evaluations

Models roughly sorted by performance, or by FLOPs if not available.

ModelWeightsTraining FLOPsLAMBADA PPL ↓LAMBADA Acc ↑Winogrande ↑Hellaswag ↑PIQA ↑Dataset Size (GB)
Chance0~a lot~0%50%25%25%0
GPT-3-Ada‡-----9.9551.6%52.9%43.4%70.5%-----
GPT-2-1.5B-----10.6351.21%59.4%50.9%70.8%40
GPTNeo-1.3B‡3.0e217.5057.2%55.0%48.9%71.1%825
Megatron-2.5B*2.4e21-----61.7%---------------174
GPTNeo-2.7B‡6.8e215.6362.2%56.5%55.8%73.0%825
GPT-3-1.3B*‡2.4e215.4463.6%58.7%54.7%75.1%~800
GPT-3-Babbage‡-----5.5862.4%59.0%54.5%75.5%-----
Megatron-8.3B*7.8e21-----66.5%---------------174
GPT-3-2.7B*‡4.8e214.6067.1%62.3%62.8%75.6%~800
Megatron-11B†1.0e22-------------------------161
GPT-J-6B1.5e223.9969.7%65.3%66.1%76.5%825
GPT-3-6.7B*‡1.2e224.0070.3%64.5%67.4%78.0%~800
GPT-3-Curie‡-----4.0069.3%65.6%68.5%77.9%-----
GPT-3-13B*‡2.3e223.5672.5%67.9%70.9%78.5%~800
GPT-3-175B*‡3.1e233.0076.2%70.2%78.9%81.0%~800
GPT-3-Davinci‡-----3.075%72%78%80%-----
Gopher 230B*6.31E+23-----74.50%70.10%79.20%81.80%1344
MT-NLG 530B*‡----------76.6%73.0%80.2%82.0%-----

* represents evaluation numbers reported by their respective authors, all other numbers are provided byrunning thelm-evaluation-harness either with the releasedweights or with API access. Due to subtle implementation differences as well as different zero shot task framing, thesemight not be directly comparable. Seethis blog post for moredetails.

The Megatron-11B model provides no comparable metrics, and several implementations using the released weights do notreproduce the generation quality and evaluations. (see123)Thus, evaluation was not attempted.

These models have been trained with data which contains possible test set contamination. The OpenAI GPT-3 modelsfailed to deduplicate training data for certain test sets, while the GPT-Neo models as well as this one istrained on The Pile, which has not been deduplicated against any test sets.

Architecture and Usage

Most scripts in this repository are designed to be run on TPUs, which under theTPU-VM architecture are virtual machineswhich can run arbitrary code. Most scripts are designed to spin up a TPU, SSH into it to set up the dependenciesand copy code over from the local directory, and then start aRay workerwhich can accept RPC calls.

The TPUVMs handles running model training steps and evaluation, checkpoint save and loading, while the driver pythonprogram handles data loading and general orchestration (such as when to save checkpoints etc).

This means that most scripts (train.py,eval_harness.py etc) expect to be running on a GCE virtual machine in thesame region as the TPUs, to minimize RPC latency and data transfer cost. Other scripts(usually ones which don't take a--tpu argument, such asdevice_sample.py,device_serve.py ordevice_train.py)expect to be run directly on a TPUVM. The device_* scriptsonly work on a v3-8 and not on larger pods.

Furthermore, there is an example (resharding_example.py) of how to convert the provided checkpoints (which have 8shards in the case of GPT-J-6B) down to a smaller number, such as for when running on GPU(s).

Fine-tuning

To fine-tune the model, rundevice_train.py on a TPU VM. Using a TPU v3-8, you can fine-tune at a rate of ~5000tokens/second, which should be sufficient for small-to-medium-size datasets.

Please read thestep by step guide for thorough fine-tuning instructions.

JAX Dependency

Note this library has some specific requirements for JAX version. Specifically, to use the v1 models (includingGPT-J 6B),jax==0.2.12 is required. This in turn depends onjaxlib==0.1.68.If this is not done, you will getcryptic xmap errors

However, to use the v2 model code (no publicly released weights), the newest JAX version can be used.

Citation

To cite this repository:

@misc{mesh-transformer-jax,  author = {Wang, Ben},  title = {{Mesh-Transformer-JAX: Model-Parallel Implementation of Transformer Language Model with JAX}},  howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},  year = 2021,  month = May}

To cite the weights of GPT-J-6B:

@misc{gpt-j,  author = {Wang, Ben and Komatsuzaki, Aran},  title = {{GPT-J-6B: A 6 Billion Parameter Autoregressive Language Model}},  howpublished = {\url{https://github.com/kingoflolz/mesh-transformer-jax}},  year = 2021,  month = May}

If you use this repository or any of the pretrained weights to do something cool, we would love to hear about it.Feel free to open a github issue or reach out over email (in profile).

About

Model parallel transformers in JAX and Haiku

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp