--- license: cc-by-sa-4.0 datasets: - bigcode/the-stack-dedup - sadiqj/opam-source tags: - code language: - code programming_language: - OCaml --- # camlcoder ## Model Description `camlcoder` is a 2.7B Causal Language Model focused on **Code Completion** for OCaml. It is a fine-tuned version of [replit-code-v1-3b](https://www.huggingface.co/replit/replit-code-v1-3b). The model has been trained on a subset of the [Stack Dedup v1.2 dataset](https://arxiv.org/abs/2211.15533) and the most recent version of [all packages in Opam that compile on OCaml 5.0](https://www.huggingface.com/sadiqj/opam-source). ## License The model checkpoint and vocabulary file are licensed under the Creative Commons license (CC BY-SA-4.0). ## Contact For questions and comments about the model, please post in the community section. ## How to Use First of all, you need to install the latest versions of the following dependencies: ``` einops sentencepiece safetensors torch transformers ``` You can then use the model as follows: ```python from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig, StoppingCriteria, StoppingCriteriaList import torch max_length = 256 tokenizer = AutoTokenizer.from_pretrained('sadiqj/camlcoder', trust_remote_code=True, max_length=max_length, use_safetensors=True) model = AutoModelForCausalLM.from_pretrained('sadiqj/camlcoder', trust_remote_code=True, use_safetensors=True).to(device='cuda:0', dtype=torch.bfloat16) input_ids = tokenizer.encode('(* Return the middle element of the list *)\nlet get_middle l =', return_tensors='pt').to(device='cuda:0') newline_id = tokenizer.encode('\n\n', return_tensors='pt')[0][0].item() class StopOnNewlines(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool: return newline_id in input_ids output = model.generate(input_ids, max_length=max_length, stopping_criteria=StoppingCriteriaList([StopOnNewlines()]), use_cache=True) print(tokenizer.decode(output[0], skip_special_tokens=True)) ```