transformers safetensors license:apache-2.0 endpoints_compatible region:us
---
license: apache-2.0
---

# Model Card for Docstring mistral

<!-- Provide a quick summary of what the model is/does. -->

Fine tuned mistral that takes queries of code as input to a formal specification of the code in docstring format.

## Model examples:




- **Developed by:** Axel Fridman

- **Finetuned from model:** https://huggingface.co/mistralai/Mistral-7B-v0.1

### Model Sources

<!-- Provide the basic links for the model. -->

- **Repository:** https://github.com/AxelFridman/finetuning-mistral

## How to Get Started with the Model

Use any device with CUDA. In google colab choose T4 for free GPU

Install dependencies

```python
# You only need to run this once per machine
!pip install -q -U bitsandbytes
!pip install -q -U git+https://github.com/huggingface/transformers.git
!pip install -q -U git+https://github.com/huggingface/peft.git
!pip install -q -U git+https://github.com/huggingface/accelerate.git
!pip install -q -U datasets scipy ipywidgets matplotlib
!pip3 install torch torchvision
import torch
```

Load base model Mistral-7B before loading finetuned parameters
```python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

base_model_id = "mistralai/Mistral-7B-v0.1"
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

base_model = AutoModelForCausalLM.from_pretrained(
    base_model_id,  # Mistral, same as before
    quantization_config=bnb_config,  # Same quantization config as before
    device_map="auto",
    trust_remote_code=True,
)

eval_tokenizer = AutoTokenizer.from_pretrained(base_model_id, add_bos_token=True, trust_remote_code=True)
```

Download ft parameters from Hugging Face and create model combining with base model 
```python
from peft import PeftModel

ft_model = PeftModel.from_pretrained(base_model,"axel-datos/mistral_finetuned")
```

Tokenize the input and use model, adjust parameters as wished. 
```python
eval_prompt = "provide function that encrypts every element of a list and returns a new list of pairs (non encrypted element, encrypted element)"
model_input = eval_tokenizer(eval_prompt, return_tensors="pt").to("cuda")

ft_model.eval()
with torch.no_grad():
    print(eval_tokenizer.decode(ft_model.generate(**model_input, max_new_tokens=200, repetition_penalty=1.15)[0], skip_special_tokens=True))
```

### Training Data

Inside repository there is a file called evaluationWithQueries.json

