Instructions to use refactai/Refact-1_6-base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use refactai/Refact-1_6-base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="refactai/Refact-1_6-base", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("refactai/Refact-1_6-base", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use refactai/Refact-1_6-base with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "refactai/Refact-1_6-base" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "refactai/Refact-1_6-base", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/refactai/Refact-1_6-base
- SGLang
How to use refactai/Refact-1_6-base with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "refactai/Refact-1_6-base" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "refactai/Refact-1_6-base", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "refactai/Refact-1_6-base" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "refactai/Refact-1_6-base", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use refactai/Refact-1_6-base with Docker Model Runner:
docker model run hf.co/refactai/Refact-1_6-base
|
Download README.md from refactai/Refact-1_6-base: direct link, hf CLI and curl.
- Browser
- Download file 3.63 kB
-
https://huggingface.co/refactai/Refact-1_6-base/resolve/refs%2Fpr%2F13/README.md
- Command line
-
hf download hf://refactai/Refact-1_6-base@refs/pr/13/README.md
-
curl -L -o README.md https://huggingface.co/refactai/Refact-1_6-base/resolve/refs%2Fpr%2F13/README.md
3.63 kB
| pipeline_tag: text-generation | |
| inference: true | |
| widget: | |
| - text: 'def print_hello_world():' | |
| example_title: Hello world | |
| group: Python | |
| license: bigscience-openrail-m | |
| datasets: | |
| - books | |
| - arxiv | |
| - c4 | |
| - falcon-refinedweb | |
| - wiki | |
| - github-issues | |
| - stack_markdown | |
| library_name: transformers | |
| tags: | |
| - code | |
| language: | |
| - en | |
|  | |
| # Refact-1.6B-base | |
| Finally, the model we started training with our [blog post](https://refact.ai/blog/2023/applying-recent-innovations-to-train-model/) is ready 🎉 | |
| The model might contain some problems, especially with the FIM format | |
| # It Works As a Chat | |
| The primary application of this model is code completion (infill) in multiple programming languages. | |
| But it works as a chat quite well. | |
| # Example | |
| Fill-in-the-middle uses special tokens to identify the prefix/middle/suffix part of the input and output: | |
| ```python | |
| # pip install -q transformers | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| checkpoint = "smallcloudai/Refact-1_6B-fim" | |
| device = "cuda" # for GPU usage or "cpu" for CPU usage | |
| tokenizer = AutoTokenizer.from_pretrained(checkpoint) | |
| model = AutoModelForCausalLM.from_pretrained(checkpoint, trust_remote_code=True).to(device) | |
| prompt = '<fim_prefix>def print_hello_world():\n """<fim_suffix>\n print("Hello world!")<fim_middle>' | |
| inputs = tokenizer.encode(prompt, return_tensors="pt").to(device) | |
| outputs = model.generate(inputs, max_length=100, temperature=0.2) | |
| print("-"*80) | |
| print(tokenizer.decode(outputs[0])) | |
| ``` | |
| # Chat Format | |
| The same model works as chat (experimental). | |
| ```python | |
| prompt_template = "<empty_output>SYSTEM {system}\n" \ | |
| "<empty_output>USER {query}\n" \ | |
| "<empty_output>ASSISTANT" | |
| prompt = prompt_template.format(system="You are a programming assistant", | |
| query="How do I sort a list in Python?") | |
| ``` | |
| # Architecture | |
| As described in more detail in the blog post, we used: | |
| - [ALiBi](https://arxiv.org/abs/2108.12409) based attention | |
| - [LayerNorm](https://arxiv.org/abs/1607.06450v1) instead of [RMSNorm](https://arxiv.org/pdf/1910.07467.pdf) | |
| - [Multi Query Attention](https://arxiv.org/abs/1911.02150) | |
| We also used LiON, flash attention, early dropout. It's not that innovative that you can't run it, in fact you can -- see an example below. | |
| # Training | |
| For the base model, we used our own dataset that contains code with permissive licenses only, and open text datasets. | |
| Filtering is the key to success of this model: | |
| - We only used text in English | |
| - Only topics related to computer science | |
| - Applied heavy deduplication | |
| The text to code proportion was 50:50, model trained for 1.2T tokens. | |
| We don't release the base model, because its Fill-in-the-Middle (FIM) capability likes to repeat itself too much, so | |
| its practical use is limited. But if you still want it, write us a message on Discord. | |
| # Limitations and Bias | |
| The Refact-1.6B model was trained on text in English. But it has seen a lot more languages in | |
| code comments. Its performance on non-English languages is lower, for sure. | |
| # Model Stats | |
| - **Architecture:** LLAMA-like model with multi-query attention | |
| - **Objectives** Fill-in-the-Middle, Chat | |
| - **Tokens context:** 4096 | |
| - **Pretraining tokens:** 1.2T | |
| - **Finetuning tokens:** 40B | |
| - **Precision:** bfloat16 | |
| - **GPUs** 64 NVidia A5000 | |
| - **Training time** 28 days | |
| # License | |
| The model is licensed under the BigScience OpenRAIL-M v1 license agreement | |
| # Citation | |
| If you are using this model, please give a link to this page. |