OpenCoder is an open and reproducible code LLM family for coding which includes 1.5B and 8B models, supporting multiple languages

8b

3 2 days ago

Readme

NeuralNet is a pioneering AI solutions provider that empowers businesses to harness the power of artificial intelligence

🌟 opencoder llama.cpp quantization by NeuralNet 🧠🤖

All the models have been quantized following the instructions provided by llama.cpp. This is:

# obtain the official LLaMA model weights and place them in ./models
ls ./models
llama-2-7b tokenizer_checklist.chk tokenizer.model
# [Optional] for models using BPE tokenizers
ls ./models
<folder containing weights and tokenizer json> vocab.json
# [Optional] for PyTorch .bin models like Mistral-7B
ls ./models
<folder containing weights and tokenizer json>

# install Python dependencies
python3 -m pip install -r requirements.txt

# convert the model to ggml FP16 format
python3 convert-hf-to-gguf.py models/mymodel/

# quantize the model to 4-bits (using Q4_K_M method)
./llama-quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M

# update the gguf filetype to current version if older version is now unsupported
./llama-quantize ./models/mymodel/ggml-model-Q4_K_M.gguf ./models/mymodel/ggml-model-Q4_K_M-v2.gguf COPY

Original model: https://huggingface.co/infly/OpenCoder-8B-Instruct

Prompt format 📝

Original Format:

<|im_start|>system
System message goes here<|im_end|>
<|im_start|>user
User message goes here<|im_end|>
<|im_start|>assistant
Assistant response goes here<|im_end|>

Ollama Template:

{{- if .Suffix }}<|im_start|><|fim_prefix|>{{ .Prompt }}<|fim_suffix|>{{ .Suffix }}<|fim_middle|>
{{- else if .Messages }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 -}}
<|im_start|>{{ .Role }}
{{ .Content }}
{{- if not $last }}<|im_end|>
{{ else if (ne .Role "assistant") }}<|im_end|>
<|im_start|>assistant
{{ end }}
{{- end }}
{{- end }}

Summary models 📋

Filename Quant type File Size Description
OpenCoder-8B-Instruct-q4_K_M.gguf q4_1 4.92GB Good quality, recommended.

Usage with Ollama 🦙

Direct from Ollama

ollama run NeuralNet/opencoder

Create your own template

Create a text plain file named Modelfile (no extension needed)

FROM NeuralNet/opencoder

# set system
SYSTEM "You are an AI assistant expert in code generation created by NeuralNet, a company specialized in AI solutions. Your answers are clear and concise."

# sets the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.5

# sets the context window size to 4096, this controls how many tokens the LLM can use as context to generate the next token
PARAMETER num_ctx 8192

# set generation
PARAMETER num_predict 2048

# Stop parameters
PARAMETER stop ### System:
PARAMETER stop ### User:
PARAMETER stop ### Assistant:

Then, after previously install ollama, just run:

ollama create opencoder -f opencoder

Download Models Using huggingface-cli 🤗

Installation of huggingface_hub[cli]

Ensure you have the necessary CLI tool installed by running:

pip install -U "huggingface_hub[cli]"

Downloading Specific Model Files

To download a specific model file, use the following command:

huggingface-cli download NeuralNet-Hub/OpenCoder-8B-Instruct-GGUF --include "opencoder-8b-Q4_K_M.gguf" --local-dir ./

This command downloads the specified model file and places it in the current directory (./).

Downloading Large Models Split into Multiple Files

For models exceeding 50GB, which are typically split into multiple files for easier download and management:

huggingface-cli download NeuralNet-Hub/OpenCoder-8B-Instruct-GGUF --include "opencoder-8b-Q8_0.gguf/*" --local-dir opencoder-8b-Q8_0

This command downloads all files in the specified directory and places them into the chosen local folder (opencoder-8b-Q8_0). You can choose to download everything in place or specify a new location for the downloaded files.

Which File Should I Choose? 📈

A comprehensive analysis with performance charts is provided by Artefact2 here.

Assessing System Capabilities

  1. Determine Your Model Size: Start by checking the amount of RAM and VRAM available in your system. This will help you decide the largest possible model you can run.
  2. Optimizing for Speed:
    • GPU Utilization: To run your model as quickly as possible, aim to fit the entire model into your GPU’s VRAM. Pick a version that’s 1-2GB smaller than the total VRAM.
  3. Maximizing Quality:
    • Combined Memory: For the highest possible quality, sum your system RAM and GPU’s VRAM. Then choose a model that’s 1-2GB smaller than this combined total.

Deciding Between ‘I-Quant’ and ‘K-Quant’

  1. Simplicity:
    • K-Quant: If you prefer a straightforward approach, select a K-quant model. These are labeled as ‘QX_K_X’, such as Q5_K_M.
  2. Advanced Configuration:
    • Feature Chart: For a more nuanced choice, refer to the llama.cpp feature matrix.
    • I-Quant Models: Best suited for configurations below Q4 and for systems running cuBLAS (Nvidia) or rocBLAS (AMD). These are labeled ‘IQX_X’, such as IQ3_M, and offer better performance for their size.
    • Compatibility Considerations:
      • I-Quant Models: While usable on CPU and Apple Metal, they perform slower compared to their K-quant counterparts. The choice between speed and performance becomes a significant tradeoff.
      • AMD Cards: Verify if you are using the rocBLAS build or the Vulkan build. I-quants are not compatible with Vulkan.
      • Current Support: At the time of writing, LM Studio offers a preview with ROCm support, and other inference engines provide specific ROCm builds.

By following these guidelines, you can make an informed decision on which file best suits your system and performance needs.

Contact us 🌐

NeuralNet is a pioneering AI solutions provider that empowers businesses to harness the power of artificial intelligence

Website: https://neuralnet.solutions

Email: info[at]neuralnet.solutions