replit/replit-code-v1_5-3b
316457
1---2license: apache-2.03datasets:4 - bigcode/the-stack-dedup5 - togethercomputer/RedPajama-Data-1T6tags:7 - code8 - Composer9 - MosaicML10 - llm-foundry11 - StreamingDatasets12language:13 - code14---15 16# Replit Code V-1.5 3B17 18Developed by: Replit, Inc.19 20## Model Description21 22Replit Code v1.5 is a 3.3B parameter Causal Language Model focused on **Code Completion**.23 24The model is trained in `bfloat16` on 1T tokens of code (~200B tokens over 5 epochs, including linear cooldown) for 30 programming languages from a subset of permissively licensed code from Bigcode's [Stack Dedup dataset](https://huggingface.co/datasets/bigcode/the-stack-dedup), a filtered natural language sample from Markdown and reStructuredText subsets from the same Stack Dedup dataset, and a dev-oriented sample from [RedPajama's StackExchange dataset](https://github.com/togethercomputer/RedPajama-Data) sourced from the [Stack Exchange Data Dump by Stack Exchange Inc](https://archive.org/details/stackexchange).25 26The 30 programming languages are: 27```28Java, JavaScript, C, PHP, Python, C++, C#, TypeScript, Go, CSS, HTML, Rust, Ruby, Swift, Scala, Shell, Lua, Perl, Haskell, JSX, Julia, Common Lisp, OCaml, Solidity, Scheme, R, Zig, SQL, Racket, D29```30 31The context size of the model is 4096 tokens. We use the GPTNeoX tokenizer with a custom trained and optimized vocabulary of 32768 tokens. This custom vocabulary led to single-digit % points on compression while maintaining or improving coverage on our training corpus.32 33The model has been trained on the [MosaicML](https://www.mosaicml.com/) platform on 128 H100-80GB GPUs using their [LLM Foundry](https://github.com/mosaicml/llm-foundry) and [Composer](https://github.com/mosaicml/composer) training library built on top of PyTorch.34 35## Dependencies36You will need to install the latest versions of the following dependencies:37```38einops39torch40transformers41```42 43## How to Use44 45### Generation46 47You can generate code using the `transformers` library as follows:48 49```python50from transformers import AutoModelForCausalLM, AutoTokenizer51 52tokenizer = AutoTokenizer.from_pretrained('replit/replit-code-v1_5-3b', trust_remote_code=True)53model = AutoModelForCausalLM.from_pretrained('replit/replit-code-v1_5-3b', trust_remote_code=True)54 55x = tokenizer.encode('def fibonacci(n): ', return_tensors='pt')56y = model.generate(x, max_length=100, do_sample=True, top_p=0.95, top_k=4, temperature=0.2, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)57 58# decoding59generated_code = tokenizer.decode(y[0], skip_special_tokens=True, clean_up_tokenization_spaces=False)60print(generated_code)61```62 63Experiment with different decoding methods and parameters to get the best results for your use case.64 65### Using Triton Implementation of Flash Attention66 67```python68import torch69from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig70 71config = AutoConfig.from_pretrained(72 "replit/replit-code-v1_5-3b",73 trust_remote_code=True74)75config.attn_config['attn_impl'] = 'triton'76 77# load model78tokenizer = AutoTokenizer.from_pretrained('replit/replit-code-v1_5-3b', trust_remote_code=True)79model = AutoModelForCausalLM.from_pretrained('replit/replit-code-v1_5-3b', config=config, trust_remote_code=True)80model.to(device='cuda:0', dtype=torch.bfloat16)81 82# forward pass83x = tokenizer.encode('def fibonacci(n): ', return_tensors='pt').to(device='cuda:0')84x = x.to(device='cuda:0')85y = model.generate(x, max_length=100, do_sample=True, top_p=0.95, top_k=4, temperature=0.2, num_return_sequences=1, eos_token_id=tokenizer.eos_token_id)86 87 88# decoding89generated_code = tokenizer.decode(y[0], skip_special_tokens=True, clean_up_tokenization_spaces=False)90print(generated_code)91```92 93Experiment with different decoding methods and parameters to get the best results for your use case. We recommend experimenting with `temperature` and `reptition_penalty`for optimal performance on your use case!94 95## Intended Use96 97Replit intends this model be used by anyone as a foundational model for application-specific fine-tuning without strict limitations on commercial use.98 99The model is trained specifically for code completion tasks.100 101 102## Limitations103The pre-training dataset may have contained offensive or inappropriate content even after applying data cleansing and toxicity and profanity filters, and such content may be reflected in model generated text. We recommend that users exercise reasonable caution when using in production systems. Do not use for any applications that may cause harm or distress to individuals or groups.104 