|
--- |
|
license: apache-2.0 |
|
pipeline_tag: text-generation |
|
--- |
|
# π₯· Safurai-Csharp-34B |
|
|
|
π [Article](https://www.safurai.com/blog/introducing-safurai-csharp) |
|
|
|
π [Paper](https://www.safurai.com/) |
|
|
|
<center><img src="https://i.imgur.com/REPqbYM.png" width="300"></center> |
|
|
|
This is a [`codellama/CodeLlama-34b-hf`](https://huggingface.co/codellama/CodeLlama-34b-hf) model fine-tuned using QLoRA (4-bit precision) on 13B tokens of csharp evolved Q&A |
|
|
|
We obtained <b>state-of-the-art performance</b> on the MultiPL-E code LLM benchmark for csharp, reaching 56% at pass@1 with n=5. |
|
|
|
## π» Quantization |
|
|
|
These are GGUF quantized versions of Safurai-Csharp-34B, it has been made by using the amazing [`llama.cpp`](https://github.com/ggerganov/llama.cpp) library. |
|
|
|
## π§ Training |
|
|
|
It was trained on 2 x NVIDIA A100 PCIe 80GB in 7h 40m with the following configuration file: |
|
|
|
```yaml |
|
base_model: codellama/CodeLlama-34b-hf |
|
base_model_config: codellama/CodeLlama-34b-hf |
|
model_type: LlamaForCausalLM |
|
tokenizer_type: CodeLlamaTokenizer |
|
is_llama_derived_model: true |
|
hub_model_id: "Safurai/Evol-csharp-v1" |
|
|
|
load_in_8bit: false |
|
load_in_4bit: true |
|
strict: false |
|
|
|
datasets: |
|
- path: Safurai/EvolInstruct-csharp-16k-13B-Alpaca |
|
type: alpaca |
|
dataset_prepared_path: last_run_prepared |
|
val_set_size: 0.01 |
|
output_dir: ./qlora-out |
|
|
|
sequence_len: 4096 |
|
sample_packing: true |
|
pad_to_sequence_len: true |
|
|
|
adapter: lora |
|
lora_model_dir: |
|
lora_r: 32 |
|
lora_alpha: 16 |
|
lora_dropout: 0.05 |
|
lora_target_linear: true |
|
lora_fan_in_fan_out: |
|
|
|
wandb_project: codellama-csharp |
|
wandb_entity: |
|
wandb_watch: |
|
wandb_run_id: |
|
wandb_log_model: |
|
|
|
gradient_accumulation_steps: 4 |
|
micro_batch_size: 2 |
|
num_epochs: 3 |
|
optimizer: adamw_bnb_8bit |
|
lr_scheduler: cosine |
|
learning_rate: 0.0003 |
|
|
|
train_on_inputs: false |
|
group_by_length: false |
|
bf16: true |
|
fp16: false |
|
tf32: false |
|
|
|
gradient_checkpointing: true |
|
early_stopping_patience: |
|
resume_from_checkpoint: |
|
local_rank: |
|
logging_steps: 1 |
|
xformers_attention: |
|
flash_attention: true |
|
|
|
warmup_steps: 40 |
|
eval_steps: 40 |
|
save_steps: |
|
debug: |
|
deepspeed: |
|
weight_decay: 0.0 |
|
fsdp: |
|
fsdp_config: |
|
special_tokens: |
|
bos_token: "<s>" |
|
eos_token: "</s>" |
|
unk_token: "<unk>" |
|
``` |
|
|
|
## π Training loss curve: |
|
|
|
<img src="https://i.imgur.com/rp1htuf.png" width="500"> |
|
|
|
## π Dataset composition: |
|
|
|
<img src="https://i.imgur.com/kTNXgGX.png" width="500"> |
|
|
|
## π» Usage for GGUF |
|
|
|
``` python |
|
# disclaimer: you have to use the llama.gguf library to run this code |
|
|
|
import os |
|
|
|
model_list = [file for file in os.listdir(MODEL_NAME) if GGML_VERSION in file] |
|
|
|
prompt = input("Enter your prompt: ") |
|
chosen_method = input("Please specify the quantization method to run the model (options: " + ", ".join(model_list) + "): ") |
|
|
|
# Verify the chosen method is in the list |
|
if chosen_method not in model_list: |
|
print("Invalid method chosen!") |
|
else: |
|
qtype = f"{MODEL_NAME}/{MODEL_NAME.lower()}.{GGML_VERSION}.{method}.bin" |
|
!./llama.cpp/main -m {qtype} -n 128 --color -ngl 35 -p "{prompt}" |
|
``` |
|
|
|
[<img src="https://raw.githubusercontent.com/OpenAccess-AI-Collective/axolotl/main/image/axolotl-badge-web.png" alt="Built with Axolotl" width="200" height="32"/>](https://github.com/OpenAccess-AI-Collective/axolotl) |